Hallo Leute,
und zwar habe ich ein Problem mit meiner checkForWin() Methode, da sie direkt sobald ich mein TicTacToe-Feld starte mir ausgibt, dass ich gewonnen habe und zwar bei jedem Button klick den ich mache. Würde mich sehr über Verbesserungsvorschläge und Tipps freuen, komme wirklich nicht weiter und bedanke mich jetzt schon mal.(Problemstelle müsste bei checkForWin() liegen)
Hier der Code:
MfG painting
und zwar habe ich ein Problem mit meiner checkForWin() Methode, da sie direkt sobald ich mein TicTacToe-Feld starte mir ausgibt, dass ich gewonnen habe und zwar bei jedem Button klick den ich mache. Würde mich sehr über Verbesserungsvorschläge und Tipps freuen, komme wirklich nicht weiter und bedanke mich jetzt schon mal.(Problemstelle müsste bei checkForWin() liegen)
Hier der Code:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class GUI
{
private JFrame feld;
private JPanel p;
private JButton b1;
private JLabel lab;
JButton[] b = new JButton[9];
int turn = 1;
int v=0;
public GUI(){
//Spielfeld wird erstellt+Buttons erzeugt
feld = new JFrame("TicTacToe");
feld.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
feld.setSize(600,600);
feld.setVisible(true);
feld.setLayout(new GridLayout(3,3));
for(int i=0;i<9;i++){
b[i] = new JButton();
feld.add(b[i]);
final int Counts = i;
b[i].setVisible(true);
feld.setLocationRelativeTo(null);
b[i].addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e){
Object press = e.getSource();
for(int k=0;k<9;k++){
if(press == b[Counts]){
if(turn%2==0){
((JButton)e.getSource()).setText("X");
turn++;
((JButton)e.getSource()).setEnabled(false);
v++;
}else{
((JButton)e.getSource()).setText("O");
turn++;
((JButton)e.getSource()).setEnabled(false);
v++;
}
//Buttons klickbar machen, ersten Schritte für TicTacToe
}
if(k==8 && press == b[8])
JOptionPane.showMessageDialog(null, "Unentschieden");
}
checkForWin();
}
});
}
}
public boolean checkForWin(){ // DAS PROBLEM LIEGT WAHRSCHEINLICH HIER!
if(b[0].getText().matches(b[1].getText()) && b[1].getText().matches(b[2].getText())||
b[0].getText().matches(b[3].getText()) && b[3].getText().matches(b[6].getText())||
b[0].getText().matches(b[4].getText()) && b[4].getText().matches(b[8].getText())||
b[1].getText().matches(b[4].getText()) && b[4].getText().matches(b[7].getText())||
b[3].getText().matches(b[4].getText()) && b[4].getText().matches(b[5].getText())||
b[6].getText().matches(b[7].getText()) && b[7].getText().matches(b[8].getText())){
JOptionPane.showMessageDialog(null, "Win");
}
return true;
}
}
MfG painting