联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2021-05-07 11:09

What to Submit

? A CMakeLists.txt that can compile your program into an executable named BattleShip

? The files including any subfolders if you have them, that make up your project.

Problem Description

You will be implementing the game of BattleShip. The game starts with each player secretly

placing their ships on their board. A ship can be placed either horizontally or vertically on their

board. Once the players have finished placing their ships, they take turns guessing locations on

their opponent's board to fire. Their opponent announces whether the shot hits or misses their

ship and if it is the final hit on their ship, the fact that that shot destroyed their ship. You can play

a version of BattleShip here and I recommend that you do so if you haven’t played the game

before.

Requirements

1. All of your code must be in a namespace named BattleShip

2. You must have at least 3 user defined classes and used them in your solution

3. You must appropriately use public and private. You should NOT make everything public

because it “makes things easier”

Failure to follow these restrictions will result in serious point deductions from your

submission.

Input

Input will come from 3 locations: the command line, files, and standard input

Command Line

? Argument 1

o Required

o The path to the configuration file for this game

? This value will always be valid

Configuration File

The configuration file specifies

? The size of the board

? The number of ships to be placed on the board

? The character used to represent each ship

? The size of each ship

The format of the file looks like

? Number of rows on the board

? Number of columns on the board

? Number of ships to be placed

? Ship1_Character Ship1_Size

? Ship2_Character Ship2_Size

? …

For example, the configuration file of a traditional game of Battleship that is played on 10 X 10

board with a Carrier that is 5 long, a Battleship that is 4 long, a Destroyer that is 3 long, a

Submarine that is 3 long, and a Patrol Boat that is 2 long looks like

10

10

5

C 5

B 4

D 3

S 3

P 2

The contents of this file will always be valid.

You can find a few example configuration files in the starter code.

Standard Input (Keyboard)

This is how the user will specify where to place their ships and what location on the board to fire

at. Input will NOT always be valid. If invalid input is entered the user should be prompted for

input

Output

The output is a bit too complicated to specify here what it should look like. Please look at the

examples at the end to see what output should look like

Setting Up The Game

The player will first be asked for their name and then will be asked to place their ships. Ships

are placed in ASCII order based on the character used to represent the ship.

For each ship

1. The player’s board should be displayed

2. The player should be asked if they want to place the ship horizontally or vertically

a. H or h represents horizontal and V or v represents vertical

b. Repeatedly prompt for valid input if invalid input is entered

3. They will then be asked for the starting coordinate they want to place the ship at

. This will be the leftmost point if the ship is placed horizontally

a. This will be the topmost point if the ship is placed vertically

b. If invalid input is entered go back to step 2

4. If the ship can be legally placed at the location it should be placed there but if it can’t go

back to step 2

. A placement is legal if

? The ship can fit there without going off the board

? The ship does not overlap with any of the ships that have already been

placed

.

Getting A Users Move

The user should enter where they want to shoot out in the form row column. If an invalid move

is entered, you should keep asking the user for a valid move until they enter one. A move is

considered valid if

1. The user entered two integers separated by space

2. The coordinate they choose is on the board

3. They have not shot there already

Test Cases

Most of the test cases are hidden from you. You’ll be told whether you pass or fail and that is

about it. This is so that you do your own testing. You can GoogleTest functions in classes the

same way you test functions that are outside of functions. The only extra step you have to take

is to create an instance of your class first.

There will be one test you can see the output of so that you can find any typos or whitespace

issues.

Future Extensions

You will be building upon this project in the next assignment. In that assignment you will be

adding some very simple “AIs” to the game. Because of this it is important that your solution be

1. Well organized. If it works but is terribly put together the next assignment will be much

harder for you

2. Plan for the extension around Players. This means that you

a. Don’t directly declare instances of Players. Instead make your Players using smart

pointers (probably unique_ptrs).

b. Don’t directly pass instances of players around. Instead use references and pointers.

If you don’t end up completing the assignment you or you just want to, you can build off of my

solution, which will be released after this assignment is due. This can be a challenge as you’ll

have to figure out how my code works and how I think, which I admit was kind of convoluted as I

wanted to try some new things out.

Hints and Musings

? Start early. This is going to take some time so give yourself the time to do it.

? Come up with a plan before coding! If you don’t have a plan before you start writing you

will end up in a world of hurt

o Think about the the things a game of Battleship is composed of and what they

should do and how they should interact

? The most time-consuming part of the project is getting the game setup. Once all the

boards and players are in place it is quite straightforward to implement the gameplay

logic

? What you store and what you display do NOT have to be the same thing

o You don’t have to have a vector of strings to represent the board

o You don’t have to store the spaces in between cells

o You could have an easy to work with model of the game and then figure out how

to print it to the screen in the way that I want


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp