/** * @author Kristof Friedrichsen * @author Ryan Mann * @author Bob Free * @author Pat O'Neill * @version December 15, 2006 **/ package chutesladder; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.util.Vector; import java.util.Random; import java.util.Date; public class GameHandler extends Thread { static Vector handlers = new Vector( 10 ); private Socket socket; private BufferedReader in; private PrintWriter out; public GameHandler(Socket socket) throws IOException { this.socket = socket; System.out.println( "GameHandler.java - line 19" ); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println( "GameHandler.java - line 21" ); out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); } public void run() { String line; String newline=""; System.out.println( "GameHandler.java - line 26" ); Date time = new Date(); Random rand = new Random(time.getTime()); synchronized(handlers) { handlers.addElement(this); System.out.println("GameHandler.java -29- this.toString () ==> " + this.toString()); // add() not found in Vector class } try { System.out.println( "GameHandler.java - line 34" ); while(!(line = in.readLine()).equalsIgnoreCase("/quit")) { int playerNum = Integer.parseInt(line.substring(0,1)); if ( playerNum == 5) { newline = line; System.out.println("Entered login "+newline); } else if (playerNum == 6) { int PlayerData = Integer.parseInt(line.substring(1,2)); int numRand = rand.nextInt(3); newline = ""+"60"+numRand; System.out.println("_______________________________________First players turn #: "+numRand+"_________________________________"); } else if (playerNum == 7) { newline = "701"; } else { int spin = Integer.parseInt(line.substring(1,2)); int playerTurn = Integer.parseInt(line.substring(2,3)); int numberPlayers = Integer.parseInt(line.substring(3,4)); if ( numberPlayers == 1 ) { newline = ""+playerNum+spin+0; } // end if ( numberPlayers == 1 ) //turn increment two players if ( numberPlayers == 2) { if (playerTurn == 0) { newline = ""+playerNum+spin+1; } if (playerTurn == 1) { newline = ""+playerNum+spin+0; } } // turn increment three players if (numberPlayers == 3) { if (playerTurn == 0) { newline = ""+playerNum+spin+1; } if (playerTurn == 1) { newline = ""+playerNum+spin+2; } if (playerTurn == 2) { newline = ""+playerNum+spin+0; } } // turn increment for four players if ( numberPlayers == 4) { if (playerTurn == 0) { newline = ""+playerNum+spin+1; } if (playerTurn == 1) { newline = ""+playerNum+spin+2; } if (playerTurn == 2) { newline = ""+playerNum+spin+3; } if (playerTurn == 3) { newline = ""+playerNum+spin+0; } } } System.out.println("Line input from client"+line); System.out.println( "GameHandler.java - line 36" ); for(int i = 0; i < handlers.size(); i++) { System.out.println( "GameHandler.java - line 38" ); synchronized(handlers) { GameHandler handler = handlers.elementAt(i); System.out.println( "GameHandler.java - line 41 - " + handler.toString() ); handler.out.println(newline); System.out.println("Printing server update!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"+line); System.out.println( "GameHandler.java - line 43 - flushing" ); handler.out.flush(); } } } } catch(IOException ioe) { ioe.printStackTrace(); } finally { try { System.out.println( "GameHandler.java - line 52 - closing in" ); in.close(); System.out.println( "GameHandler.java - line 54 - closing out" ); out.close(); System.out.println( "GameHandler.java - ine 56 - closing socket" ); socket.close(); } catch(IOException ioe) { } finally { synchronized(handlers) { System.out.println( "GameHandler.java - line 61 - removing handlers element(this)" ); handlers.removeElement(this); } } } } }