All pastes #55397 Raw Edit

Anonymous

public text v1 · immutable
#55397 ·published 2006-05-12 13:44 UTC
rendered paste body
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';
		}
	}
}