Case study · Client-Server Game / Mobile Web Project

Networked Dominoes

Java command-line multiplayer game

A Java command-line dominoes game where four networked clients play through a central server with live board updates, turn validation, passing, and winner calculation.

ACADEMIC PROJECTJava Command Line
Command-line Dominoes client showing a server connection, a player's pieces, the shared board, and a piece-selection prompt.
Role
Developer
Platform
Java Command Line
Team
2 Developers on the Team

Technologies

JavaTCP SocketsClient-Server ArchitectureMultithreadingUMLCommand Line

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.