/battleship

Battleship implemented in Scala and Akka

Primary LanguageScala

An Implementation of Battleships with Akka Actors and Scala

The Basic Rules

This game is played by a 2 players on two grids with 5 ships each.

The Grid

  • The grid is made up of ten rows and ten columns.
  • One grid has to be hidden from a player's opponent and displays the players ship placement.
  • The other grid is for the opponent to aim at and fire at a players ship

The Ships

  • Each player gets 5 ships broken down into the following
    • One 5 length ship
    • One 4 length ship
    • Two 3 length ship
    • One 2 length ship
  • The player can place a ship on 'his/her' grid (the one not visible to the opponents).
  • Each ship will occupy the number of squares for it's size so a 5 length ship will occupy 5 squares on the grid.
  • A ship can be placed either vertically or horizontally and cannot hang off the grid nor can they be placed diagonally.
  • Ships can be placed side by side or any distance apart as long as the previous rule is not broken, but they cannot overlap.

Gameplay

  • Players take turns to fire shots at their opponent ships. On the grid that does not display that opponent's ships.

  • They do so by guessing where an opponent's ships might be and their aim is to completely obliterate a ship.

  • A player marks a shot on his/her grid and the system must let that player know if it was a hit or a miss.

  • A ship is sunk if all the squares it occupies are hit.

  • A distinction must be made between hits and misses.

Salvo Variant (to be implemented in version 2)

To speed up the game a player is allowed to fire as many shots as ships that he/she has in the game the number of shots are directly proportional to the number of ships he/she has available. For example if a player has 5 ships he/she is allowed to fire 5 shots at the opponent, 4 ships will only allow a player 4 shots and so on.

Miscellaneous

Types of ships

  • Aircraft Carrier (5 length) - This is the Super Carrier class
  • Battleship (4 length) - This will be our Dreadnought class
  • Submarine (3 length) - This will be our U-Boat class
  • Destroyer (3 length) - This will be a Neutrashimy
  • Patrol Boat (2 length) - This will be the Sentinel class

Setting up Project on Intellij

Clone the repository to your workspace and import the build.sbt into Intellij and the IDE will do the rest.