Hallo liebe Community,
ich sitze für ein Uni-Projekt an einem Java-Programm, nämlich dem 2-Spieler-Reaktor (vielleicht kennen ihn einige von euch vom Handy).
Jetzt versuche ich gerade ein TicTacToe umzusetzen, bei dem die Kreuze bzw. Kreise vom Computer in 1,5 Sekundenabständen zufällig gesetzt werden und der Benutzer nur drücken soll (um einen Punkt zu bekommen), sobald er drei Kreuze oder Kreise in einer Reihe sieht.
Das ganze läuft mittlerweile auch, allerdings überhaupt nicht zu meiner Zufriedenheit (sehr buggy).
Könntet ihr bitte einmal über den Quelltext schauen. Ich vermute ja, dass der Timer/TimerTask sprich das Warten der Knackpunkt ist, bei dem alles noch nicht wirklich zusammenpasst.
Probleme die ich momentan habe sind:
- Machmal sind die Intervalle von 1,5 Sekunden zwischen den Kreisen bzw. Kreuzen wesentlich kürzer (ca. 0,5 Sekunden)
- Nachdem einer der Spieler gedrückt hat soll ja kein weiterer Kreis/Kreuz erscheinen, allerdings wird immer noch ein Weiterer hinzugefügt.
Falls euch die Klasse für das TicTacToe an Quelltext nicht ausreicht sagt Bescheid, dann kann ich auch noch mehr posten.
Schonmal danke für die Hilfe!
Hier ein Bild, damit ihr euch das Ganze etwas vorstellen könnt:
Hier ist mein Quellcode:
ich sitze für ein Uni-Projekt an einem Java-Programm, nämlich dem 2-Spieler-Reaktor (vielleicht kennen ihn einige von euch vom Handy).
Jetzt versuche ich gerade ein TicTacToe umzusetzen, bei dem die Kreuze bzw. Kreise vom Computer in 1,5 Sekundenabständen zufällig gesetzt werden und der Benutzer nur drücken soll (um einen Punkt zu bekommen), sobald er drei Kreuze oder Kreise in einer Reihe sieht.
Das ganze läuft mittlerweile auch, allerdings überhaupt nicht zu meiner Zufriedenheit (sehr buggy).
Könntet ihr bitte einmal über den Quelltext schauen. Ich vermute ja, dass der Timer/TimerTask sprich das Warten der Knackpunkt ist, bei dem alles noch nicht wirklich zusammenpasst.
Probleme die ich momentan habe sind:
- Machmal sind die Intervalle von 1,5 Sekunden zwischen den Kreisen bzw. Kreuzen wesentlich kürzer (ca. 0,5 Sekunden)
- Nachdem einer der Spieler gedrückt hat soll ja kein weiterer Kreis/Kreuz erscheinen, allerdings wird immer noch ein Weiterer hinzugefügt.
Falls euch die Klasse für das TicTacToe an Quelltext nicht ausreicht sagt Bescheid, dann kann ich auch noch mehr posten.
Schonmal danke für die Hilfe!
Hier ein Bild, damit ihr euch das Ganze etwas vorstellen könnt:

Hier ist mein Quellcode:
Java:
// Importe
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
// Klasse TicTacToe für das TicTacToeSpiel
public class TicTacToe {
// Einbinden anderer Klassen
Menu Menu = new Menu();
Sieger Sieger = new Sieger();
// Klassen-Initialisierungen (JFrame und JPanel)
JFrame fTicTacToe;
JPanel pTicTacToe;
// Methoden-Initialisierungen (Label, Button und Random)
JLabel labSpielstand;
JLabel labTicTacToeUeberschrift;
JLabel labTicTacToeAnzeige;
JLabel labTicTacToeKreis1;
JLabel labTicTacToeKreis2;
JLabel labTicTacToeKreis3;
JLabel labTicTacToeKreis4;
JLabel labTicTacToeKreis5;
JLabel labTicTacToeKreuz1;
JLabel labTicTacToeKreuz2;
JLabel labTicTacToeKreuz3;
JLabel labTicTacToeKreuz4;
JLabel labTicTacToeBild;
JLabel labTicTacToeBildRaster;
JButton bTicTacToeNext;
Random tictactoeZufallszahl;
// Bilderimport
Icon iconTicTacToeHintergrund = new ImageIcon(getClass().getResource("ImageTTT.png"));
Icon iconTicTacToeRaster = new ImageIcon(getClass().getResource("ImageTTTRaster.png"));
//Anlegen einer Farbe
Color panelblau = new Color(110, 205, 235);
// Variablen-Deklaration und -Initialisierung (boolean und int)
boolean booleanTicTacToeAbgleich;
int tictactoeRandomZeile,
tictactoeRandomSpalte,
tictactoeWechselKreisKreuz = 1,
tictactoeLaufvariableAnzeigen = -1,
tictactoeLaufvariableRunden = 0,
tictactoeAbgleichLaufvariable,
tictactoeWechselvariable = 1,
tictactoeWechselvariableStop = 0;
int[][] tictactoeDatenbank;
int[][][] tictactoeDatenbankKoordinaten;
// Methode TicTacToeSpiel als Fenster für die Darstellung des TicTacToeSpiels
public void TicTacToeSpiel() {
// JFrame: Klassendeklaration und Klassenkonkretisierung
fTicTacToe = new JFrame("2-Spieler-Reaktor");
fTicTacToe.setSize(800, 600);
fTicTacToe.setLocationRelativeTo(null);
fTicTacToe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fTicTacToe.setLayout(null);
fTicTacToe.setResizable(false);
fTicTacToe.setVisible(true);
fTicTacToe.setFocusable(true);
// JPanel: Klassendeklaration und Klassenkonkretisierung
pTicTacToe = new JPanel();
pTicTacToe.setBounds(280, 180, 240, 240);
pTicTacToe.setBackground(panelblau);
pTicTacToe.setLayout(null);
// JMenuBar: Aufrufen einer Methode und Einbinden der Menüleiste
Menu.MenuBarAnzeigen();
fTicTacToe.setJMenuBar(Menu.MenuBar);
// JLabel: Methodendeklaration und Methodenkonkretisierung (14 Label)
labSpielstand = new JLabel("Spielstand " + Spielstand.spielstandSpieler1 + " : " + Spielstand.spielstandSpieler2);
labSpielstand.setBounds(567, 99, 160, 25);
labSpielstand.setHorizontalAlignment(SwingConstants.RIGHT);
labSpielstand.setFont(new Font("Tahoma", Font.PLAIN, 18));
labTicTacToeUeberschrift = new JLabel("Tic Tac Toe");
labTicTacToeUeberschrift.setBounds(280, 60, 240, 40);
labTicTacToeUeberschrift.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeUeberschrift.setVerticalAlignment(SwingConstants.TOP);
labTicTacToeUeberschrift.setFont(new Font("Tahoma", Font.BOLD, 25));
labTicTacToeAnzeige = new JLabel("Hier gehts gleich los. (Enter)");
labTicTacToeAnzeige.setBounds(200, 435, 400, 25);
labTicTacToeAnzeige.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeAnzeige.setVerticalAlignment(SwingConstants.TOP);
labTicTacToeAnzeige.setFont(new Font("Tahoma", Font.PLAIN, 18));
labTicTacToeKreis1 = new JLabel("");
labTicTacToeKreis2 = new JLabel("");
labTicTacToeKreis3 = new JLabel("");
labTicTacToeKreis4 = new JLabel("");
labTicTacToeKreis5 = new JLabel("");
labTicTacToeKreuz1 = new JLabel("");
labTicTacToeKreuz2 = new JLabel("");
labTicTacToeKreuz3 = new JLabel("");
labTicTacToeKreuz4 = new JLabel("");
labTicTacToeBild = new JLabel(iconTicTacToeHintergrund);
labTicTacToeBild.setBounds(0, 0, 790, 550);
labTicTacToeBildRaster = new JLabel(iconTicTacToeRaster);
labTicTacToeBildRaster.setBounds(0, 0, 790, 550);
// JButton: Methodendeklaration und Methodenkonkretisierung (1 Button)
bTicTacToeNext = new JButton("Siegerehrung");
bTicTacToeNext.setBounds(320, 485, 160, 50);
bTicTacToeNext.setFont(new Font("Tahoma", Font.BOLD, 15));
bTicTacToeNext.addActionListener(new ActionHandler());
// Einbindung der KeyListener
fTicTacToe.addKeyListener(new KeyHandler());
// Einbindung der Methoden in die JFrame-Klasse/JPanel-Klasse
fTicTacToe.add(labTicTacToeBildRaster);
pTicTacToe.add(labTicTacToeKreis1);
pTicTacToe.add(labTicTacToeKreis2);
pTicTacToe.add(labTicTacToeKreis3);
pTicTacToe.add(labTicTacToeKreis4);
pTicTacToe.add(labTicTacToeKreis5);
pTicTacToe.add(labTicTacToeKreuz1);
pTicTacToe.add(labTicTacToeKreuz2);
pTicTacToe.add(labTicTacToeKreuz3);
pTicTacToe.add(labTicTacToeKreuz4);
fTicTacToe.add(labSpielstand);
fTicTacToe.add(labTicTacToeUeberschrift);
fTicTacToe.add(labTicTacToeAnzeige);
fTicTacToe.add(pTicTacToe);
fTicTacToe.add(labTicTacToeBild);
}
// Methode TicTacToeDatenbank für Datenbankeinträge
private void TicTacToeDatenbank() {
// Deklarierung eines intArrays
tictactoeDatenbank = new int[3][3];
// Anlegen der Datenbankeinträge
// 0 = Leer; 1 = Kreis; 2 = Kreuz
tictactoeDatenbank[0][0] = 0;
tictactoeDatenbank[0][1] = 0;
tictactoeDatenbank[0][2] = 0;
tictactoeDatenbank[1][0] = 0;
tictactoeDatenbank[1][1] = 0;
tictactoeDatenbank[1][2] = 0;
tictactoeDatenbank[2][0] = 0;
tictactoeDatenbank[2][1] = 0;
tictactoeDatenbank[2][2] = 0;
// Deklarierung eines intArrays
tictactoeDatenbankKoordinaten = new int[3][3][2];
// Anlegen der Datenbankeinträge
// Koordinaten für die einzelnen TicTacToe-Felder
tictactoeDatenbankKoordinaten[0][0][0] = 0;
tictactoeDatenbankKoordinaten[0][0][1] = 0;
tictactoeDatenbankKoordinaten[0][1][0] = 80;
tictactoeDatenbankKoordinaten[0][1][1] = 0;
tictactoeDatenbankKoordinaten[0][2][0] = 160;
tictactoeDatenbankKoordinaten[0][2][1] = 0;
tictactoeDatenbankKoordinaten[1][0][0] = 0;
tictactoeDatenbankKoordinaten[1][0][1] = 80;
tictactoeDatenbankKoordinaten[1][1][0] = 80;
tictactoeDatenbankKoordinaten[1][1][1] = 80;
tictactoeDatenbankKoordinaten[1][2][0] = 160;
tictactoeDatenbankKoordinaten[1][2][1] = 80;
tictactoeDatenbankKoordinaten[2][0][0] = 0;
tictactoeDatenbankKoordinaten[2][0][1] = 160;
tictactoeDatenbankKoordinaten[2][1][0] = 80;
tictactoeDatenbankKoordinaten[2][1][1] = 160;
tictactoeDatenbankKoordinaten[2][2][0] = 160;
tictactoeDatenbankKoordinaten[2][2][1] = 160;
// Leeren der TicTacToe-Spielfeldfelder, damit neue Runde begonnen werden kann
labTicTacToeKreis1.setText("");
labTicTacToeKreis2.setText("");
labTicTacToeKreis3.setText("");
labTicTacToeKreis4.setText("");
labTicTacToeKreis5.setText("");
labTicTacToeKreuz1.setText("");
labTicTacToeKreuz2.setText("");
labTicTacToeKreuz3.setText("");
labTicTacToeKreuz4.setText("");
}
// Methode TicTacToeRandom zur Auswahl eines beliebigen, leeren Feldes
private void TicTacToeRandom() {
// Zufälliges, freies Feld auswählen und je nachdem, ob Kreis oder Kreuz am Zug ist, zuordnen
do {
tictactoeZufallszahl = new Random();
tictactoeRandomZeile = tictactoeZufallszahl.nextInt(3);
tictactoeRandomSpalte = tictactoeZufallszahl.nextInt(3);
} while (tictactoeDatenbank[tictactoeRandomZeile][tictactoeRandomSpalte] == 1
|| tictactoeDatenbank[tictactoeRandomZeile][tictactoeRandomSpalte] == 2);
if (tictactoeWechselKreisKreuz == 1) {
tictactoeDatenbank[tictactoeRandomZeile][tictactoeRandomSpalte] = 1;
} else if (tictactoeWechselKreisKreuz == 2) {
tictactoeDatenbank[tictactoeRandomZeile][tictactoeRandomSpalte] = 2;
}
if (tictactoeWechselKreisKreuz == 1) {
tictactoeWechselKreisKreuz = 2;
} else if (tictactoeWechselKreisKreuz == 2) {
tictactoeWechselKreisKreuz = 1;
}
}
// Methode TicTacToeAbgleich zum Abgleich, ob bereits eine richtige Kombination vorliegt
private void TicTacToeAbgleich() {
booleanTicTacToeAbgleich = false;
for (tictactoeAbgleichLaufvariable = 0; tictactoeAbgleichLaufvariable <= 2; tictactoeAbgleichLaufvariable++) {
// Zeilenabgleich auf drei Kreise/Kreuze in Reihe
if ( (tictactoeDatenbank[tictactoeAbgleichLaufvariable][0] == 1
&& tictactoeDatenbank[tictactoeAbgleichLaufvariable][1] == 1
&& tictactoeDatenbank[tictactoeAbgleichLaufvariable][2] == 1)
|| (tictactoeDatenbank[tictactoeAbgleichLaufvariable][0] == 2
&& tictactoeDatenbank[tictactoeAbgleichLaufvariable][1] == 2
&& tictactoeDatenbank[tictactoeAbgleichLaufvariable][2] == 2)) {
booleanTicTacToeAbgleich = true;
}
// Spaltenabgleich auf drei Kreise/Kreuze in Reihe
else if ( (tictactoeDatenbank[0][tictactoeAbgleichLaufvariable] == 1
&& tictactoeDatenbank[1][tictactoeAbgleichLaufvariable] == 1
&& tictactoeDatenbank[2][tictactoeAbgleichLaufvariable] == 1)
|| (tictactoeDatenbank[0][tictactoeAbgleichLaufvariable] == 2
&& tictactoeDatenbank[1][tictactoeAbgleichLaufvariable] == 2
&& tictactoeDatenbank[2][tictactoeAbgleichLaufvariable] == 2)) {
booleanTicTacToeAbgleich = true;
}
}
// Diagonalenabgleich auf drei Kreise/Kreuze in Reihe
if ((tictactoeDatenbank[0][0] == 1
&& tictactoeDatenbank[1][1] == 1
&& tictactoeDatenbank[2][2] == 1)
|| (tictactoeDatenbank[0][0] == 2
&& tictactoeDatenbank[1][1] == 2
&& tictactoeDatenbank[2][2] == 2)
|| (tictactoeDatenbank[0][2] == 1
&& tictactoeDatenbank[1][1] == 1
&& tictactoeDatenbank[2][0] == 1)
|| (tictactoeDatenbank[0][2] == 2
&& tictactoeDatenbank[1][1] == 2
&& tictactoeDatenbank[2][0] == 2)) {
booleanTicTacToeAbgleich = true;
}
}
// Methode TicTacToeTimerTask, um alle 1,5 sek einen neuen Kreis/Kreuz anzeigen zu lassen
// und sobald alle Kreise/Kreuze gesetzt sind eine neue Runde zu starten
private void TicTacToeTimerTask() {
TimerTask tictactoeSetzen = new TimerTask() {
public void run() {
// Abprüfen der Endbedingungen für den TimerTask
if (tictactoeLaufvariableAnzeigen == 9) {
cancel();
tictactoeWechselvariable = 1;
labTicTacToeAnzeige.setText("Gleich gehts weiter! (Enter)");
} else if (tictactoeWechselvariableStop == 1) {
cancel();
}
// Setzen der Kreise und Kreuze nacheinander bis Spielfeld komplett voll
if (tictactoeLaufvariableAnzeigen == 0) {
// Kreis1
TicTacToeRandom();
TicTacToeAbgleich();
labTicTacToeKreis1.setBounds(tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][0]+3, tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][1]+3, 74, 74);
labTicTacToeKreis1.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeKreis1.setVerticalAlignment(SwingConstants.CENTER);
labTicTacToeKreis1.setFont(new Font("Tahoma", Font.BOLD, 40));
labTicTacToeKreis1.setText("o");
} else if (tictactoeLaufvariableAnzeigen == 1) {
// Kreuz1
TicTacToeRandom();
TicTacToeAbgleich();
labTicTacToeKreuz1.setBounds(tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][0]+3, tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][1]+3, 74, 74);
labTicTacToeKreuz1.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeKreuz1.setVerticalAlignment(SwingConstants.CENTER);
labTicTacToeKreuz1.setFont(new Font("Tahoma", Font.BOLD, 40));
labTicTacToeKreuz1.setText("x");
} else if (tictactoeLaufvariableAnzeigen == 2) {
// Kreis2
TicTacToeRandom();
TicTacToeAbgleich();
labTicTacToeKreis2.setBounds(tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][0]+3, tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][1]+3, 74, 74);
labTicTacToeKreis2.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeKreis2.setVerticalAlignment(SwingConstants.CENTER);
labTicTacToeKreis2.setFont(new Font("Tahoma", Font.BOLD, 40));
labTicTacToeKreis2.setText("o");
} else if (tictactoeLaufvariableAnzeigen == 3) {
// Kreuz2
TicTacToeRandom();
TicTacToeAbgleich();
labTicTacToeKreuz2.setBounds(tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][0]+3, tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][1]+3, 74, 74);
labTicTacToeKreuz2.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeKreuz2.setVerticalAlignment(SwingConstants.CENTER);
labTicTacToeKreuz2.setFont(new Font("Tahoma", Font.BOLD, 40));
labTicTacToeKreuz2.setText("x");
} else if (tictactoeLaufvariableAnzeigen == 4) {
// Kreis3
TicTacToeRandom();
TicTacToeAbgleich();
labTicTacToeKreis3.setBounds(tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][0]+3, tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][1]+3, 74, 74);
labTicTacToeKreis3.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeKreis3.setVerticalAlignment(SwingConstants.CENTER);
labTicTacToeKreis3.setFont(new Font("Tahoma", Font.BOLD, 40));
labTicTacToeKreis3.setText("o");
} else if (tictactoeLaufvariableAnzeigen == 5) {
// Kreuz3
TicTacToeRandom();
TicTacToeAbgleich();
labTicTacToeKreuz3.setBounds(tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][0]+3, tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][1]+3, 74, 74);
labTicTacToeKreuz3.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeKreuz3.setVerticalAlignment(SwingConstants.CENTER);
labTicTacToeKreuz3.setFont(new Font("Tahoma", Font.BOLD, 40));
labTicTacToeKreuz3.setText("x");
} else if (tictactoeLaufvariableAnzeigen == 6) {
// Kreis4
TicTacToeRandom();
TicTacToeAbgleich();
labTicTacToeKreis4.setBounds(tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][0]+3, tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][1]+3, 74, 74);
labTicTacToeKreis4.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeKreis4.setVerticalAlignment(SwingConstants.CENTER);
labTicTacToeKreis4.setFont(new Font("Tahoma", Font.BOLD, 40));
labTicTacToeKreis4.setText("o");
} else if (tictactoeLaufvariableAnzeigen == 7) {
// Kreuz4
TicTacToeRandom();
TicTacToeAbgleich();
labTicTacToeKreuz4.setBounds(tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][0]+3, tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][1]+3, 74, 74);
labTicTacToeKreuz4.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeKreuz4.setVerticalAlignment(SwingConstants.CENTER);
labTicTacToeKreuz4.setFont(new Font("Tahoma", Font.BOLD, 40));
labTicTacToeKreuz4.setText("x");
} else if (tictactoeLaufvariableAnzeigen == 8) {
// Kreis5
TicTacToeRandom();
TicTacToeAbgleich();
labTicTacToeKreis5.setBounds(tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][0]+3, tictactoeDatenbankKoordinaten[tictactoeRandomZeile][tictactoeRandomSpalte][1]+3, 74, 74);
labTicTacToeKreis5.setHorizontalAlignment(SwingConstants.CENTER);
labTicTacToeKreis5.setVerticalAlignment(SwingConstants.CENTER);
labTicTacToeKreis5.setFont(new Font("Tahoma", Font.BOLD, 40));
labTicTacToeKreis5.setText("o");
}
fTicTacToe.repaint();
tictactoeLaufvariableAnzeigen++;
// System.out.println(tictactoeLaufvariableAnzeigen + " " + booleanTicTacToeAbgleich);
}
};
Timer tictactoeSetzenSchleife = new Timer();
tictactoeSetzenSchleife.schedule(tictactoeSetzen, 0, 1500);
}
// ActionListener
private class ActionHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// ActionListener für Button (Funktion: Nächstes Spiel aufrufen bzw. Zurück zum Hauptmenü)
if (e.getSource() == bTicTacToeNext) {
Sieger.Siegerehrung();
fTicTacToe.dispose();
}
}
}
// KeyListener
public class KeyHandler implements KeyListener {
@Override
public void keyPressed(KeyEvent e) {
// KeyListener für die Enter-Taste
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
// Wechselvariable, die festlegt, ob man gerade vom Anzeigeteil in den Korrekturteil springt oder umgekehrt
// (1 = Korrekturteil zu Anzeigeteil, 0 = Anzeigeteil zu Korrekturteil)
if (tictactoeWechselvariable == 1) {
// Solange max. Rundenanzahl noch nicht erreicht ist: Anzeigen eines neuen TicTacToe-Spiels
if (tictactoeLaufvariableRunden < Einstellungen.einstellungenSpieldauer) {
labTicTacToeAnzeige.setText("");
tictactoeLaufvariableAnzeigen = -1;
tictactoeLaufvariableRunden++;
tictactoeWechselvariable = 0;
tictactoeWechselvariableStop = 0;
TicTacToeDatenbank();
TicTacToeTimerTask();
}
// Sobald die max. Rundenanzahl erreicht ist: Anzeigen eines Buttons und keines neuen TicTacToes
else if (tictactoeLaufvariableRunden == Einstellungen.einstellungenSpieldauer) {
fTicTacToe.add(bTicTacToeNext);
fTicTacToe.repaint();
fTicTacToe.revalidate();
}
}
else if (tictactoeWechselvariable == 0) {
// Falls keiner der Spieler drücken möchte, wird die Runde hier neutral beendet
if (tictactoeLaufvariableRunden <= Einstellungen.einstellungenSpieldauer) {
tictactoeWechselvariableStop = 1;
tictactoeWechselvariable = 1;
labTicTacToeAnzeige.setText("Gleich gehts weiter! (Enter)");
}
}
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
// KeyListener für die Spieler1-Taste
if (e.getKeyChar() == Einstellungen.einstellungenTastenBelegungSpieler1) {
// Wechselvariable, die festlegt, ob man gerade vom Anzeigeteil in den Korrekturteil springt oder umgekehrt
// (1 = Korrekturteil zu Anzeigeteil, 0 = Anzeigeteil zu Korrekturteil)
if (tictactoeWechselvariable == 0) {
// Solange max. Rundenanzahl noch nicht überschritten ist:
// Punktevergabe an den zuerst drückenden Spieler und Wechsel in den Korrekturteil
if (tictactoeLaufvariableRunden <= Einstellungen.einstellungenSpieldauer) {
// Falls ein Spieler drückt und das TicTacToe richtig ist:
// Pluspunkt
tictactoeWechselvariableStop = 1;
tictactoeWechselvariable = 1;
labTicTacToeAnzeige.setText("Gleich gehts weiter! (Enter)");
if (booleanTicTacToeAbgleich == true) {
Spielstand.spielstandSpieler1++;
labSpielstand.setText("Spielstand " + Spielstand.spielstandSpieler1 + " : " + Spielstand.spielstandSpieler2);
}
// Falls ein Spieler drückt und das TicTacToe falsch ist:
// Minuspunkt
else if (booleanTicTacToeAbgleich == false) {
Spielstand.spielstandSpieler1--;
labSpielstand.setText("Spielstand " + Spielstand.spielstandSpieler1 + " : " + Spielstand.spielstandSpieler2);
}
}
}
}
// KeyListener für die Spieler2-Taste
else if (e.getKeyChar() == Einstellungen.einstellungenTastenBelegungSpieler2) {
// Wechselvariable, die festlegt, ob man gerade vom Anzeigeteil in den Korrekturteil springt oder umgekehrt
// (1 = Korrekturteil zu Anzeigeteil, 0 = Anzeigeteil zu Korrekturteil)
if (tictactoeWechselvariable == 0) {
// Solange max. Rundenanzahl noch nicht überschritten ist:
// Punktevergabe an den zuerst drückenden Spieler und Wechsel in den Korrekturteil
if (tictactoeLaufvariableRunden <= Einstellungen.einstellungenSpieldauer) {
// Falls ein Spieler drückt und das TicTacToe richtig ist:
// Pluspunkt
tictactoeWechselvariableStop = 1;
tictactoeWechselvariable = 1;
labTicTacToeAnzeige.setText("Gleich gehts weiter! (Enter)");
if (booleanTicTacToeAbgleich == true) {
Spielstand.spielstandSpieler2++;
labSpielstand.setText("Spielstand " + Spielstand.spielstandSpieler1 + " : " + Spielstand.spielstandSpieler2);
}
// Falls ein Spieler drückt und das TicTacToe falsch ist:
// Minuspunkt
else if (booleanTicTacToeAbgleich == false) {
Spielstand.spielstandSpieler2--;
labSpielstand.setText("Spielstand " + Spielstand.spielstandSpieler1 + " : " + Spielstand.spielstandSpieler2);
}
}
}
}
}
}
}
Zuletzt bearbeitet: