
Battleship Game
Project Title: Battleship Game (Java Version)
Overview:
The Battleship Game is a strategic board game where two players take turns trying to sink each other’s ships by guessing their locations on a grid. The game is typically played on a 10x10 grid, and the goal is to completely sink all of the opponent's ships before they sink all of yours.
Core Gameplay Features:
- A grid for both the player and the opponent, where ships are hidden.
- Players take turns guessing coordinates (e.g., A5, D7) to try and hit opponent ships.
- The game tracks hits and misses on both players' grids.
- Ships can be placed horizontally or vertically, and must not overlap.
- Players win by sinking all of the opponent’s ships.
Technologies Commonly Used:
- Java (Console-based application using basic Java libraries like Scanner for input and Array for grids)
- Optional: JavaFX or Swing for GUI-based version (for visual representation of the grid and ships)
How It Works:
- Setup: Each player places a set number of ships on a 10x10 grid (usually 5 ships with different lengths).
- Turns: Players alternate turns, guessing coordinates to attack the opponent's grid.
- Hit or Miss: If the player guesses correctly, a "hit" is recorded; otherwise, it's a "miss."
- Sinking Ships: When a ship is completely hit, it is sunk.
- Winning: The game ends when all ships of one player are sunk, and that player wins.
Learning Objectives:
- Working with 2D arrays to represent the game grid
- Handling user input and managing player turns
- Implementing game logic for hit/miss and ship sinking
- Understanding basic object-oriented programming principles (e.g., creating ship classes and player classes)
- Building a simple but interactive game in Java
Game Logic Breakdown:
- Player Grid: A 10x10 grid for each player, initialized with water ('~') and ships represented by a specific character (e.g., 'S').
- Ship Placement: Ships are placed randomly or manually by the player. They occupy consecutive cells, either horizontally or vertically.
- Attacks: Players select grid coordinates for their attack. The game checks if that coordinate contains a ship or water.
- Game State: Tracks the number of ships sunk, the number of remaining ships, and the game winner.