Skip to content

[US-02] Take turns firing with hit/miss feedback

Ivan Esau requested to merge feature/issue-2-us-02-take-turns-firing-with-h into master

Description

Implements turn-based firing system for Battleship game with hit/miss feedback.

Requirements Implemented

  1. Enforce alternating turns - GameService manages turn switching
  2. Let active player select target coordinate - Coordinate input system
  3. Report 'hit' or 'miss' immediately - Shot result feedback
  4. Prevent firing at same coordinate twice - Board tracking system

Acceptance Criteria Verified

  • Given A1 has not been targeted, when player fires at A1, result shown and A1 marked as used
  • Given A1 is already targeted, when player attempts A1 again, system blocks action
  • Given a turn completes, when control passes, only next player can act

Files Created/Modified

  • src/main/java/org/example/model/Board.java - Board logic with shot tracking
  • src/main/java/org/example/model/Coordinate.java - Coordinate validation
  • src/main/java/org/example/model/Game.java - Game state management
  • src/main/java/org/example/model/Player.java - Player turn management
  • src/main/java/org/example/service/GameService.java - Turn-based game logic
  • src/test/java/org/example/model/BoardTest.java - Board shot validation tests
  • src/test/java/org/example/model/GameTest.java - Turn management tests

Technical Implementation

  • Turn-based state machine in GameService
  • Coordinate validation and shot tracking in Board
  • Player turn switching with validation
  • Comprehensive test coverage for all acceptance criteria

Closes #2

Merge request reports

Loading