Już wiem co było źle, nie dałem całego kodu i wprowadziłem zamęt ;)
Blok switch zmieniłem na:
for(int i = 0; i<10; i++){
if(a.getSource() == buttons[i]){
buttons[i].setText("X");
buttons[i].setEnabled(false);
}
}
runda++;
komputer();
W funkcji komputer umieściłem:
public void komputer(){
runda++;
for(int i=0;i<9;i++)
{
if(buttons[i].getText() == "" || buttons[i].getText() == null || buttons[i].getText().equals(null) || buttons[i].getText().equals("")){ //tak, zbędne powtarzanie, //ale szukałem wszędzie błędu
buttons[i].setText("O");
buttons[i].setEnabled(false);
break;
}
}
}
A co przyprawiło tyle kłopotu? Blok ifów pod switchem. Jak?
case 1 zmieniało wartość litera na X, dalej była pętla for z zmianą danego pola na O, ale to pole było jeszcze puste, bo zmiana pola gracza była po zmianie przez komputer.
Zawile, więc łatwiej:
litera na X -> stawienie O na polu -> nadpisanie pola przez X
A tutaj tutaj cała klasa gry z komputerem:
class KolkoiKrzyzykKomp implements ActionListener {
JButton buttons[] = new JButton[10];
int runda=0;
String litera="";
boolean wygrana=false;
/**
* @wbp.parser.entryPoint
*/
KolkoiKrzyzykKomp(){
JFrame okno = new JFrame();
okno.setBounds(10, 10, 185, 200);
okno.setTitle("LOL");
okno.setVisible(true);
okno.getContentPane().setLayout(new GridLayout(3,3));
for(int i = 0; i<9; i++){
buttons[i] = new JButton();
okno.getContentPane().add(buttons[i]);
buttons[i].addActionListener(this);
}
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent a) {
/*Write the letter to the button and deactivate it*/
for(int i = 0; i<10; i++){
if(a.getSource() == buttons[i]){
buttons[i].setText("X");
buttons[i].setEnabled(false);
}
}
runda++;
komputer();
if( buttons[0].getText() == buttons[1].getText() && buttons[1].getText() == buttons[2].getText() && buttons[0].getText() != ""){
JOptionPane z = new JOptionPane();
wygrana=true;
z.showMessageDialog(null, "Wygrałeś "+litera);
for(int i=0; i<9; i++)
buttons[i].setEnabled(false);
}
else if(buttons[3].getText() == buttons[4].getText() && buttons[4].getText() == buttons[5].getText() && buttons[3].getText() != ""){
wygrana=true;
JOptionPane z = new JOptionPane();
z.showMessageDialog(null, "Wygrałeś "+litera);
for(int i=0; i<9; i++)
buttons[i].setEnabled(false);
}
else if(buttons[6].getText() == buttons[7].getText() && buttons[7].getText() == buttons[8].getText() && buttons[6].getText() != ""){
JOptionPane z = new JOptionPane();
wygrana=true;
z.showMessageDialog(null, "Wygrałeś "+litera);
for(int i=0; i<9; i++)
buttons[i].setEnabled(false);
}
//pionowo
else if(buttons[0].getText() == buttons[3].getText() && buttons[3].getText() == buttons[6].getText() && buttons[0].getText() != ""){
JOptionPane z = new JOptionPane();
wygrana=true;
z.showMessageDialog(null, "Wygrałeś "+litera);
for(int i=0; i<9; i++)
buttons[i].setEnabled(false);
}
else if(buttons[1].getText() == buttons[4].getText() && buttons[4].getText() == buttons[7].getText() && buttons[1].getText() != ""){
JOptionPane z = new JOptionPane();
wygrana=true;
z.showMessageDialog(null, "Wygrałeś "+litera);
for(int i=0; i<9; i++)
buttons[i].setEnabled(false);
}
else if(buttons[2].getText() == buttons[5].getText() && buttons[5].getText() == buttons[8].getText() && buttons[2].getText() != ""){
JOptionPane z = new JOptionPane();
wygrana=true;
z.showMessageDialog(null, "Wygrałeś "+litera);
for(int i=0; i<9; i++)
buttons[i].setEnabled(false);
}
//przekątna
else if(buttons[0].getText() == buttons[4].getText() && buttons[4].getText() == buttons[8].getText() && buttons[0].getText() != ""){
JOptionPane z = new JOptionPane();
wygrana=true;
z.showMessageDialog(null, "Wygrałeś "+litera);
for(int i=0; i<9; i++)
buttons[i].setEnabled(false);
}
else if(buttons[2].getText() == buttons[4].getText() && buttons[4].getText() == buttons[6].getText() && buttons[2].getText() != ""){
JOptionPane z = new JOptionPane();
wygrana=true;
z.showMessageDialog(null, "Wygrałeś "+litera);
for(int i=0; i<9; i++)
buttons[i].setEnabled(false);
}
else if(runda==9 && wygrana==false) {
JOptionPane z = new JOptionPane();
z.showMessageDialog(null, "Nikt nie wygrał nananan");
}
}
//sprawdzenie wygranej
//tutaj poziomo
public void komputer(){
runda++;
for(int i=0;i<9;i++)
{
if(buttons[i].getText() == "" || buttons[i].getText() == null || buttons[i].getText().equals(null) || buttons[i].getText().equals("")){
buttons[i].setText("O");
buttons[i].setEnabled(false);
break;
}
}
}
Popatrzę co jeszcze można uprościć i oddaje nauczycielce, aby w końcu dała mi szóstkę z informatyki na koniec.