Upload
oswin-cameron
View
217
Download
2
Embed Size (px)
Citation preview
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/TasksDevelop a protocol and move format.
Rank: 1
Server should display a game board that shows each move.
Rank: 2
•Develop a protocol.•Develop a move format.
• Design a game board(Linked Array).• Display the game board.•Design an interface for communication between game state classes and the User Interface.
User Stories/Tasks Cont.Display the logic of validating each move and store the game states.
Rank: 3
Server should accept moves from a client, apply the move to the game board, and send the move to the opponent.
Rank: 4
• 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.
• 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.
User Stories/Tasks Cont.User connects to a server that will act as a game manager for at least one game of Fanorona.
Rank: 5
Server should display the winner of each game.
Rank: 6
• Create a TCP connection for 2 users, and loop until the first move.• Close the connection after each game is completed.
• Display a message naming the winner of the game.
User Stories/Tasks Cont.Server should keep a log of moves made for each game played.
Rank: 7
• Keep a log of each move made.
EstimatesDevelop a protocol and move format.
Server should display a game board that shows each move.
Estimated NUTs: 20
Estimated NUTs: 1
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.
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
User connects to a server that will act as a game manager for at least one game of Fanorona.
Estimated NUTs: 5
Bidding/Assigned TasksDevelop a protocol and move format.
Rank: 1 Estimated NUTs: 1
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
Bidding/Assigned Tasks ContServer should display a game board that shows each move.
Rank: 2 Estimated NUTs: 20
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
Bidding/Assigned TasksDisplay the logic of validating each move and store the game states.
Rank: 3 Estimated NUTs: 10
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
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.
Rank: 4 Estimated NUTs: 10
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
Bidding/Assigned Tasks ContUser connects to a server that will act as a game manager for at least one game of Fanorona.
Rank: 5 Estimated NUTs: 5
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
Bidding/Assigned Tasks ContServer should display the winner of each game.
Rank: 6 Estimated NUTs: 0.5
Display a message naming the winner of the game. • James 1 NUTs• Jeremiah 0.5 NUTs• Matt 3 NUTs Assigned To
Server should keep a log of moves made for each game played.
Rank: 7 Estimated NUTs: 1.5
Keep a log of each move made. • James 3 NUTs• Jeremiah 1.5 NUTs Winner• Matt 2 NUTs
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. EstimatedDevelop a protocol and move format.
Server should display a game board that shows each move.
Estimated NUTs: 20
Estimated NUTs: 1
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
Actual NUTs: 20
Actual NUTs: 3.5
Actual NUTs: 10
Actual NUTs: 10
Actual/Estimated NUTs: 3.5/1
Actual/Estimated NUTs: 3.5/1
Actual/Estimated NUTs: 3.5/1
Actual/Estimated NUTs: 3.5/1
Actual vs. Estimated Cont.
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
User connects to a server that will act as a game manager for at least one game of Fanorona.
Estimated NUTs: 5
Actual NUTs: 0.5
Actual NUTs: 1.5
Actual NUTs: 5 Actual/Estimated NUTs: 3.5/1
Actual/Estimated NUTs: 3.5/1
Actual/Estimated NUTs: 3.5/1
Testing
• Two types of test:Server Tests
Done with JUnitUser 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 threadsInsure 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 appearServer 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
Challenges We Faced
• Pair Programming via Elluminate LiveNew program for teamNot real-time programmingSlow start-upsSystem Crashes