首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
program编程设计讲解、辅导Java,Python,C++程序语言 辅导Web开发|调试C/C++编程
项目预算:
开发周期:
发布时间:
要求地区:
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
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代做ceng0013 design of a pro...
2024-11-13
代做mech4880 refrigeration a...
2024-11-13
代做mcd1350: media studies a...
2024-11-13
代写fint b338f (autumn 2024)...
2024-11-13
代做engd3000 design of tunab...
2024-11-13
代做n1611 financial economet...
2024-11-13
代做econ 2331: economic and ...
2024-11-13
代做cs770/870 assignment 8代...
2024-11-13
代写amath 481/581 autumn qua...
2024-11-13
代做ccc8013 the process of s...
2024-11-13
代写csit040 – modern comput...
2024-11-13
代写econ 2070: introduc2on t...
2024-11-13
代写cct260, project 2 person...
2024-11-13
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!