I need help creating an AI for a TicTacToe game programmed i
I need help creating an AI for a Tic-Tac-Toe game programmed in JAVA. It is a human vs computer game, how do I create an AI?
Computer must be aggressive and take every opportunity to win the game, block the user from winning and if the human makes a mistake, then the computer will capitalize on it and win if possible.
Also no infinite loops for(;;) while(true)
Thank you.
Solution
Answer:
import java.util.*;
public class TicTacToeGame
 {
 private int counter;
 private char location[]=new char[10];
 private char player;
   
   
 public static void main(String args[])
 {
 String ch;
 TicTacToeGame Toe=new TicTacToeGame();
 do{
 Toe.beginBoard();
 Toe.play_game();
 System.out.println (\"Press Y to play the game again \");
 Scanner in =new Scanner(System.in);
 ch=in.nextLine();
 System.out.println(\"ch value is \"+ch);
 }while (ch.equals(\"Y\"));
   
   
 }
 public void beginBoard()
 {
   
 char locationdef[] = {\'0\',\'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\'};
 int i;
 counter = 0;
 player = \'X\';
 for (i=1; i<10; i++) location[i]=locationdef[i];
 presentBoard();
   
   
 }
 public String presentBoard()
 {
 System.out.println( \"\ \ \" );
 System.out.println( \"\ \ \" );
 System.out.println( \"\ \ \\t\\t\" + location [1] + \" | \" +location [2]+ \" | \" +location [3]);
 System.out.println( \" \\t\\t | | \" );
 System.out.println( \" \\t\\t ___|____|___ \" );
 System.out.println( \"\ \ \\t\\t\" +location [4]+ \" | \" +location [5]+ \" | \" +location [6]);
 System.out.println( \" \\t\\t | | \" );
 System.out.println( \" \\t\\t ___|____|___ \" );
 System.out.println( \"\ \ \\t\\t\" +location [7]+ \" | \" +location [8]+ \" | \" +location [9]);
 System.out.println( \" \\t\\t | | \" );
 System.out.println( \" \\t\\t | | \" );
 System.out.println( \"\ \ \" );
 return \"presentBoard\";
 }
   
 public void play_game()
 {
 int spot;
 char blank = \' \';
   
 System.out.println( \"Player \" + getPlayer() +\" will go first and be the letter \'X\'\" );
   
 do {
 presentBoard();
   
 System.out.println( \"\ \  Player \" + getPlayer() +\" choose a location.\" );
   
 boolean posTaken = true;
 while (posTaken) {
   
 Scanner in =new Scanner (System.in);
 spot=in.nextInt();
 posTaken = checklocation(spot);
 if(posTaken==false)
 location[spot]=getPlayer();
 }
   
 System.out.println( \"Nice move.\" );
   
 presentBoard();
   
 nextPlayer();
 }while ( getWinner() == blank );
   
 }
   
 public char getWinner()
 {
 char Winner = \' \';
   
   
 if (location[1] == \'X\' && location[2] == \'X\' && location[3] == \'X\') Winner = \'X\';
 if (location[4] == \'X\' && location[5] == \'X\' && location[6] == \'X\') Winner = \'X\';
 if (location[7] == \'X\' && location[8] == \'X\' && location[9] == \'X\') Winner = \'X\';
 if (location[1] == \'X\' && location[4] == \'X\' && location[7] == \'X\') Winner = \'X\';
 if (location[2] == \'X\' && location[5] == \'X\' && location[8] == \'X\') Winner = \'X\';
 if (location[3] == \'X\' && location[6] == \'X\' && location[9] == \'X\') Winner = \'X\';
 if (location[1] == \'X\' && location[5] == \'X\' && location[9] == \'X\') Winner = \'X\';
 if (location[3] == \'X\' && location[5] == \'X\' && location[7] == \'X\') Winner = \'X\';
 if (Winner == \'X\' )
 {System.out.println(\"Player1 wins the game.\" );
 return Winner;
 }
   
   
 if (location[1] == \'O\' && location[2] == \'O\' && location[3] == \'O\') Winner = \'O\';
 if (location[4] == \'O\' && location[5] == \'O\' && location[6] == \'O\') Winner = \'O\';
 if (location[7] == \'O\' && location[8] == \'O\' && location[9] == \'O\') Winner = \'O\';
 if (location[1] == \'O\' && location[4] == \'O\' && location[7] == \'O\') Winner = \'O\';
 if (location[2] == \'O\' && location[5] == \'O\' && location[8] == \'O\') Winner = \'O\';
 if (location[3] == \'O\' && location[6] == \'O\' && location[9] == \'O\') Winner = \'O\';
 if (location[1] == \'O\' && location[5] == \'O\' && location[9] == \'O\') Winner = \'O\';
 if (location[3] == \'O\' && location[5] == \'O\' && location[7] == \'O\') Winner = \'O\';
 if (Winner == \'O\' )
 {
 System.out.println( \"Player2 wins the game.\" );
 return Winner; }
   
 
 for(int i=1;i<10;i++)
 {
 if(location[i]==\'X\' || location[i]==\'O\')
 {
 if(i==9)
 {
 char Draw=\'D\';
 System.out.println(\" Game is stalemate \");
 return Draw;
 }
 continue;
 }
 else
 break;
   
 }
   
 return Winner;
 }
   
 public boolean checklocation(int spot)
 {
   
   
 if (location[spot] == \'X\' || location[spot] == \'O\')
 {
 System.out.println(\"That location is already taken, please choose another\");
 return true;
 }
 else {
 return false;
 }
   
   
   
 }
   
   
   
 public void nextPlayer()
 {
 if (player == \'X\')
 player = \'O\';
 else player = \'X\';
   
 }
   
 public String getTitle()
 {
 return \"Tic Tac Toe\" ;
 }
   
 public char getPlayer()
 {
 return player;
 }
   
 }




