260 likes | 360 Views
Fanorona Game Manager. James Andariese Jeremiah Lewis Matt Rykaczewski. Project Overview. Design a game manager for the game of Fanorona Communication must be done through TCP Project must be completed before Nov. 17th. User Stories/Tasks. Develop a protocol and move format.
E N D
Fanorona Game Manager James Andariese Jeremiah Lewis Matt Rykaczewski
Project Overview • Design a game manager for the game of Fanorona • Communication must be done through TCP • Project must be completed before Nov. 17th
User Stories/Tasks Develop a protocol and move format. • Develop a protocol. • Develop a move format. Rank: 1 Server should display a game board that shows each move. • Design a game board(Linked Array). • Display the game board. • Design an interface for communication between game state classes and the User Interface. Rank: 2
User Stories/Tasks Cont. Display the logic of validating each move and store the game states. • Validate the logic of each move. • Make the move on the internal game board representation. • Send update notifications to the User Interface whenever the validated move batch is sent to the other client. Rank: 3 Server should accept moves from a client, apply the move to the game board, and send the move to the opponent. • Server accepts the move. • Server sends valid move to the other client, applies the move to the game board, and sends an acknowledge message to the first client. Rank: 4
User Stories/Tasks Cont. User connects to a server that will act as a game manager for at least one game of Fanorona. • Create a TCP connection for 2 users, and loop until the first move. • Close the connection after each game is completed. Rank: 5 Server should display the winner of each game. • Display a message naming the winner of the game. Rank: 6
User Stories/Tasks Cont. Server should keep a log of moves made for each game played. • Keep a log of each move made. Rank: 7
Estimates Develop a protocol and move format. Estimated NUTs: 1 Server should display a game board that shows each move. Estimated NUTs: 20 Display the logic of validating each move and store the game states. Estimated NUTs: 10 Server should accept moves from a client, apply the move to the game board, and send the move to the opponent. Estimated NUTs: 10
Estimates Cont. User connects to a server that will act as a game manager for at least one game of Fanorona. Estimated NUTs: 5 Server should display the winner of each game. Estimated NUTs: 0.5 Server should keep a log of moves made for each game played. Estimated NUTs: 1.5
Bidding • Bidding was done “silent action” style • 1 NUTs = 12 programming minutes
Bidding/Assigned Tasks Develop a protocol and move format. • Develop a protocol. • James 0 NUTs Assigned To • Jeremiah 0 NUTs • Matt 0 NUTs • Develop a move format. • James 0.5 NUTs • Jeremiah 0.5 NUTs • Matt 0.5 NUTs Assigned To Rank: 1 Estimated NUTs: 1
Bidding/Assigned Tasks Cont Server should display a game board that shows each move. • Design a game board(Linked Array). • James 10 NUTs • Jeremiah 2.5 NUTs Winner • Matt 10 NUTs • Display the game board. • James 3 NUTs Winner • Jeremiah 10 NUTs • Matt 15 NUTs • Design an interface for communication between game state classes and the User Interface. • James 1 NUTs Winner • Jeremiah 5 NUTs • Matt 5 NUTs Rank: 2 Estimated NUTs: 20
Bidding/Assigned Tasks Display the logic of validating each move and store the game states. • Validate the logic of each move. • James 8 NUTs • Jeremiah 2.5 NUTs Winner • Matt 4.5 NUTs • Make the move on the internal game board representation. • James 1 NUTs • Jeremiah 1 NUTs • Matt 1.5 NUTs Assigned To • Send update notifications to the User Interface whenever the validated move batch is sent to the other client. • James 1 NUTs Winner • Jeremiah 5.5 NUTs • Matt 7 NUTs Rank: 3 Estimated NUTs: 10
Bidding/Assigned Tasks Cont. Server should accept moves from a client, apply the move to the game board, and send the move to the opponent. • Server accepts the move. • James 3 NUTs • Jeremiah 2.5 NUTs Winner • Matt 4 NUTS • Server sends valid move to the other client, applies the move to the game board, and sends an acknowledge message to the first client. • James 1 NUTs Winner • Jeremiah 2.5 NUTs • Matt 4 NUTs Rank: 4 Estimated NUTs: 10
Bidding/Assigned Tasks Cont User connects to a server that will act as a game manager for at least one game of Fanorona. • Create a TCP connection for 2 users, and loop until the first move. • James 2 NUTs Winner • Jeremiah 2.5 NUTs • Matt 4 NUTs • Close the connection after each game is completed. • James 1 NUTs Winner • Jeremiah 2 NUTs • Matt 2.5 NUTs Rank: 5 Estimated NUTs: 5
Bidding/Assigned Tasks Cont Server should display the winner of each game. • Display a message naming the winner of the game. • James 1 NUTs • Jeremiah 0.5 NUTs • Matt 3 NUTs Assigned To Rank: 6 Estimated NUTs: 0.5 Server should keep a log of moves made for each game played. • Keep a log of each move made. • James 3 NUTs • Jeremiah 1.5 NUTs Winner • Matt 2 NUTs Rank: 7 Estimated NUTs: 1.5
Work Schedule • 18 per week (6 hours per team member) • All programming to be done in pairs • Each team member meets 3 days per week, in 2 hour increments • Monday (James and Jeremiah) • Tuesday (James and Matt) • Wednesday (James, Jeremiah, Matt) • Thursday (Jeremiah, Matt)
Actual vs. Estimated Develop a protocol and move format. Estimated NUTs: 1 Actual NUTs: 3.5 Actual/Estimated NUTs: 3.5/1 Server should display a game board that shows each move. Estimated NUTs: 20 Actual NUTs: 20 Actual/Estimated NUTs: 3.5/1 Display the logic of validating each move and store the game states. Estimated NUTs: 10 Actual NUTs: 10 Actual/Estimated NUTs: 3.5/1 Server should accept moves from a client, apply the move to the game board, and send the move to the opponent. Estimated NUTs: 10 Actual NUTs: 10 Actual/Estimated NUTs: 3.5/1
Actual vs. Estimated Cont. User connects to a server that will act as a game manager for at least one game of Fanorona. Estimated NUTs: 5 Actual NUTs: 5 Actual/Estimated NUTs: 3.5/1 Server should display the winner of each game. Estimated NUTs: 0.5 Actual NUTs: 0.5 Actual/Estimated NUTs: 3.5/1 Server should keep a log of moves made for each game played. Estimated NUTs: 1.5 Actual NUTs: 1.5 Actual/Estimated NUTs: 3.5/1
Testing • Two types of test: Server Tests Done with JUnit User Interface(GUI) Tests Done by stating expected outcome and testing
Server Tests • Test connection to server • Test assigning players to colors First play to connect should be white • Test sending string(moves) through threads Insure all entire move is received • Test logging feature • Test cycle detection Check for the same board state as previous moves
User Interface(GUI) Tests • When UI opens, blank board should appear Server should be ready to accept 2 connections • Test “Fancy Board” option When selected “Fancy Board” appears • Test “Random Sides” option When Selected colors are chosen randomly • Test settings being saved UI settings should be saved when UI closes
Deviations From XP Principles • 6 hour work week instead of 40 hour
Finished Product • All user stories completed • Demo soon to follow
Challenges We Faced • Pair Programming via Elluminate Live New program for team Not real-time programming Slow start-ups System Crashes
What We Learned • Pair Programming in a school setting Difficult to match schedule Little time to work together