[US-02] Take turns firing with hit/miss feedback
Description
Implements turn-based firing system for Battleship game with hit/miss feedback.
Requirements Implemented
- Enforce alternating turns - GameService manages turn switching
- Let active player select target coordinate - Coordinate input system
- Report 'hit' or 'miss' immediately - Shot result feedback
- 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