110 likes | 237 Vues
This project focuses on developing a networked version of the Mancala game utilizing Agile methods and side-by-side pair programming practices. Built in Java with Eclipse IDE, it incorporates JUnit for testing and features a minimal sleep activity diagram. The Mancala game logic controls traffic and bin choices, while a dedicated connection manager handles remote player interactions. The GUI provides intuitive controls for choosing bins, maintaining real-time game state, and displaying scores. Robust network communication modules ensure responsive gameplay through socket connections.
E N D
Networked Mancala XP & Agile Methods: Team 3 Stephen Olivier & Keith Lee
Programming Environment • Side-By-Side Pair Programming • Eclipse IDE 3.1.2 • Java 1.5 • JUnit 3.8.1 • Minimal Sleep
Class Structure • MancalaGame • Directs traffic and bin choices, applies rules • MancalaBoard • Maintains and displays game board state • RemotePlayer • Receives bin number from opponent • MancalaConnectionManager • Login and game set-up • Helper Classes for Dialogs, Buttons
Graphical User Interface • Choosing A Bin • Bins are buttons with corresponding numbers • Current player’s non-empty bins are enabled • Event Listeners • Bin number sent to MancalaGame • MancalaGame applies game rules • Notify board display elements and remote player program • Last move and current player highlighted • Per-User Score Statistics using Box-Plot
Network Communication: Part 1 • Player 1 opens ServerSocket • Player 2 connects Socket to ServerSocket • Player 1 spawns Socket from connection • Player 2 waits to receive player 1’s first move • Game begins
Network Communication: Part 2 • Player Chooses Bin • Bin number sent through Socket • If turn changes: • Blocking wait to receive opponent’s bin choice • Wait is separate thread to keep GUI responsive • Player Waits for Bin Choice • Bin number received through Socket • If turn changes: • Enable local player to choose bin
Network Communication: Part 3 • Reset Code • Sent if local player quits • Received if remote player quits • Lost Connection • Current game ends • Login dialog appears