lotto/src/gfn/marc/Zug.java

133 lines
3.1 KiB
Java

package gfn.marc;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Zug {
private static Frame f;
private static Spielfeld spielfeld;
static Spiel spiel;
private static int zugNummer = 0;
private static boolean zugLaeuft;
private static CustomMouseListener[] cmls = new CustomMouseListener[49];
public Zug(Spiel spiel) {
Zug.spiel = spiel;
Zug.spielfeld = Lotto.getSpielfeld();
Zug.f = Lotto.getF();
createMouseListeners();
}
// Zuganzahl hochzählen und Titelleiste setzen
public static void macheZug() {
if (zugNummer == 9) {
Zug.zugNummer = 0;
}
Zug.zugNummer++;
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(cmls[i]);
}
}
// Auf setzen eines Feldes warten
while (Zug.isZugLaeuft()) {
try {
Thread.sleep(200);
} catch (InterruptedException ie) {
break;
}
}
// MouseListener von allen Feldern entfernen
for (int i = 0; i < spielfeld.getFelder().length; i++) {
spielfeld.getFelder()[i].getLabel().removeMouseListener(cmls[i]);
}
}
public static void createMouseListeners() {
for (int i = 0; i < spielfeld.getFelder().length; i++) {
cmls[i] = new CustomMouseListener(f, spielfeld.getFelder()[i]);
}
}
public static int getZugNummer() {
return zugNummer;
}
public static boolean isZugLaeuft() {
return zugLaeuft;
}
public static void setZugLaeuft(boolean zugLaeuft) {
Zug.zugLaeuft = zugLaeuft;
}
public static void setF(Frame f) {
Zug.f = f;
}
public static void setSpielfeld(Spielfeld spielfeld) {
Zug.spielfeld = spielfeld;
}
public static void setZugNummer(int zugNummer) {
Zug.zugNummer = zugNummer;
}
public static void setCmls(CustomMouseListener[] cmls) {
Zug.cmls = cmls;
}
}
class CustomMouseListener implements MouseListener {
private Frame f;
private Feld feld;
public CustomMouseListener(Frame f, Feld feld) {
this.f = f;
this.feld = feld;
}
// Auf Setzen des Feldes prüfen und ggf. Form zeichnen lassen
@Override
public void mouseClicked(MouseEvent mouseEvent) {
this.feld.setZeichen(new Kreuz());
f.repaint();
Zug.spiel.setNumberToLottoschein(this.feld.getFeldId());
Zug.setZugLaeuft(false);
}
// notwendige Implementierungen ohne weitere Funktion
@Override
public void mousePressed(MouseEvent mouseEvent) {
}
@Override
public void mouseReleased(MouseEvent mouseEvent) {
}
@Override
public void mouseEntered(MouseEvent mouseEvent) {
}
@Override
public void mouseExited(MouseEvent mouseEvent) {
}
}