Klasse Zug nicht statisch

This commit is contained in:
Marc Koch 2020-04-27 22:27:32 +02:00
parent 736a0712db
commit 15f1618fcf
Signed by: marc
GPG Key ID: AC2D4E00990A6767
1 changed files with 21 additions and 54 deletions

View File

@ -2,86 +2,53 @@ package gfn.marc;
import gfn.marc.gui.Fenster; import gfn.marc.gui.Fenster;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Zug { public class Zug {
private static Fenster f = TicTacToe.getF(); private Fenster f = TicTacToe.getF();
private static Spielfeld spielfeld = f.getSpielfeld();
private static int zugNummer = 0; private static int zugNummer = 0;
private static Spieler spieler; private Spieler spieler;
private static boolean zugLaeuft; private static boolean zugLaeuft;
public Zug() {
if (zugNummer == 9) {
Zug.zugNummer = 0;
}
Zug.zugNummer++;
}
public static void setZugNummer(int zugNummer) { public static void setZugNummer(int zugNummer) {
Zug.zugNummer = zugNummer; Zug.zugNummer = zugNummer;
} }
// Zuganzahl hochzählen und Titelleiste setzen // Zuganzahl hochzählen und Titelleiste setzen
public static void macheZug(Spieler spieler) { public void macheZug(Spieler spieler) {
Zug.spieler = spieler; this.spieler = spieler;
if (zugNummer == 9) { this.f.setzeTitel(spieler.getName() + " ist dran!");
Zug.zugNummer = 0; this.setZugLaeuft(true);
}
Zug.zugNummer++;
Zug.f.setzeTitel(spieler.getName() + " ist dran!");
Zug.setZugLaeuft(true);
// Mouselistener auf Felder setzen, die noch nicht gesetzt wurden
for (int i = 0; i < spielfeld.getFelder().length; i++) {
if (!spielfeld.getFelder()[i].isGesetzt()) {
spielfeld.getFelder()[i].getLabel().addMouseListener(new CustomMouseListener(i));
}
}
// Auf setzen eines Feldes warten // Auf setzen eines Feldes warten
while (Zug.isZugLaeuft()) { while (this.isZugLaeuft()) {
try { try {
Thread.sleep(200); Thread.sleep(200);
} catch (InterruptedException ie) { } catch (InterruptedException ie) {
break; break;
} }
} }
// MouseListener von allen Feldern entfernen
for (int i = 0; i < spielfeld.getFelder().length; i++) {
spielfeld.getFelder()[i].getLabel().removeMouseListener(new CustomMouseListener(i));
}
}
// Lokale Klasse für CustomMouseListener
static class CustomMouseListener extends MouseAdapter {
int i;
public CustomMouseListener(int i) {
this.i = i;
}
// Auf Setzen des Feldes prüfen und ggf. Form zeichnen lassen
@Override
public void mouseClicked(MouseEvent mouseEvent) {
spielfeld.getFelder()[i].setZeichen(spieler.getForm());
Zug.setZugLaeuft(false);
}
}
public static void restartZug() {
macheZug(Zug.spieler);
Zug.zugNummer--;
} }
public static int getZugNummer() { public static int getZugNummer() {
return zugNummer; return zugNummer;
} }
public static boolean isZugLaeuft() { public Spieler getSpieler() {
return zugLaeuft; return spieler;
} }
public static void setZugLaeuft(boolean zugLaeuft) { public boolean isZugLaeuft() {
return Zug.zugLaeuft;
}
public void setZugLaeuft(boolean zugLaeuft) {
Zug.zugLaeuft = zugLaeuft; Zug.zugLaeuft = zugLaeuft;
} }