Hi also ich habe jetzt angefangen und habe das TicTacToe Spiel soweit fertig.
Das Problem ist nur noch, dass bis jetzt nur die Gewinnabfrage für die Diagonalen klappt, die für horizontal und vertikal klappen noch nicht.
Kann mir evtl. jemand sagen wo sich bei mir der Fehler versteckt?
Hier ist das Spiel:
[JAVA]
package ptictactoe;
import java.awt.event.*; // Für den ActionListener
import javax.swing.*; // Für das PopUp Fenster bei einem Sieg oder Remis
import basis.*; // Für die Knöpfe und das Fenster
public class TicTacToe implements ActionListener {
// Deklaration
private Fenster mf;
private Knopf mk1, mk2, mk3, mk4, mk5, mk6, mk7, mk8, mk9;
private String spieler;
private int spielzuege;
private boolean sieg;
public TicTacToeV1() {
// Konstruktion
mf = new Fenster();
mf.setzeTitel("SPIELER X IST DRAN !!!");
mf.setzeGroesse(300, 300);
mk1 = new Knopf("", 0, 0, 100, 100);
mk2 = new Knopf("", 100, 0, 100, 100);
mk3 = new Knopf("", 200, 0, 100, 100);
mk4 = new Knopf("", 0, 100, 100, 100);
mk5 = new Knopf("", 100, 100, 100, 100);
mk6 = new Knopf("", 200, 100, 100, 100);
mk7 = new Knopf("", 0, 200, 100, 100);
mk8 = new Knopf("", 100, 200, 100, 100);
mk9 = new Knopf("", 200, 200, 100, 100);
spieler = "";
spielzuege = 0;
sieg = false;
// ActionListener zu den Knöpfen hinzufügen
mk1.addActionListener(this);
mk2.addActionListener(this);
mk3.addActionListener(this);
mk4.addActionListener(this);
mk5.addActionListener(this);
mk6.addActionListener(this);
mk7.addActionListener(this);
mk8.addActionListener(this);
mk9.addActionListener(this);
}
public void actionPerformed(ActionEvent a) {
spielzuege++; // Nach jeder Aktion (hier ein Knopfdruck) wird die Variable spielzuege um 1 erhöht
// Zuweisung dafür, wer am Zug ist
if (spielzuege == 1 || spielzuege == 3 || spielzuege == 5
|| spielzuege == 7 || spielzuege == 9) {
spieler = "X";
mf.setzeTitel("SPIELER O IST DRAN !!!");
} else if (spielzuege == 2 || spielzuege == 4 || spielzuege == 6
|| spielzuege == 8 || spielzuege == 10) {
spieler = "O";
mf.setzeTitel("SPIELER X IST DRAN !!!");
}
// Zeichenzuweisung der Knöpfe jenachdem welcher Spieler am Zug war
if (a.getSource() == mk1) {
mk1.setzeText(spieler);
mk1.setzeBenutzbar(false);
} else if (a.getSource() == mk2) {
mk2.setzeText(spieler);
mk2.setzeBenutzbar(false);
} else if (a.getSource() == mk3) {
mk3.setzeText(spieler);
mk3.setzeBenutzbar(false);
} else if (a.getSource() == mk4) {
mk4.setzeText(spieler);
mk4.setzeBenutzbar(false);
} else if (a.getSource() == mk5) {
mk5.setzeText(spieler);
mk5.setzeBenutzbar(false);
} else if (a.getSource() == mk6) {
mk6.setzeText(spieler);
mk6.setzeBenutzbar(false);
} else if (a.getSource() == mk7) {
mk7.setzeText(spieler);
mk7.setzeBenutzbar(false);
} else if (a.getSource() == mk8) {
mk8.setzeText(spieler);
mk8.setzeBenutzbar(false);
} else if (a.getSource() == mk9) {
mk9.setzeText(spieler);
mk9.setzeBenutzbar(false);
}
// Bestimmung der Gewinnmöglichkeiten
// horizantal prüfen
if (mk1.text() == mk2.text() && mk2.text() == mk3.text()
&& mk1.text() != "") {
sieg = true;
} else if (mk4.text() == mk5.text() && mk5.text() == mk6.text()
&& mk4.text() != "") {
sieg = true;
} else if (mk7.text() == mk8.text() && mk8.text() == mk9.text()
&& mk7.text() != "") {
sieg = true;
}
// vertikal prüfen
if (mk1.text() == mk4.text() && mk4.text() == mk7.text()
&& mk1.text() != "") {
sieg = true;
} else if (mk2.text() == mk5.text() && mk5.text() == mk8.text()
&& mk2.text() != "") {
sieg = true;
} else if (mk3.text() == mk6.text() && mk6.text() == mk9.text()
&& mk3.text() != "") {
sieg = true;
}
// diagonal prüfen
if (mk1.text() == mk5.text() && mk5.text() == mk9.text()
&& mk1.text() != "") {
sieg = true;
} else if (mk3.text() == mk5.text() && mk5.text() == mk7.text()
&& mk3.text() != "") {
sieg = true;
} else {
sieg = false;
}
// Erzeugen eines PopUp Fensters, falls jemand gewonnen hat oder es Unentschieden steht
if (sieg == true) {
JOptionPane.showMessageDialog(null, spieler + " WINS!");
//Hilfe.warte(500);
//mf.gibFrei();
} else if (spielzuege == 9 && sieg == false) {
JOptionPane.showMessageDialog(null, "Remis! Kein Gewinner.");
//Hilfe.warte(500);
//mf.gibFrei();
}
}
}
[/JAVA]
Wenn die restlichen Gewinnabfragen jetzt noch klappen, kommt die Netzwerkprogrammierung an die Reihe.
Ich brauche einen Server, einen Client eine Klasse Connection und Sockets oder?
Möchte ja, dass sich 2 Clients anmelden und genau dieses Spiel dann spielen.
Client A ist Spieler X und Client B ist Spieler O.
Hoffe mir kann geholfen werden