Hallo zusammen,
ich bin gerade dabei ein simples TicTacToe-Spiel in Form eines GUI zu schreiben und habe bei den Siegbedingungen jetzt ein Problem.
Irgendetwas ist bei den Feldern(s. Bild) 2,5,6,7,8 fehlerhaft.
Sobald ein Zeichen auf diese Felder gesetzt wird gibt das Programm aus "Spieler xy hat gewonnen." (je nach dem welcher Spieler gerade am Zug ist)
Die Qualität von dem Programm ist erstmal irrelevant. Es ist nicht gut, aber es funktioniert.
Hier meine bisherigen Siegbedingungen:
[JAVA=59]//Siegbedingungen
if(tttb[0].getText().equals(tttb[1].getText()) && tttb[1].getText().equals(tttb[2].getText()) != tttb[0].getText().isEmpty() ||
tttb[3].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[5].getText()) != tttb[3].getText().isEmpty() ||
tttb[3].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[5].getText()) != tttb[3].getText().isEmpty() ||
tttb[6].getText().equals(tttb[7].getText()) && tttb[7].getText().equals(tttb[8].getText()) != tttb[6].getText().isEmpty() ||
tttb[0].getText().equals(tttb[3].getText()) && tttb[3].getText().equals(tttb[6].getText()) != tttb[0].getText().isEmpty() ||
tttb[1].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[7].getText()) != tttb[1].getText().isEmpty() ||
tttb[2].getText().equals(tttb[5].getText()) && tttb[5].getText().equals(tttb[8].getText()) != tttb[2].getText().isEmpty() ||
tttb[2].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[6].getText()) != tttb[2].getText().isEmpty() ||
tttb[0].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[8].getText()) != tttb[0].getText().isEmpty()){
System.out.println("Spieler "+sp+" hat gewonnen.");
}
else{
x++;
}
if(x==9){
System.out.println("Tie");
}
[/code]
Ich hoffe mir kann jemand dabei helfen
LG SharKu
btw Fehlermeldungen gibt es keine.
ich bin gerade dabei ein simples TicTacToe-Spiel in Form eines GUI zu schreiben und habe bei den Siegbedingungen jetzt ein Problem.
Irgendetwas ist bei den Feldern(s. Bild) 2,5,6,7,8 fehlerhaft.
Sobald ein Zeichen auf diese Felder gesetzt wird gibt das Programm aus "Spieler xy hat gewonnen." (je nach dem welcher Spieler gerade am Zug ist)
Die Qualität von dem Programm ist erstmal irrelevant. Es ist nicht gut, aber es funktioniert.
Hier meine bisherigen Siegbedingungen:
[JAVA=59]//Siegbedingungen
if(tttb[0].getText().equals(tttb[1].getText()) && tttb[1].getText().equals(tttb[2].getText()) != tttb[0].getText().isEmpty() ||
tttb[3].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[5].getText()) != tttb[3].getText().isEmpty() ||
tttb[3].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[5].getText()) != tttb[3].getText().isEmpty() ||
tttb[6].getText().equals(tttb[7].getText()) && tttb[7].getText().equals(tttb[8].getText()) != tttb[6].getText().isEmpty() ||
tttb[0].getText().equals(tttb[3].getText()) && tttb[3].getText().equals(tttb[6].getText()) != tttb[0].getText().isEmpty() ||
tttb[1].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[7].getText()) != tttb[1].getText().isEmpty() ||
tttb[2].getText().equals(tttb[5].getText()) && tttb[5].getText().equals(tttb[8].getText()) != tttb[2].getText().isEmpty() ||
tttb[2].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[6].getText()) != tttb[2].getText().isEmpty() ||
tttb[0].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[8].getText()) != tttb[0].getText().isEmpty()){
System.out.println("Spieler "+sp+" hat gewonnen.");
}
else{
x++;
}
if(x==9){
System.out.println("Tie");
}
[/code]
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class TicTacToetestbutton extends JFrame implements ActionListener{
int sp;
int x=0;
JLabel spieler;
TTTButton tttb[];
JButton abbrechen;
JButton neu;
JPanel spiel;
public TicTacToetestbutton(){
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//Infozeile
JPanel info= new JPanel();
info.setLayout(new FlowLayout());
sp=1;
spieler = new JLabel("Spieler "+sp);
info.add(spieler);
//Spielfeld
tttb = new TTTButton[9];
spiel=new JPanel();
spiel.setLayout(new GridLayout(3,3));
for(int i=0; i<=8;i++){
spiel.add(tttb);
}
JPanel opt= new JPanel();
opt.setLayout(new FlowLayout());
neu=new JButton("Neu");
abbrechen=new JButton("Abbrechen");
abbrechen.addActionListener(this);
neu.addActionListener(this);
opt.add(neu);
opt.add(abbrechen);
//Anordnung
this.getContentPane().add(info, BorderLayout.NORTH);
this.getContentPane().add(spiel, BorderLayout.CENTER);
this.getContentPane().add(opt, BorderLayout.SOUTH);
this.getContentPane().add(new TTTButton());
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==abbrechen){
System.exit(0);
}
else if(ae.getSource()==neu){
}
//Siegbedingungen
if(tttb[0].getText().equals(tttb[1].getText()) && tttb[1].getText().equals(tttb[2].getText()) != tttb[0].getText().isEmpty() ||
tttb[3].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[5].getText()) != tttb[3].getText().isEmpty() ||
tttb[3].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[5].getText()) != tttb[3].getText().isEmpty() ||
tttb[6].getText().equals(tttb[7].getText()) && tttb[7].getText().equals(tttb[8].getText()) != tttb[6].getText().isEmpty() ||
tttb[0].getText().equals(tttb[3].getText()) && tttb[3].getText().equals(tttb[6].getText()) != tttb[0].getText().isEmpty() ||
tttb[1].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[7].getText()) != tttb[1].getText().isEmpty() ||
tttb[2].getText().equals(tttb[5].getText()) && tttb[5].getText().equals(tttb[8].getText()) != tttb[2].getText().isEmpty() ||
tttb[2].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[6].getText()) != tttb[2].getText().isEmpty() ||
tttb[0].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[8].getText()) != tttb[0].getText().isEmpty()){
System.out.println("Spieler "+sp+" hat gewonnen.");
}
else{
x++;
}
if(x==9){
System.out.println("Tie");
}
if(sp==1){
sp++;
}
else{sp=1;}
spieler.setText("Spieler "+sp);
}
public static void main(String[] args) {
TicTacToetestbutton window = new TicTacToetestbutton();
window.setSize(600, 650);
window.setVisible(true);
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class TicTacToetestbutton extends JFrame implements ActionListener{
int sp;
int x=0;
JLabel spieler;
TTTButton tttb[];
JButton abbrechen;
JButton neu;
JPanel spiel;
public TicTacToetestbutton(){
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//Infozeile
JPanel info= new JPanel();
info.setLayout(new FlowLayout());
sp=1;
spieler = new JLabel("Spieler "+sp);
info.add(spieler);
//Spielfeld
tttb = new TTTButton[9];
spiel=new JPanel();
spiel.setLayout(new GridLayout(3,3));
for(int i=0; i<=8;i++){
spiel.add(tttb);
}
JPanel opt= new JPanel();
opt.setLayout(new FlowLayout());
neu=new JButton("Neu");
abbrechen=new JButton("Abbrechen");
abbrechen.addActionListener(this);
neu.addActionListener(this);
opt.add(neu);
opt.add(abbrechen);
//Anordnung
this.getContentPane().add(info, BorderLayout.NORTH);
this.getContentPane().add(spiel, BorderLayout.CENTER);
this.getContentPane().add(opt, BorderLayout.SOUTH);
this.getContentPane().add(new TTTButton());
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==abbrechen){
System.exit(0);
}
else if(ae.getSource()==neu){
}
//Siegbedingungen
if(tttb[0].getText().equals(tttb[1].getText()) && tttb[1].getText().equals(tttb[2].getText()) != tttb[0].getText().isEmpty() ||
tttb[3].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[5].getText()) != tttb[3].getText().isEmpty() ||
tttb[3].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[5].getText()) != tttb[3].getText().isEmpty() ||
tttb[6].getText().equals(tttb[7].getText()) && tttb[7].getText().equals(tttb[8].getText()) != tttb[6].getText().isEmpty() ||
tttb[0].getText().equals(tttb[3].getText()) && tttb[3].getText().equals(tttb[6].getText()) != tttb[0].getText().isEmpty() ||
tttb[1].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[7].getText()) != tttb[1].getText().isEmpty() ||
tttb[2].getText().equals(tttb[5].getText()) && tttb[5].getText().equals(tttb[8].getText()) != tttb[2].getText().isEmpty() ||
tttb[2].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[6].getText()) != tttb[2].getText().isEmpty() ||
tttb[0].getText().equals(tttb[4].getText()) && tttb[4].getText().equals(tttb[8].getText()) != tttb[0].getText().isEmpty()){
System.out.println("Spieler "+sp+" hat gewonnen.");
}
else{
x++;
}
if(x==9){
System.out.println("Tie");
}
if(sp==1){
sp++;
}
else{sp=1;}
spieler.setText("Spieler "+sp);
}
public static void main(String[] args) {
TicTacToetestbutton window = new TicTacToetestbutton();
window.setSize(600, 650);
window.setVisible(true);
}
}
Den Button als Ableitung von JButton zu schreiben war Aufgabe vom Lehrer
Java:
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class TTTButton extends TicTacToetestbutton implements ActionListener{
private static JButton tttb;
public TTTButton(){
tttb=new JButton();
tttb.addActionListener(this);
tttb.setFont(new Font("Arial",Font.BOLD,150));
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==tttb){
if(sp==1){
tttb.setText("X");
tttb.setEnabled(false);
}
else{
tttb.setText("O");
tttb.setEnabled(false);
}
}
}
}
Ich hoffe mir kann jemand dabei helfen
LG SharKu
btw Fehlermeldungen gibt es keine.
Anhänge
Zuletzt bearbeitet: