Hallo,
ich habe mir ein programm gebaut das eine bestimmte Zeit laufen soll.
Die relevante Klasse sieht so aus:
Welche Objekte da erzeugt und deren Methoden benutzt werden, sind unwichtig.
Wichtig ist dass es eine boolean variable "stillTimeLeft" gibt, die angibt dass, naja, es halt noch Zeit gibt zum weiterspielen.
Zu bestimmten Zeitpunkten innerhalb von Endlosschleifen wird der Wert der Variable geprüft und falls sie false ist, wird Alles beendet.
Aktuell läuft das Ganze grob gesagt so dass mittels eines Timers immer mal wieder die Zeit geguckt wird und wenn mehr
als 52 Minuten rum sind, wird besagter Wert auf false gesetzt und damit Alles kontrolliert beendet.
Nun wil ich aber, ausser der Zeitsteuerung, es auch manuell beenden können über jene bool variable.
Konkret würde ich gerne in die Klasse irgendwie einen EventListener einbinden der, falls ich bspw. die Taste K drücke, die variable auf false setzt.
Was dann automatisch die nötigen Sache in die Wege leitet.
Aber wie macht man sowas?
Hatte mit EventListenern und Co. bisher in java noch gar nix zu tun, gibts da ein gutes 0815 Minimalbeispiel, das das gut erklärt?
ich habe mir ein programm gebaut das eine bestimmte Zeit laufen soll.
Die relevante Klasse sieht so aus:
Java:
package a;
public class MaingameManager {
ColorManager coma;
EinsatzAnsicht eian;
MoneyManager moma;
DrehManager drma;
BalanceManager bama;
long startTime = 0;
boolean stillTimeLeft = true;
int leerDrehen;
StreakResult streak = null;
Einsatz einsatz;
String colorToBet;
public MaingameManager(CoordinateList coli, long startTime, int leerDrehen) {
this.startTime = startTime;
coma = new ColorManager(coli);
eian = new EinsatzAnsicht(coli);
this.leerDrehen = leerDrehen;
moma = new MoneyManager(leerDrehen);
drma = new DrehManager(coli);
bama = new BalanceManager(coli);
//System.out.println("Right before Gameplay starts!");
Gameplay();
}
public void Gameplay() {
Preparations();
while (stillTimeLeft) {
OneRound();
System.out.println();
System.out.println();
System.out.println();
try {
Thread.sleep(5000);
} catch (Exception e) {
}
}
return;
}
public void Preparations() {
einsatz = moma.nextEinsatz(new StreakResult(0, "U"));
colorToBet = "R";
}
public void OneRound() {
// Einsätze platzieren gemäß Tabelle
eian.placeBetOn(einsatz.getFarbe(), colorToBet, einsatz.getZero(), "Z");
// ****
// eian.clear();
// ****
// drehbutton klicken
drma.dreh();
// tons of stuff
drma.waitTillReady();
// get newest color, update results list and return current streak
streak = coma.evalCurrentRound();
eian.clear();
System.out.println("Current Streak is color="+streak.color+", length="+streak.length+"!");
if(!(stillTimeLeft)) {return;}
if ((streak.length <= leerDrehen) && (timeOver())) {
stillTimeLeft = false;
System.out.println("timeOver!");
return;
}
// give streak to moneyManager
PrepForNextRound();
}
public void PrepForNextRound() {
einsatz = moma.nextEinsatz(streak);
colorToBet = "R";
if (streak.color == "R") {
colorToBet = "S";
}
//UpdateBalance
bama.updateBalance();
}
public boolean timeOver() {
long diff = System.nanoTime() - startTime;
int minutes = (int) (diff / 60000000000.0);
// System.out.println("full minutes passed=" + minutes);
return (minutes >= 2);
}
}
Welche Objekte da erzeugt und deren Methoden benutzt werden, sind unwichtig.
Wichtig ist dass es eine boolean variable "stillTimeLeft" gibt, die angibt dass, naja, es halt noch Zeit gibt zum weiterspielen.
Zu bestimmten Zeitpunkten innerhalb von Endlosschleifen wird der Wert der Variable geprüft und falls sie false ist, wird Alles beendet.
Aktuell läuft das Ganze grob gesagt so dass mittels eines Timers immer mal wieder die Zeit geguckt wird und wenn mehr
als 52 Minuten rum sind, wird besagter Wert auf false gesetzt und damit Alles kontrolliert beendet.
Nun wil ich aber, ausser der Zeitsteuerung, es auch manuell beenden können über jene bool variable.
Konkret würde ich gerne in die Klasse irgendwie einen EventListener einbinden der, falls ich bspw. die Taste K drücke, die variable auf false setzt.
Was dann automatisch die nötigen Sache in die Wege leitet.
Aber wie macht man sowas?
Hatte mit EventListenern und Co. bisher in java noch gar nix zu tun, gibts da ein gutes 0815 Minimalbeispiel, das das gut erklärt?