In this challenge, you have to build a class that will store and manipulate the data of a simplified clone of Battleship, the popular strategy game.
The game is played on a 5x5 square board, with rows indexed by uppercase letters from A to E (from top to bottom), and columns indexed by numbers from 1 to 5 (from left to right).
Each instance of the Battleship class in the Tests tab will be declared with two parameters:
scheme is a list containing 9 strings which are the coordinates indicating where the ships are placed on the board.guesses is a list containing 6 strings which are the coordinates of the guesses made by the player.The Tests will expect each instance of the Battleship class to possess four methods:
board() will return the final state of the board, based on the placement of the ships and the results of the player guesses, as a matrix of size 5x5. To vizually represent the state of the game, you will use four different characters:
hits() will return the total number of hits made by the player (correct guesses), either on Patrols or on Cruisers.
sunk() will return the total number of sunk Cruisers (two adjacent correct guesses, either horizontally or vertically).
points() will return the total number of points gained by the player (1 for every hit, plus 2 for every sunk Cruiser).
scheme = ["A1", "C1", "B2", "B3", "D2", "E2", "E4", "E5", "A5"]
guesses = ["A1", "B2", "C3", "D4", "E5", "E4"]
battleship.board() ➞ [
[X, , , , s],
[ , X, s, , ],
[s, , ., , ],
[ , s, , ., ],
[ , s, , X, X]
]
battleship.hits() ➞ 4
# Total hits.
battleship.sunk() ➞ 1
# Sunk Cruisers only, sunk Patrols not included.
battleship.points() ➞ 6
# Hits + additional points given by sunk Cruisers.