Design the AI for playing multiplayer Battleship

Design the AI for playing multiplayer Battleship.

Specification

  1. The game is played on an NxN grid.
  2. Each player will place a specified set of ships
  3. The ships will vary in length from 2 to 7.
  4. There can be any number or any size ship including 0.
  5. EXCEPT the length 7 ship – the battleship – which there will always be 1.
  6. Player order will be random but fixed at the start of the game.
  7. Each round consists of each player making a grid selection in turn.
  8. Each grid selection will be played into all player’s grid. Including the current players grid.
  9. Each player will respond with HIT, MISS or SANK {ship name}.
  10. If a player’s battleship is sunk that player is removed from the game.
  11. Repeat from #4 until 1 player remains.
  12. That player is the winner.

Deliverables

In a word document provide the following:

  1. A high level narrative description of the algorithms you will use to determine the grid selection when it is your turn (step #4 above).
  2. More detailed pseudocode that describes specific parts of the algorithm. Note that all players are informed of all guesses and results (step #5 and #6 above) and you may (should?) store and use that information as part of your algorithm.
  3. Data Structures you will need to store any data as part of those algorithms.
  4. A high level OO design for the classes you will need to incorporate the algorithms and data structures. A class diagram will be acceptable as will an outline of the class definitions in a Visual Studio project (i.e., empty classes with no code inside the methods).
  5. Define the APIs/Entry points for the code in specification 4/5/6. Specifically, what information would you expect to be passed, returned for you to be able to implement your algorithm. Note that this may require you to add some data structures to deliverable #2. Justify why you need any parameters passed in and why you think the return values would be needed.

You cannot expect to have direct access to any information about other players other than what is provided by steps #5 and #6. This mean that you cannot query a player for the state of their grid. Clearly this would be cheating!

You are not expected to write C# code for this assignment and any code provided will not be graded other than an API outline.

The level of detail for this assignment should be enough to give to another developer to implement. This means a lot of detail.

You do NOT have to specify the code that will run the game, determine if you have won, or any other plumbing code.

Order from us and get better grades. We are the service you have been looking for.