01
Overview
Networked Dominoes is an academic multiplayer game implemented with Java sockets and a command-line interface. Four clients connect to a central server that distributes pieces, selects the starting player, manages turn order, and keeps every player's view of the board synchronized.
02
Problem & goal
Apply object-oriented design and network programming to coordinate a complete dominoes match across several independent clients while enforcing the same rules and shared state for every player.
03
Solution
The client-server architecture uses TCP sockets and data streams for communication. The server owns the board and game state, validates each selected piece, rotates it when necessary, advances turns, and broadcasts updates. Each client displays its hand and the shared board, then sends either a piece index or a pass command.
04
Key features
- Four-player network sessions through a central server
- Automatic distribution of seven pieces to each player
- Server-selected starting player and controlled turn rotation
- Live board updates broadcast to every connected client
- Piece matching, rotation, and server-side move validation
- Invalid-input feedback with another attempt for the active player
- Optional turn passing from the command line
- Empty-hand victories and blocked-game resolution by lowest pip total
05
Enrique's contribution
- Java client and server implementation
- Object-oriented piece, hand, and game-state design
- TCP socket and data-stream communication
- Command-line interaction flow
- Domino placement, passing, and endgame rules
- UML documentation and multi-client scenario testing
06
Technical considerations
- Keeping turn order and the shared board synchronized across four clients
- Validating moves on the server before broadcasting state changes
- Handling concurrent client connections without mixing player messages
- Distinguishing an empty-hand victory from a blocked match after four consecutive passes
07
What was learned
The project strengthened experience with Java networking, client-server protocols, concurrent connections, object-oriented game modeling, and authoritative server state for a synchronized multiplayer experience.

