I am currently coding a Tic tac Toe game but I have a problem concerning player 2 which is the computer. When the main player clicks on a button, there is the letter "X" which is displayed, however the letter "0", which is the computer, is displayed the first time randomly in another box. Even the second time, the computer displays it but from the third time either the computer displays its letter but in a box where there is already written "X" or it does not display its letter.
enter code here{
List random = new ArrayList();
Frame(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800,800);
this.getContentPane().setBackground(new Color(50,50,50));
this.setLayout(new BorderLayout());
this.setVisible(true);
textfield.setBackground(new Color(25,25,25));
textfield.setForeground(new Color(25,255,0));
textfield.setFont(new Font("Ink Free",Font.BOLD,75));
textfield.setText("Tic-Tac-Toe");
title_panel.setLayout(new BorderLayout());
title_panel.setBounds(0,0,800,100);
button_panel.setLayout(new GridLayout(3,3));
button_panel.setBackground(new Color(150,150,150));
for(int i=0;i<9;i++) {
button[i] = new JButton();
button_panel.add(button[i]);
button[i].setFont(new Font("MV Boli",Font.BOLD,120));
button[i].setFocusable(false);
button[i].addActionListener(this);
}
title_panel.add(textfield);
this.add(title_panel,BorderLayout.NORTH);
this.add(button_panel);
}
public void game_statement() {
if (button[0].getText().equals("X") && button[3].getText().equals("X") && button[6].getText().equals("X")) {
statement = false;
points_player+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
}
if (button[0].getText().equals("X") && button[1].getText().equals("X") && button[2].getText().equals("X")) {
statement = false;
points_player+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
}
if (button[0].getText().equals("X") && button[4].getText().equals("X") && button[8].getText().equals("X")) {
statement = false;
points_player+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
}
if (button[2].getText().equals("X") && button[5].getText().equals("X") && button[8].getText().equals("X")) {
statement = false;
points_player+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
}
if (button[2].getText().equals("X") && button[4].getText().equals("X") && button[6].getText().equals("X")) {
statement = false;
points_player+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
}
if (button[6].getText().equals("X") && button[7].getText().equals("X") && button[8].getText().equals("X")) {
points_player+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
}
if (button[3].getText().equals("X") && button[4].getText().equals("X") && button[5].getText().equals("X")) {
points_player+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
statement = false;
}
if (button[0].getText().equals("O") && button[4].getText().equals("O") && button[8].getText().equals("O")) {
points_computer+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
statement = false;
}
if (button[0].getText().equals("0") && button[1].getText().equals("0") && button[2].getText().equals("O")) {
points_computer+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
statement = false;
}
if (button[2].getText().equals("O") && button[4].getText().equals("O") && button[6].getText().equals("O")) {
points_computer+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
statement = false;
}
if (button[0].getText().equals("O") && button[3].getText().equals("O") && button[6].getText().equals("O")) {
textfield.setText("Computer have win!!!");
statement = false;
}
if (button[2].getText().equals(button[5].getText().equals(button[8].getText().equals("O")))) {
points_computer+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
statement = false;
}
if (button[6].getText().equals("O") && button[7].getText().equals("O") && button[8].getText().equals("O")) {
points_computer+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
statement = false;
}
if (button[3].getText().equals("O") && button[4].getText().equals("O") && button[5].getText().equals("O")) {
statement = false;
points_computer+=1;
textfield.setText("You have win!!! Player : "+points_player+" vs Computer : "+points_computer+" . ");
}
for (JButton b : button) {
if (!b.getText().equals("")) {
istrue = true;
}
}
if(istrue==true){
textfield.setText("You and the computer have the same level!!!");
statement = false;
}
}
@Override public void actionPerformed(ActionEvent e) { random.add(random_1 ); random.add(random_2); random.add(random_3); random.add(random_4); random.add(random_5); random.add(random_6); random.add(random_7); random.add(random_8); random.add(random_9);
for(int i=0;i<9;i++) {
statement=true;
if (e.getSource() == button[i]) {
if (statement) {
button[i].setText("X");
do {
button[random.get(i)].setText("O");
break;
} while (!button[i].getText().equals(""));
game_statement();
}
}
}
I thank you in advance for your help and explanation, hoping to find a solution to my problem. Sorry guys for my bad english.