import java.lang.*; import java.io.*; import java.net.*; public class TTT { public static char[] game = new char[9]; public static boolean Running = true; public static char move_letter = 'X'; public static int move_position = 0; // network variables. public static boolean Networked = false; public static boolean Network_Host = false; public static BufferedReader Network_In; public static PrintWriter Network_Out; public static Socket Network_Player; public static boolean Network_MyMove = false; public static String Network_IP = "192.168.10.233"; public static void main(String[] args) { SetupGame(); PrintGame(); while ( Running ) { GetMove(); CheckForWin(); } } public static void GetMove() { if ( Networked ) { if ( Network_MyMove == true ) { System.out.println("Where you like to go? ( Note: you are " + GetMyself() + " )"); System.out.print("> "); int a = TextIO.getInt(); if ( a == 0 ) { EndGame(); } move_position = a-1; // Determine Letter. if ( Network_Host ) { move_letter = 'X'; } else { move_letter = 'O'; } if ( CheckMove() ) { Network_Out.println(move_position); Network_MyMove = false; } } else { System.out.println("Waiting for other player.."); String data = "10"; try { while ( !Network_In.ready() ) {} data = Network_In.readLine(); } catch(Exception e) { return; } // Determine Letter. if ( Network_Host ) { move_letter = 'O'; } else { move_letter = 'X'; } move_position = Integer.parseInt(data); if ( CheckMove() ) { Network_MyMove = true; } } } else { System.out.println("Where you like to go?"); System.out.print("> "); int a = TextIO.getInt(); if ( a == 0 ) { EndGame(); } move_position = a-1; if ( move_letter == 'X' ) { move_letter = 'O'; } else { move_letter = 'X'; } } } public static boolean StartNetworking(boolean Server) { Networked = true; try { if ( Server ) { Network_Host = true; Network_MyMove = true; ServerSocket srvr = new ServerSocket(1234); System.out.println("Waiting for other player.."); Network_Player = srvr.accept(); } else { //192.168.10.233 System.out.println("Connecting to " + Network_IP); Network_Player = new Socket(Network_IP, 1234); } Network_In = new BufferedReader(new InputStreamReader(Network_Player.getInputStream())); Network_Out = new PrintWriter(Network_Player.getOutputStream(), true); System.out.println("Starting game."); return true; } catch(Exception e) { System.out.println("Something went wrong."); return false; } } public static boolean CheckMove() { if (( move_position < 0 ) || ( move_position > 8 )) { return false; } if ( game[move_position] != ' ' ) { System.out.println("Slot in use."); return false; } else { game[move_position] = move_letter; PrintGame(); return true; } } public static void SetupGame() { for (int a = 0; a < 9; a++) { game[a] = ' '; } System.out.println("Tic Tac Toe Setup:"); System.out.println(" 1) Local Game"); System.out.println(" 2) Network Game"); System.out.print("> "); int a = TextIO.getInt(); if ( a == 2 ) { System.out.println(); System.out.println("Network Game Setup:"); System.out.println(" 1) Host"); System.out.println(" 2) Join"); System.out.print("> "); int b = TextIO.getInt(); if ( b == 1 ) { StartNetworking(true); } else { System.out.println("Enter the IP of the person you're connecting to."); String IP = TextIO.getlnString(); StartNetworking(false); } } } public static void PrintGame() { System.out.println(" | | "); System.out.println(" " + game[6] + " | " + game[7] + " | " + game[8] + " "); System.out.println("_____|_____|_____"); System.out.println(" | | "); System.out.println(" " + game[3] + " | " + game[4] + " | " + game[5] + " "); System.out.println("_____|_____|_____"); System.out.println(" | | "); System.out.println(" " + game[0] + " | " + game[1] + " | " + game[2] + " "); System.out.println(" | | "); } public static void CheckForWin() { char winner = ' '; // Check for X. if (( game[0] == 'X' ) && ( game[1] == 'X' ) && ( game[2] == 'X' )) { winner = 'X'; } if (( game[3] == 'X' ) && ( game[4] == 'X' ) && ( game[5] == 'X' )) { winner = 'X'; } if (( game[6] == 'X' ) && ( game[7] == 'X' ) && ( game[8] == 'X' )) { winner = 'X'; } if (( game[6] == 'X' ) && ( game[3] == 'X' ) && ( game[0] == 'X' )) { winner = 'X'; } if (( game[7] == 'X' ) && ( game[4] == 'X' ) && ( game[1] == 'X' )) { winner = 'X'; } if (( game[8] == 'X' ) && ( game[5] == 'X' ) && ( game[2] == 'X' )) { winner = 'X'; } if (( game[6] == 'X' ) && ( game[4] == 'X' ) && ( game[2] == 'X' )) { winner = 'X'; } if (( game[8] == 'X' ) && ( game[4] == 'X' ) && ( game[0] == 'X' )) { winner = 'X'; } // Check for O. if (( game[0] == 'O' ) && ( game[1] == 'O' ) && ( game[2] == 'O' )) { winner = 'O'; } if (( game[3] == 'O' ) && ( game[4] == 'O' ) && ( game[5] == 'O' )) { winner = 'O'; } if (( game[6] == 'O' ) && ( game[7] == 'O' ) && ( game[8] == 'O' )) { winner = 'O'; } if (( game[6] == 'O' ) && ( game[3] == 'O' ) && ( game[0] == 'O' )) { winner = 'O'; } if (( game[7] == 'O' ) && ( game[4] == 'O' ) && ( game[1] == 'O' )) { winner = 'O'; } if (( game[8] == 'O' ) && ( game[5] == 'O' ) && ( game[2] == 'O' )) { winner = 'O'; } if (( game[6] == 'O' ) && ( game[4] == 'O' ) && ( game[2] == 'O' )) { winner = 'O'; } if (( game[8] == 'O' ) && ( game[4] == 'O' ) && ( game[0] == 'O' )) { winner = 'O'; } // Check the winner. if ( winner == 'X' ) { System.out.println("X WINS!"); EndGame(); } if ( winner == 'O' ) { System.out.println("O WINS!"); EndGame(); } if ( CheckForTie() == true ) { System.out.println("Tie game."); EndGame(); } } public static boolean CheckForTie() { for (int a = 0; a < 9; a++ ) { if ( game[a] == ' ' ) { return false; } } return true; } public static void EndGame() { Running = false; System.out.println("Game over."); return; } public static char GetMyself() { if ( Network_Host ) { return 'X'; } else { return 'O'; } } }