Zug nicht mehr statisch & CustomMouseListeners in Klasse "Feld" verschoben
This commit is contained in:
parent
96a58c7b7e
commit
1ff8b101ee
|
|
@ -1,6 +1,8 @@
|
|||
package gfn.marc;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
public class Feld {
|
||||
private static int feldAnzahl = 0;
|
||||
|
|
@ -39,6 +41,20 @@ public class Feld {
|
|||
((int) (rechteck.getPara3() * 0.8)),
|
||||
((int) (rechteck.getPara4() * 0.8)));
|
||||
|
||||
this.label.addMouseListener(new CustomMouseListener());
|
||||
|
||||
}
|
||||
|
||||
// Lokale Klasse für CustomMouseListener
|
||||
class CustomMouseListener extends MouseAdapter {
|
||||
|
||||
// Auf Setzen des Feldes prüfen und ggf. Form zeichnen lassen
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent mouseEvent) {
|
||||
setZeichen(Spiel.zug.getSpieler().getForm());
|
||||
Spiel.zug.setZugLaeuft(false);
|
||||
getLabel().removeMouseListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void setZeichen(Form form) {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ public class Spiel {
|
|||
private static Spieler spieler2;
|
||||
private Frame f;
|
||||
private Spielfeld spielfeld;
|
||||
public static Zug zug;
|
||||
|
||||
|
||||
Spiel(Frame f, Spielfeld spielfeld) throws InterruptedException {
|
||||
|
|
@ -37,7 +38,7 @@ public class Spiel {
|
|||
}
|
||||
}
|
||||
// Wenn der eingegebene Spielername vorhanden ist
|
||||
if ( eingabe != null && !eingabe.equals("")) {
|
||||
if (eingabe != null && !eingabe.equals("")) {
|
||||
for (Spieler spieler : Spieler.getSpieler()) {
|
||||
if (spieler != null) {
|
||||
if (eingabe.equals(spieler.getName())) {
|
||||
|
|
@ -107,30 +108,30 @@ public class Spiel {
|
|||
}
|
||||
|
||||
// Neues Spielfeld anlegen
|
||||
this.spielfeld =spielfeld;
|
||||
this.spielfeld = spielfeld;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public boolean spielen() {
|
||||
|
||||
// Züge durchführen
|
||||
try {
|
||||
Zug zug = new Zug();
|
||||
// Zufälliger Spieler startet
|
||||
double startSpieler = Math.random();
|
||||
while (Gewinner.ermittleGewinner(this) == null && Zug.getZugNummer() < 9) {
|
||||
Spiel.zug = new Zug();
|
||||
if (Zug.getZugNummer() % 2 == 0) {
|
||||
if (startSpieler <= 0.5d) {
|
||||
Zug.macheZug(spieler1);
|
||||
zug.macheZug(spieler1);
|
||||
} else {
|
||||
Zug.macheZug(spieler2);
|
||||
zug.macheZug(spieler2);
|
||||
}
|
||||
} else {
|
||||
if (startSpieler > 0.5d) {
|
||||
Zug.macheZug(spieler1);
|
||||
zug.macheZug(spieler1);
|
||||
} else {
|
||||
Zug.macheZug(spieler2);
|
||||
zug.macheZug(spieler2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,90 +1,59 @@
|
|||
package gfn.marc;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
public class Zug {
|
||||
|
||||
private static Frame f;
|
||||
private static Spielfeld spielfeld;
|
||||
private Frame f;
|
||||
private static int zugNummer = 0;
|
||||
private static boolean zugLaeuft;
|
||||
private static Spieler spieler;
|
||||
private boolean zugLaeuft;
|
||||
private Spieler spieler;
|
||||
|
||||
public Zug() {
|
||||
Zug.spielfeld = TicTacToe.getSpielfeld();
|
||||
Zug.f = TicTacToe.getF();
|
||||
this.f = TicTacToe.getF();
|
||||
}
|
||||
|
||||
// Zuganzahl hochzählen und Titelleiste setzen
|
||||
public static void macheZug(Spieler spieler) {
|
||||
Zug.spieler = spieler;
|
||||
if (zugNummer == 9) {
|
||||
public void macheZug(Spieler spieler) {
|
||||
this.spieler = spieler;
|
||||
if (Zug.zugNummer == 9) {
|
||||
Zug.zugNummer = 0;
|
||||
}
|
||||
Zug.zugNummer++;
|
||||
f.setTitle(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));
|
||||
}
|
||||
}
|
||||
this.setZugLaeuft(true);
|
||||
|
||||
// Auf setzen eines Feldes warten
|
||||
while (Zug.isZugLaeuft()) {
|
||||
while (this.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(new CustomMouseListener(i));
|
||||
}
|
||||
f.repaint();
|
||||
|
||||
}
|
||||
|
||||
public static int getZugNummer() {
|
||||
return zugNummer;
|
||||
return Zug.zugNummer;
|
||||
}
|
||||
|
||||
public static boolean isZugLaeuft() {
|
||||
return zugLaeuft;
|
||||
public boolean isZugLaeuft() {
|
||||
return this.zugLaeuft;
|
||||
}
|
||||
|
||||
public static void setZugLaeuft(boolean zugLaeuft) {
|
||||
Zug.zugLaeuft = zugLaeuft;
|
||||
public void setZugLaeuft(boolean zugLaeuft) {
|
||||
this.zugLaeuft = zugLaeuft;
|
||||
}
|
||||
|
||||
public static void setZugNummer(int zugNummer) {
|
||||
Zug.zugNummer = zugNummer;
|
||||
}
|
||||
|
||||
// Lokale Klasse für CustomMouseListener
|
||||
static class CustomMouseListener extends MouseAdapter {
|
||||
|
||||
int i;
|
||||
|
||||
public CustomMouseListener(int i) {
|
||||
this.i = i;
|
||||
public Spieler getSpieler() {
|
||||
return this.spieler;
|
||||
}
|
||||
|
||||
// Auf Setzen des Feldes prüfen und ggf. Form zeichnen lassen
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent mouseEvent) {
|
||||
spielfeld.getFelder()[i].setZeichen(spieler.getForm());
|
||||
f.repaint();
|
||||
Zug.setZugLaeuft(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue