TicTacToe AI Java

So, this is a college assignment, and quite a lot has been done, except that the AI ​​does not know how to “take the victory”, and its actions at the beginning are not as random as we would like, as they always turn the top corner and spend your way down. The assignment required only two rules for AI in the sense that it could “win” or “block the victory”.

Also, the game ends when the board is full. He asks me to choose my move.

I was hoping that some people might have suggestions on how I can improve him or point out where he is, I’m wrong.

Any help would be greatly appreciated.

Here is the game

import java.util.Scanner; public class play { public static void main(String[] args) { System.out.println("Welcome to Tickle Tackle Toe!!! :D"); System.out.println(); //creat markers String marker1 = "x"; String marker2 = "o"; boolean playAgain = true; Scanner s = new Scanner(System.in); //create player objects Human human = new Human(); Computer computer = new Computer(); while(playAgain){ //run board setup set Setup = new set(); Setup.createBoard(); Setup.printBoard(); System.out.println("please choose your marker"); System.out.println("type 1 for 'x' or 2 for 'o'"); //set markers if(s.nextInt() == 1){ // create player objects human.setMarker("x"); computer.setMarker("o"); } else { human.setMarker("o"); computer.setMarker("x"); } // determine who goes first int first = (int) (Math.random() * 2); boolean won = false; int turns = 0; if(first == 0){ System.out.println("You go first!"); System.out.println(); while(!won){ human.takeTurn(Setup.getBoard()); turns++; Setup.printBoard(); if(Setup.hasWon(Setup.getBoard())){ won = true; System.out.println("Congrats you won!"); } if(turns == 9){ won = true; System.out.println("Its a draw!"); break; } if(!won){ computer.takeTurn(Setup.getBoard(), human); turns++; System.out.println(); Setup.printBoard(); System.out.println(); if(Setup.hasWon(Setup.getBoard())){ won = true; System.out.println("You lost!"); } if(turns == 9){ won = true; System.out.println("Its a draw!"); break; } } } // close while 1 } else { System.out.println("Computer goes first!"); System.out.println(); while(!won){ computer.takeTurn(Setup.getBoard(), human); turns++; Setup.printBoard(); if(Setup.hasWon(Setup.getBoard())){ won = true; System.out.println("You lost!"); } if(!won){ human.takeTurn(Setup.getBoard()); turns++; System.out.println(); Setup.printBoard(); System.out.println(); if(Setup.hasWon(Setup.getBoard())){ won = true; System.out.println("Congrats you won!"); } } } // close while 2 } System.out.println("Would you like to play again? Type 1 for yes or 2 to quit"); System.out.println(); if(s.nextInt() == 2){ playAgain = false; } } } } 

And here is the computer class

 class Computer extends player { public Computer(){ } int boardsize = 3; public void takeTurn(String[][] board, Human human) { int vertical = 0; int horizontal = 0; int diagonal = 0; boolean mademove = false; // check if you can take a win horizontally for(int i = 0; i<3; i++){ if(board[0][i].equals(board[1][i]) && board[0][i].equals(Marker)){ if(board[2][i] != human.getMarker()){ board[2][i] = Marker; mademove = true; return; } } } for(int i = 0; i<3; i++){ if(board[2][i].equals(board[1][i]) && board[2][i].equals(Marker)){ if(board[0][i] != human.getMarker()){ board[0][i] = Marker; mademove = true; return; } } } // check if you can take a win vertically for(int i = 0; i<3; i++){ if(board[i][0].equals(board[i][1]) && board[i][0].equals(Marker)){ if(board[i][2] != human.getMarker()){ board[i][2] = Marker; mademove = true; return; } } } for(int i = 0; i<3; i++){ if(board[i][2].equals(board[i][1]) && board[i][2].equals(Marker)){ if(board[i][0] != human.getMarker()){ board[i][0] = Marker; mademove = true; return; } } } // check if you can take a win diagonally if(board[0][0].equals(board[1][1]) && board[0][0].equals(Marker)){ if(board[2][2] != human.getMarker()){ board[2][2] = Marker; mademove = true; return; } } if(board[2][2].equals(board[1][1]) && board[2][2].equals(Marker)){ if(board[0][0] != human.getMarker()){ board[0][0] = Marker; mademove = true; return; } } if(board[0][0].equals(board[1][1]) && board[0][0].equals(Marker)){ if(board[2][2] != human.getMarker()){ board[2][2] = Marker; mademove = true; return; } } if(board[0][2].equals(board[1][1]) && board[0][2].equals(Marker)){ if(board[2][0] != human.getMarker()){ board[2][0] = Marker; mademove = true; return; } } if(board[2][0].equals(board[1][1]) && board[2][0].equals(Marker)){ if(board[0][2] != human.getMarker()){ board[0][2] = Marker; mademove = true; return; } } // BLOCKS!!!! // // check if you can block a win horizontally for(int i = 0; i<3; i++){ if(board[0][i].equals(board[1][i]) && board[0][i].equals(human.getMarker())){ if(board[2][i] != Marker){ board[2][i] = Marker; mademove = true; return; } } } for(int i = 0; i<3; i++){ if(board[2][i].equals(board[1][i]) && board[0][i].equals(human.getMarker())){ if(board[0][i] != Marker){ board[0][i] = Marker; mademove = true; return; } } } // check if you can block a win horizontally for(int i = 0; i<3; i++){ if(board[i][0].equals(board[i][1]) && board[i][0].equals(human.getMarker())){ if(board[i][2] != Marker){ board[i][2] = Marker; mademove = true; return; } } } for(int i = 0; i<3; i++){ if(board[i][2].equals(board[i][1]) && board[i][2].equals(human.getMarker())){ if(board[i][0] != Marker){ board[i][0] = Marker; mademove = true; return; } } } // check if you can block a win diagonally if(board[0][0].equals(board[1][1]) && board[0][0].equals(human.getMarker())){ if(board[2][2] != Marker){ board[2][2] = Marker; mademove = true; return; } } if(board[2][2].equals(board[1][1]) && board[2][2].equals(human.getMarker())){ if(board[0][0] != Marker){ board[0][0] = Marker; mademove = true; return; } } if(board[0][0].equals(board[1][1]) && board[0][0].equals(human.getMarker())){ board[2][2] = Marker; mademove = true; return; } if(board[0][2].equals(board[1][1]) && board[0][2].equals(human.getMarker())){ if(board[2][0] != Marker){ board[2][0] = Marker; mademove = true; return; } } if(board[2][0].equals(board[1][1]) && board[2][0].equals(human.getMarker())){ if(board[0][2] != Marker){ board[0][2] = Marker; mademove = true; return; } } // make random move if above rules dont apply for(int i = 0; i<3; i++){ if(board[i][0] != "x" && board[i][0] != "o"){ board[i][0] = Marker; return; } } for(int i = 0; i<3; i++){ if(board[i][1] != "x" && board[i][0] != "o"){ board[i][1] = Marker; return; } } for(int i = 0; i<3; i++){ if(board[i][2] != "x" && board[i][0] != "o"){ board[i][2] = Marker; return; } } } } 
+4
source share
4 answers

So, I thought I would be back after searching for the old code that I did for this, and answer how I did it.

He is probably still far from perfect, but he is very close.

I started with a very simple class of players who received and set tokens.

 public class player { public String Marker; // set marker method public void setMarker(String marker){ Marker = marker; } //get marker method public String getMarker(){ return Marker; } } 

Then I added a set class that will configure and print the board after each move.

 import java.util.Random; import java.util.Scanner; public class set { // setup variables default board size and board private int N = 3; public String[][] board = new String [N][N]; public boolean hasWon (String [] [] board){ //horizontal for(int i = 0; i<3; i++){ if(board[i][0].equals(board[i][1]) && board[i][1].equals(board[i][2])){ return true; } } //vertical for(int i = 0; i<3; i++){ if(board [0][i].equals(board[1][i]) && board[1][i].equals(board[2][i])){ return true; } } //diagonal if(board[0][0].equals(board[1][1]) && board[1][1].equals(board[2][2]) || board[2][0].equals(board[1][1]) && board[1][1].equals(board[0][2])) return true; return false; } int x = 1; public void createBoard(){ for(int i = 0; i < board.length; i++){ for(int j = 0; j < board.length; j++){ board[i][j] = "" + (x); x++; } } } public void printBoard(){ for(int i = 0; i < board.length; i++){ for(int j = 0; j < board.length; j++){ System.out.print("[" + board[i][j] + "]" + " "); } System.out.println(); } } public String[][] getBoard(){ return board; } } 

Computer class with AI.

 class Computer extends player { public Computer(){ } int boardsize = 3; public void takeTurn(String[][] board, Human human) { int vertical = 0; int horizontal = 0; int diagonal = 0; boolean mademove = false; // check if you can take a win horizontally for(int i = 0; i<3; i++){ if(board[0][i].equals(board[1][i]) && board[0][i].equals(Marker)){ if(board[2][i] != human.getMarker() && board[2][i] != Marker){ board[2][i] = Marker; mademove = true; return; } } } for(int i = 0; i<3; i++){ if(board[2][i].equals(board[1][i]) && board[2][i].equals(Marker)){ if(board[0][i] != human.getMarker() && board[0][i] != Marker){ board[0][i] = Marker; mademove = true; return; } } } // check if you can take a win horizontally for(int i = 0; i<3; i++){ if(board[i][0].equals(board[i][1]) && board[i][0].equals(Marker)){ if(board[i][2] != human.getMarker() && board[i][2] != Marker){ board[i][2] = Marker; mademove = true; return; } } } for(int i = 0; i<3; i++){ if(board[i][2].equals(board[i][1]) && board[i][2].equals(Marker)){ if(board[i][0] != human.getMarker() && board[i][0] != Marker){ board[i][0] = Marker; mademove = true; return; } } } // check if you can take a win diagonally bottom if(board[0][0].equals(board[1][1]) && board[0][0].equals(Marker)){ if(board[2][2] != human.getMarker() && board[2][2] != Marker){ board[2][2] = Marker; mademove = true; return; } } if(board[2][2].equals(board[1][1]) && board[2][2].equals(Marker)){ if(board[0][0] != human.getMarker() && board[0][0] != Marker){ board[0][0] = Marker; mademove = true; return; } } if(board[0][0].equals(board[1][1]) && board[0][0].equals(Marker)){ if(board[2][2] != human.getMarker() && board[2][2] != Marker){ board[2][2] = Marker; mademove = true; return; } } if(board[0][2].equals(board[1][1]) && board[0][2].equals(Marker)){ if(board[2][0] != human.getMarker() && board[2][0] != Marker){ board[2][0] = Marker; mademove = true; return; } } if(board[2][0].equals(board[1][1]) && board[2][0].equals(Marker)){ if(board[0][2] != human.getMarker() && board[0][2] != Marker){ board[0][2] = Marker; mademove = true; return; } } // BLOCKS!!!! // // check if you can block a win horizontally for(int i = 0; i<3; i++){ if(board[0][i].equals(board[1][i]) && board[0][i].equals(human.getMarker())){ if(board[2][i] != Marker && board[2][i] != human.getMarker()){ board[2][i] = Marker; mademove = true; return; } } } for(int i = 0; i<3; i++){ if(board[2][i].equals(board[1][i]) && board[0][i].equals(human.getMarker())){ if(board[0][i] != Marker && board[0][i] != human.getMarker()){ board[0][i] = Marker; mademove = true; return; } } } // check if you can block a win vertically for(int i = 0; i<3; i++){ if(board[i][0].equals(board[i][1]) && board[i][0].equals(human.getMarker())){ if(board[i][2] != Marker && board[i][2] != human.getMarker()){ board[i][2] = Marker; mademove = true; return; } } } for(int i = 0; i<3; i++){ if(board[i][2].equals(board[i][1]) && board[i][2].equals(human.getMarker())){ if(board[i][0] != Marker && board[i][0] != human.getMarker()){ board[i][0] = Marker; mademove = true; return; } } } for(int i = 0; i<3; i++){ if(board[2][i].equals(board[1][i]) && board[2][i].equals(human.getMarker())){ if(board[0][i] != Marker && board[0][i] != human.getMarker()){ board[0][i] = Marker; mademove = true; return; } } } // check if you can block a win diagonally if(board[0][0].equals(board[1][1]) && board[0][0].equals(human.getMarker())){ if(board[2][2] != Marker && board[2][2] != human.getMarker()){ board[2][2] = Marker; mademove = true; return; } } if(board[2][2].equals(board[1][1]) && board[2][2].equals(human.getMarker())){ if(board[0][0] != Marker && board[0][0] != human.getMarker()){ board[0][0] = Marker; mademove = true; return; } } if(board[0][0].equals(board[1][1]) && board[0][0].equals(human.getMarker())){ if(board[2][2] != Marker && board[2][2] != human.getMarker()){ board[2][2] = Marker; mademove = true; return; } } if(board[0][2].equals(board[1][1]) && board[0][2].equals(human.getMarker())){ if(board[2][0] != Marker && board[2][0] != human.getMarker()){ board[2][0] = Marker; mademove = true; return; } } if(board[2][0].equals(board[1][1]) && board[2][0].equals(human.getMarker())){ if(board[0][2] != Marker && board[0][2] != human.getMarker()){ board[0][2] = Marker; mademove = true; return; } } // make random move if above rules dont apply int rand1 = 0; int rand2 = 0; while(!mademove){ rand1 = (int) (Math.random() * 3); rand2 = (int) (Math.random() * 3); if(board[rand1][rand2] != "x" && board[rand1][rand2] != "o"){ board[rand1][rand2] = Marker; mademove = true; } } } 

}

Class man

 import java.util.Scanner; 

class Man extends player {

 public Human(){ } public void takeTurn(String[][] board) { Scanner s = new Scanner(System.in); boolean turn = true; while(turn){ System.out.println("please enter row"); int row = s.nextInt(); System.out.println("please enter col"); int col = s.nextInt(); System.out.print("you entered "+row+" "+col); System.out.println(); if(board[row - 1][col - 1] != "x" && board[row - 1][col - 1] != "o"){ board[row - 1][col - 1] = Marker; turn = false; } // closes if else { System.out.println("Already Marker here! please guess again!"); } } // ends while } // ends method } // ends class 

Finally, a game of play.

  import java.util.Scanner; public class play { public static void main(String[] args) { System.out.println("Welcome to Tickle Tackle Toe!!! :D"); System.out.println(); //creat markers String marker1 = "x"; String marker2 = "o"; boolean playAgain = true; Scanner s = new Scanner(System.in); //create player objects Human human = new Human(); Computer computer = new Computer(); while(playAgain){ //run board setup set Setup = new set(); Setup.createBoard(); Setup.printBoard(); System.out.println("please choose your marker"); System.out.println("type 1 for 'x' or 2 for 'o'"); //set markers if(s.nextInt() == 1){ // create player objects human.setMarker("x"); computer.setMarker("o"); } else { human.setMarker("o"); computer.setMarker("x"); } // determine who goes first int first = (int) (Math.random() * 2); boolean won = false; int turns = 0; if(first == 0){ System.out.println("You gots the winz!"); System.out.println(); while(!won){ human.takeTurn(Setup.getBoard()); turns++; Setup.printBoard(); if(Setup.hasWon(Setup.getBoard())){ won = true; System.out.println("Congrats you won!"); } if(turns == 9){ won = true; System.out.println("Its a bore draw!"); break; } if(!won){ computer.takeTurn(Setup.getBoard(), human); turns++; System.out.println(); Setup.printBoard(); System.out.println(); if(Setup.hasWon(Setup.getBoard())){ won = true; System.out.println("You just got pwned by an AI with an incomplete rule set. FACEPALM."); } if(turns == 9){ won = true; System.out.println("Its a bore draw!"); break; } } } // close while 1 } else { System.out.println("Computer goes first!"); System.out.println(); while(!won){ computer.takeTurn(Setup.getBoard(), human); turns++; Setup.printBoard(); if(Setup.hasWon(Setup.getBoard())){ won = true; System.out.println("You just got pwned by an AI with an incomplete rule set. FACEPALM."); } if(turns == 9){ won = true; System.out.println("Its a draw!"); break; } if(!won){ human.takeTurn(Setup.getBoard()); turns++; System.out.println(); Setup.printBoard(); System.out.println(); if(Setup.hasWon(Setup.getBoard())){ won = true; System.out.println("You gots the winz!"); } if(turns == 9){ won = true; System.out.println("Its a draw!"); break; } } } // close while 2 } System.out.println("Would you like to play again? Type 1 for yes or 2 to quit"); System.out.println(); if(s.nextInt() == 2){ playAgain = false; } } } } 
+1
source

If you win by placing the ninth piece, you will get both “you won” and “it's a draw!”. messages, I do not think the intended behavior. The same thing if you lose for the ninth time. On the other hand, nobody draws a code when no one has won, so the game does not end. This is easy to fix:

 if(!won){ computer.takeTurn(Setup.getBoard(), human); turns++; System.out.println(); Setup.printBoard(); System.out.println(); if(Setup.hasWon(Setup.getBoard())){ won = true; System.out.println("You lost!"); } else if (turns == 9){ won = true; System.out.println("Its a draw!"); } } 

About creating random moves, your current code goes through all nine fragments, places the marker in the first empty place it encounters, and then returns. What you want is to make a list of all the empty spaces, and then randomly select one of them. Alternatively, continue to generate x and y coordinates between 0 and 2, check to see if it is empty and if a marker is placed.

+2
source

tttc is an object of my TicTacToeComputer class,
button [] is defined on the TicTacToeComputer,
TicTacToePlayer is my other class having a static int variable 'count',
TicTacToePlayer with three boolean static variables name winX, winY and win,

  static void move() // easiest way for move method for Artificial intelligence and study how its work and then you can use loops optimize for the code { if ((tttc.button[0].getText().equals("O")) && (tttc.button[1].getText().equals("O")) && (tttc.button[2].getText().equals(""))) { tttc.button[2].setText(TicTacToeComputer.letterO); tttc.button[2].setIcon(new ImageIcon("o.gif")); tttc.button[2].setEnabled(false); } else if ((tttc.button[3].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[5].getText().equals(""))) { tttc.button[5].setText(TicTacToeComputer.letterO); tttc.button[5].setIcon(new ImageIcon("o.gif")); tttc.button[5].setEnabled(false); } else if ((tttc.button[6].getText().equals("O")) && (tttc.button[7].getText().equals("O")) && (tttc.button[8].getText().equals(""))) { tttc.button[8].setText(TicTacToeComputer.letterO); tttc.button[8].setIcon(new ImageIcon("o.gif")); tttc.button[8].setEnabled(false); } else if ((tttc.button[1].getText().equals("O")) && (tttc.button[2].getText().equals("O")) && (tttc.button[0].getText().equals(""))) { tttc.button[0].setText(TicTacToeComputer.letterO); tttc.button[0].setIcon(new ImageIcon("o.gif")); tttc.button[0].setEnabled(false); } else if ((tttc.button[4].getText().equals("O")) && (tttc.button[5].getText().equals("O")) && (tttc.button[3].getText().equals(""))) { tttc.button[3].setText(TicTacToeComputer.letterO); tttc.button[3].setIcon(new ImageIcon("o.gif")); tttc.button[3].setEnabled(false); } else if ((tttc.button[7].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[6].getText().equals(""))) { tttc.button[6].setText(TicTacToeComputer.letterO); tttc.button[6].setIcon(new ImageIcon("o.gif")); tttc.button[6].setEnabled(false); } else if ((tttc.button[0].getText().equals("O")) && (tttc.button[2].getText().equals("O")) && (tttc.button[1].getText().equals(""))) { tttc.button[1].setText(TicTacToeComputer.letterO); tttc.button[1].setIcon(new ImageIcon("o.gif")); tttc.button[1].setEnabled(false); } else if ((tttc.button[3].getText().equals("O")) && (tttc.button[5].getText().equals("O")) && (tttc.button[4].getText().equals(""))) { tttc.button[4].setText(TicTacToeComputer.letterO); tttc.button[4].setIcon(new ImageIcon("o.gif")); tttc.button[4].setEnabled(false); } else if ((tttc.button[6].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[7].getText().equals(""))) { tttc.button[7].setText(TicTacToeComputer.letterO); tttc.button[7].setIcon(new ImageIcon("o.gif")); tttc.button[7].setEnabled(false); } else if ((tttc.button[0].getText().equals("O")) && (tttc.button[3].getText().equals("O")) && (tttc.button[6].getText().equals(""))) { tttc.button[6].setText(TicTacToeComputer.letterO); tttc.button[6].setIcon(new ImageIcon("o.gif")); tttc.button[6].setEnabled(false); } else if ((tttc.button[1].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[7].getText().equals(""))) { tttc.button[7].setText(TicTacToeComputer.letterO); tttc.button[7].setIcon(new ImageIcon("o.gif")); tttc.button[7].setEnabled(false); } else if ((tttc.button[2].getText().equals("O")) && (tttc.button[5].getText().equals("O")) && (tttc.button[8].getText().equals(""))) { tttc.button[8].setText(TicTacToeComputer.letterO); tttc.button[8].setIcon(new ImageIcon("o.gif")); tttc.button[8].setEnabled(false); } else if ((tttc.button[3].getText().equals("O")) && (tttc.button[6].getText().equals("O")) && (tttc.button[0].getText().equals(""))) { tttc.button[0].setText(TicTacToeComputer.letterO); tttc.button[0].setIcon(new ImageIcon("o.gif")); tttc.button[0].setEnabled(false); } else if ((tttc.button[4].getText().equals("O")) && (tttc.button[7].getText().equals("O")) && (tttc.button[1].getText().equals(""))) { tttc.button[1].setText(TicTacToeComputer.letterO); tttc.button[1].setIcon(new ImageIcon("o.gif")); tttc.button[1].setEnabled(false); } else if ((tttc.button[5].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[2].getText().equals(""))) { tttc.button[2].setText(TicTacToeComputer.letterO); tttc.button[2].setIcon(new ImageIcon("o.gif")); tttc.button[2].setEnabled(false); } else if ((tttc.button[0].getText().equals("O")) && (tttc.button[6].getText().equals("O")) && (tttc.button[3].getText().equals(""))) { tttc.button[3].setText(TicTacToeComputer.letterO); tttc.button[3].setIcon(new ImageIcon("o.gif")); tttc.button[3].setEnabled(false); } else if ((tttc.button[1].getText().equals("O")) && (tttc.button[7].getText().equals("O")) && (tttc.button[4].getText().equals(""))) { tttc.button[4].setText(TicTacToeComputer.letterO); tttc.button[4].setIcon(new ImageIcon("o.gif")); tttc.button[4].setEnabled(false); } else if ((tttc.button[2].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[5].getText().equals(""))) { tttc.button[5].setText(TicTacToeComputer.letterO); tttc.button[5].setIcon(new ImageIcon("o.gif")); tttc.button[5].setEnabled(false); } else if ((tttc.button[0].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[8].getText().equals(""))) { tttc.button[8].setText(TicTacToeComputer.letterO); tttc.button[8].setIcon(new ImageIcon("o.gif")); tttc.button[8].setEnabled(false); } else if ((tttc.button[4].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[0].getText().equals(""))) { tttc.button[0].setText(TicTacToeComputer.letterO); tttc.button[0].setIcon(new ImageIcon("o.gif")); tttc.button[0].setEnabled(false); } else if ((tttc.button[0].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[4].getText().equals(""))) { tttc.button[4].setText(TicTacToeComputer.letterO); tttc.button[4].setIcon(new ImageIcon("o.gif")); tttc.button[4].setEnabled(false); } else if ((tttc.button[2].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[6].getText().equals(""))) { tttc.button[6].setText(TicTacToeComputer.letterO); tttc.button[6].setIcon(new ImageIcon("o.gif")); tttc.button[6].setEnabled(false); } else if ((tttc.button[6].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[2].getText().equals(""))) { tttc.button[2].setText(TicTacToeComputer.letterO); tttc.button[2].setIcon(new ImageIcon("o.gif")); tttc.button[2].setEnabled(false); } else if ((tttc.button[6].getText().equals("O")) && (tttc.button[2].getText().equals("O")) && (tttc.button[4].getText().equals(""))) { tttc.button[4].setText(TicTacToeComputer.letterO); tttc.button[4].setIcon(new ImageIcon("o.gif")); tttc.button[4].setEnabled(false); } if ((tttc.button[0].getText().equals("X")) && (tttc.button[1].getText().equals("X")) && (tttc.button[2].getText().equals(""))) { tttc.button[2].setText(TicTacToeComputer.letterO); tttc.button[2].setIcon(new ImageIcon("o.gif")); tttc.button[2].setEnabled(false); } else if ((tttc.button[3].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[5].getText().equals(""))) { tttc.button[5].setText(TicTacToeComputer.letterO); tttc.button[5].setIcon(new ImageIcon("o.gif")); tttc.button[5].setEnabled(false); } else if ((tttc.button[6].getText().equals("X")) && (tttc.button[7].getText().equals("X")) && (tttc.button[8].getText().equals(""))) { tttc.button[8].setText(TicTacToeComputer.letterO); tttc.button[8].setIcon(new ImageIcon("o.gif")); tttc.button[8].setEnabled(false); } else if ((tttc.button[1].getText().equals("X")) && (tttc.button[2].getText().equals("X")) && (tttc.button[0].getText().equals(""))) { tttc.button[0].setText(TicTacToeComputer.letterO); tttc.button[0].setIcon(new ImageIcon("o.gif")); tttc.button[0].setEnabled(false); } else if ((tttc.button[4].getText().equals("X")) && (tttc.button[5].getText().equals("X")) && (tttc.button[3].getText().equals(""))) { tttc.button[3].setText(TicTacToeComputer.letterO); tttc.button[3].setIcon(new ImageIcon("o.gif")); tttc.button[3].setEnabled(false); } else if ((tttc.button[7].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[6].getText().equals(""))) { tttc.button[6].setText(TicTacToeComputer.letterO); tttc.button[6].setIcon(new ImageIcon("o.gif")); tttc.button[6].setEnabled(false); } else if ((tttc.button[0].getText().equals("X")) && (tttc.button[2].getText().equals("X")) && (tttc.button[1].getText().equals(""))) { tttc.button[1].setText(TicTacToeComputer.letterO); tttc.button[1].setIcon(new ImageIcon("o.gif")); tttc.button[1].setEnabled(false); } else if ((tttc.button[3].getText().equals("X")) && (tttc.button[5].getText().equals("X")) && (tttc.button[4].getText().equals(""))) { tttc.button[4].setText(TicTacToeComputer.letterO); tttc.button[4].setIcon(new ImageIcon("o.gif")); tttc.button[4].setEnabled(false); } else if ((tttc.button[6].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[7].getText().equals(""))) { tttc.button[7].setText(TicTacToeComputer.letterO); tttc.button[7].setIcon(new ImageIcon("o.gif")); tttc.button[7].setEnabled(false); } else if ((tttc.button[0].getText().equals("X")) && (tttc.button[3].getText().equals("X")) && (tttc.button[6].getText().equals(""))) { tttc.button[6].setText(TicTacToeComputer.letterO); tttc.button[6].setIcon(new ImageIcon("o.gif")); tttc.button[6].setEnabled(false); } else if ((tttc.button[1].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[7].getText().equals(""))) { tttc.button[7].setText(TicTacToeComputer.letterO); tttc.button[7].setIcon(new ImageIcon("o.gif")); tttc.button[7].setEnabled(false); } else if ((tttc.button[2].getText().equals("X")) && (tttc.button[5].getText().equals("X")) && (tttc.button[8].getText().equals(""))) { tttc.button[8].setText(TicTacToeComputer.letterO); tttc.button[8].setIcon(new ImageIcon("o.gif")); tttc.button[8].setEnabled(false); } else if ((tttc.button[3].getText().equals("X")) && (tttc.button[6].getText().equals("X")) && (tttc.button[0].getText().equals(""))) { tttc.button[0].setText(TicTacToeComputer.letterO); tttc.button[0].setIcon(new ImageIcon("o.gif")); tttc.button[0].setEnabled(false); } else if ((tttc.button[4].getText().equals("X")) && (tttc.button[7].getText().equals("X")) && (tttc.button[1].getText().equals(""))) { tttc.button[1].setText(TicTacToeComputer.letterO); tttc.button[1].setIcon(new ImageIcon("o.gif")); tttc.button[1].setEnabled(false); } else if ((tttc.button[5].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[2].getText().equals(""))) { tttc.button[2].setText(TicTacToeComputer.letterO); tttc.button[2].setIcon(new ImageIcon("o.gif")); tttc.button[2].setEnabled(false); } else if ((tttc.button[0].getText().equals("X")) && (tttc.button[6].getText().equals("X")) && (tttc.button[3].getText().equals(""))) { tttc.button[3].setText(TicTacToeComputer.letterO); tttc.button[3].setIcon(new ImageIcon("o.gif")); tttc.button[3].setEnabled(false); } else if ((tttc.button[1].getText().equals("X")) && (tttc.button[7].getText().equals("X")) && (tttc.button[4].getText().equals(""))) { tttc.button[4].setText(TicTacToeComputer.letterO); tttc.button[4].setIcon(new ImageIcon("o.gif")); tttc.button[4].setEnabled(false); } else if ((tttc.button[2].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[5].getText().equals(""))) { tttc.button[5].setText(TicTacToeComputer.letterO); tttc.button[5].setIcon(new ImageIcon("o.gif")); tttc.button[5].setEnabled(false); } else if ((tttc.button[0].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[8].getText().equals(""))) { tttc.button[8].setText(TicTacToeComputer.letterO); tttc.button[8].setIcon(new ImageIcon("o.gif")); tttc.button[8].setEnabled(false); } else if ((tttc.button[4].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[0].getText().equals(""))) { tttc.button[0].setText(TicTacToeComputer.letterO); tttc.button[0].setIcon(new ImageIcon("o.gif")); tttc.button[0].setEnabled(false); } else if ((tttc.button[0].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[4].getText().equals(""))) { tttc.button[4].setText(TicTacToeComputer.letterO); tttc.button[4].setIcon(new ImageIcon("o.gif")); tttc.button[4].setEnabled(false); } else if ((tttc.button[2].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[6].getText().equals(""))) { tttc.button[6].setText(TicTacToeComputer.letterO); tttc.button[6].setIcon(new ImageIcon("o.gif")); tttc.button[6].setEnabled(false); } else if ((tttc.button[6].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[2].getText().equals(""))) { tttc.button[2].setText(TicTacToeComputer.letterO); tttc.button[2].setIcon(new ImageIcon("o.gif")); tttc.button[2].setEnabled(false); } else if ((tttc.button[6].getText().equals("X")) && (tttc.button[2].getText().equals("X")) && (tttc.button[4].getText().equals(""))) { tttc.button[4].setText(TicTacToeComputer.letterO); tttc.button[4].setIcon(new ImageIcon("o.gif")); tttc.button[4].setEnabled(false); } else if ((tttc.button[0].getText().equals("X")) && (tttc.button[4].getText().equals("O")) && (tttc.button[8].getText().equals("X"))) { tttc.button[5].setText(TicTacToeComputer.letterO); tttc.button[5].setIcon(new ImageIcon("o.gif")); tttc.button[5].setEnabled(false); } else if ((tttc.button[2].getText().equals("X")) && (tttc.button[4].getText().equals("O")) && (tttc.button[6].getText().equals("X"))) { tttc.button[3].setText(TicTacToeComputer.letterO); tttc.button[3].setIcon(new ImageIcon("o.gif")); tttc.button[3].setEnabled(false); } else if (tttc.button[4].getText().equals("")) { tttc.button[4].setText(TicTacToeComputer.letterO); tttc.button[4].setIcon(new ImageIcon("o.gif")); tttc.button[4].setEnabled(false); } else if (tttc.button[0].getText().equals("")) { tttc.button[0].setText(TicTacToeComputer.letterO); tttc.button[0].setIcon(new ImageIcon("o.gif")); tttc.button[0].setEnabled(false); } else { random(); } } static void random() // random method so that player and computer both have chance to win { if (TicTacToePlayer.count < 9) { int i = 0; while (i == 0) { i = (int)(Math.random() * 9.0D); } if (doRandomMove(tttc.button[i])) { tttc.button[i].setText(TicTacToeComputer.letterO); tttc.button[i].setIcon(new ImageIcon("o.gif")); tttc.button[i].setEnabled(false); } else { random(); } } } public static boolean doRandomMove(JButton paramJButton) { if ((paramJButton.getText().equals("O")) || (paramJButton.getText().equals("X"))) { return false; } return true; } static void checkComputerWin() { if ((tttc.button[0].getText() == "X") && (tttc.button[1].getText() == "X") && (tttc.button[2].getText() == "X")) { TicTacToePlayer.winX = true; } else if ((tttc.button[3].getText() == "X") && (tttc.button[4].getText() == "X") && (tttc.button[5].getText() == "X")) { TicTacToePlayer.winX = true; } else if ((tttc.button[6].getText() == "X") && (tttc.button[7].getText() == "X") && (tttc.button[8].getText() == "X")) { TicTacToePlayer.winX = true; } else if ((tttc.button[0].getText() == "X") && (tttc.button[3].getText() == "X") && (tttc.button[6].getText() == "X")) { TicTacToePlayer.winX = true; } else if ((tttc.button[1].getText() == "X") && (tttc.button[4].getText() == "X") && (tttc.button[7].getText() == "X")) { TicTacToePlayer.winX = true; } else if ((tttc.button[2].getText() == "X") && (tttc.button[5].getText() == "X") && (tttc.button[8].getText() == "X")) { TicTacToePlayer.winX = true; } else if ((tttc.button[0].getText() == "X") && (tttc.button[4].getText() == "X") && (tttc.button[8].getText() == "X")) { TicTacToePlayer.winX = true; } else if ((tttc.button[2].getText() == "X") && (tttc.button[4].getText() == "X") && (tttc.button[6].getText() == "X")) { TicTacToePlayer.winX = true; } else if ((tttc.button[0].getText() == "O") && (tttc.button[1].getText() == "O") && (tttc.button[2].getText() == "O")) { TicTacToePlayer.winO = true; } else if ((tttc.button[3].getText() == "O") && (tttc.button[4].getText() == "O") && (tttc.button[5].getText() == "O")) { TicTacToePlayer.winO = true; } else if ((tttc.button[6].getText() == "O") && (tttc.button[7].getText() == "O") && (tttc.button[8].getText() == "O")) { TicTacToePlayer.winO = true; } else if ((tttc.button[0].getText() == "O") && (tttc.button[3].getText() == "O") && (tttc.button[6].getText() == "O")) { TicTacToePlayer.winO = true; } else if ((tttc.button[1].getText() == "O") && (tttc.button[4].getText() == "O") && (tttc.button[7].getText() == "O")) { TicTacToePlayer.winO = true; } else if ((tttc.button[2].getText() == "O") && (tttc.button[5].getText() == "O") && (tttc.button[8].getText() == "O")) { TicTacToePlayer.winO = true; } else if ((tttc.button[0].getText() == "O") && (tttc.button[4].getText() == "O") && (tttc.button[8].getText() == "O")) { TicTacToePlayer.winO = true; } else if ((tttc.button[2].getText() == "O") && (tttc.button[4].getText() == "O") && (tttc.button[6].getText() == "O")) { TicTacToePlayer.winO = true; } else { TicTacToePlayer.win = false; TicTacToePlayer.count += 1; } if ((!TicTacToePlayer.win) && (TicTacToePlayer.count > 8)) { ImageIcon localImageIcon1 = new ImageIcon("cry.gif"); JOptionPane.showMessageDialog(null, "The game was tie!", "Tie Game", 0, localImageIcon1); ImageIcon localImageIcon2 = new ImageIcon("newgame.gif"); int i = JOptionPane.showConfirmDialog(null, "Start", "Do you want to start a New Game ?", 0, 0, localImageIcon2); if (i == 0) { TicTacToePlayer.count = 0; tttc.setVisible(false); new TicTacToeComputer("Wanna Play TicTacToe...!!!"); } else { ImageIcon localImageIcon3 = new ImageIcon("bye.gif"); JOptionPane.showMessageDialog(null, "Thank you " + TicTacToePlayer.x + " and " + TicTacToePlayer.z + " for playing", "Thank You", 1, localImageIcon3); System.exit(0); } } if (TicTacToePlayer.winX == true) { TicTacToePlayer.count = 0; tttc.setVisible(false); new AnimationComputerX(); TicTacToePlayer.winX = false; } if (TicTacToePlayer.winO == true) { TicTacToePlayer.count = 0; tttc.setVisible(false); new AnimationComputerO(); TicTacToePlayer.winO = false; } } 

Happy coding :) RChadZ

0
source
 //diagonal if(board[0][0].equals(board[1][1]) && board[1][1].equals(board[2][2]) || board[2][0].equals(board[1][1]) && board[1][1].equals(board[0][2])) { return true;} // <<<<<you forgot the {} ^_^ return false; } 
-1
source

Source: https://habr.com/ru/post/1413082/


All Articles