首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
COMP282代做、C++设计程序代写
项目预算:
开发周期:
发布时间:
要求地区:
COMP282 – The C++ Programming Language
University of Liverpool
Department of Computer Science
Assignment CA1 : C++ Console Application
1 Deadline
Monday 29th of April at 17:00
Feedback will be released on Monday the 20th of May (3 wks later).
2 Weighting
50%
3 Overview
You will create a small interactive console-based (i.e. text based) adventure game. The
project consists of 9 tasks. You are expected to use Visual Studio 2022 Community
Edition to build your game. You should complete the tasks in order, as some tasks
assume that previous tasks have been done. Each task builds upon the previous one.
Do as much as you can and then package your project for submission. Your solution
should demonstrate your knowledge of C++. Work alone: You must work alone on the
assignment. Plagiarism checks will be run. If you notice any typos or mistakes in the
assignment that I may have missed, or if you feel something is unclear, please contact me
(andyrox@liverpool.ac.uk) or post a question in the Canvas COMP282 Discussion page
(there is a specific discussion relating to clarification of the assignments).
4 Submission Requirements
I will upload a separate document to Canvas describing submission requirements but it is
likely that you will upload your cpp and h files to Codegrade. I will also upload a rubric
describing the mark scheme. Marking will be a combination of running automatic tests
and manually reviewing the code.
4.1 Overview: Fantasy Quest Adventure Game
The assignment is to create a basic command-line game using C++ and organise game
structure using OOP methods.
The game has a fantasy theme, in a style similar to Dungeons and Dragons, consisting
1
of a player that can navigate a series of connected locations (using commands North,
South, East, West or N,S,E,W). The player can collect items and engage in combat with
monsters. The player’s score in the game increases when they defeat a monster. The
objective of the game is to achieve a high score (by defeating monsters) and to defeat
the ’end of level boss’. There should be some introductory text at the start of the game
to set the scene, and the player can leave the game at any point by typing quit. The
player can type inventory or inv to see a list of all the items they hold. The player can
type fight to engage in combat with a monster, or type collect to collect all items in
the current room.
You must use the specified class, method and variable names to ensure your code can
be tested. You will get marks for using STL containers and iterators to store and manipulate the various objects in the game. You are free to add further methods/ variables/
functions as you wish. Be sure to add comments your code, briefly explaining the purpose
and functionality of classes, methods, and significant blocks of code. Also remember to
implement error handling. In the descriptions of programming elements below, I have
deliberately not specified function parameters and return types - this is for you to specify.
Similarly I have not specified where pointer use would be appropriate.
I have specified most of the monsters/locations/objects - this is so that the gameplay can
be tested.
The assignment is organised into tasks.
4.2 Task 1 - create game classes
The following classes should be written:
• Character The Character class defines characters in the game. It should have the
following methods: setName, getName which will get or set the name of the
character, and getHitPoints and setHitPoints, which get or set the hitpoints, or
‘health rating’ of the character.
• Monster Monster should be derived from Character.
• Player Player should be derived from Character. It should have a member variable
score (an integer that keeps track of the player’s score in the game), which is set and
read using setScore and getScore, and three containers weapons, potions and
treasures which hold the player’s items. It should also have the private member
variable currentLocation which represents the player’s current location. This can
be set using setCurrentLocation and read using getCurrentLocation.
• Item Item should have the following methods: getName, setName, which will
set or get the name of the item.
• Potion Potion should be derived from Item. It should have a member variable
strength (integer), which should be accessible via getStrength and setStrength.
• Weapon Weapon should be derived from Item. It should have a member variable
power (integer), which should be accessible via getPower and setPower.
2
• Treasure Treasure should be derived from Item. It should have a member variable
value (integer), which should be accessible via getValue and setValue.
• Location A Location object represents a place within the game. It should hold
data including name and description (accessible via member functions setName,
getName, setDescription, getDescription). It should be possible for the programmer to populate a location object with other game entities, using the following
member functions: addExit (creates an exit, either N, S, E or W, leading to another location object), addMonster (puts a specific monster at this location),
delMonster (deletes monster), getExits (displays a list of exits to the player),
addItem (places a specific item at this location). Function overloading should
be used on the addItem method so that addItem handles adding potions, treasures or weapons to the location. Member variables should include the containers
weapons, potions and treasures which hold the player’s items. And exits, which
holds the exits leading to other location objects.
4.2.1 File Structure
The File Structure should be according to good C++ practice, with declarations in the .h
files and implementations in the .cpp files. However for simple one or two line functions,
those implementations can be kept in the .h file, allowing the compiler to inline them and
reduce function call overhead. For this assignment we will also keep derived classes in the
same files as their parent classes. AdventureGame.cpp should have the main() function.
Files are:
• Character.cpp
• Character.h
• Item.cpp
• Item.h
• Location.cpp
• Location.h
• AdventureGame.cpp
4.3 Task 2 - Build the game world
Build the game by creating location objects and linking them together using the objects’
exits member variable. Create 12 location objects that are linked to each other according
to the map shown.
Here are the location names:
cave, temple, dungeon, castle, clearing, hall, garden, library, forest, house, ruins, field.
3
Set each location object’s description (you can put whatever you want here) and a name
to be displayed after “you are” - e.g. ‘ruins’ might be given the name ‘in some ruins’.
After building the game, set the player’s current location to the clearing - that will be
the start location of the game.
Create a game loop in the main() function. At this stage the game loop should simply
get a command from the player, and then describe the location again. If the user types
quit, the game should display the user’s score (which at this stage will be 0), and end.
4.4 Task 3 - Room Navigation
Modify the game loop so that it now tells the user where they are, and what exits are
available (N, S, E or W).
If the user types a direction (N, S, E or W, or North, South, East or West, or n,s,e
or w), the game should work out if an exit exists in that direction, and if it does, the
current location should change to that location.
If an exit does not exist, the game should tell the user this, and remain at the current
location.
By the end of this task the user should be able to navigate around the game, and quit
the game if necessary.
4.5 Task 4 - Adding Items
Create some items (see below).
Treasures: bag of coins, treasure chest, emerald, ruby, sapphire, diamond, gold ring.
Potions: Blue Healing Potion, Purple Healing Potion, Red Healing Potion.
Weapons: dagger, sword, crossbow, club, stick.
Use addItem to add these items (weapons, potions, treasures) to the locations in the
game as follows:
4
Change the game loop so that it announces what items are in the location, if any.
This information should be obtainable from the player’s current location.
If the user types collect, all of the items in the location should be collected by the
user. If the user types inv or inventory they should see a list of all their items, in the
three groups (Potions, Treasures, Weapons). Sort the lists alphabetically. If the user
types drink, all the healing potions in the user’s inventory should be deleted, and their
‘strength’ points should be added to the player’s HitPoints.
By the end of this task the user should be able to collect all items from rooms, drink the
healing potions, and list the items in the inventory.
4.6 Task 5 - Adding Monsters
Use addMonster to add monsters to the rooms.
Here are the monster names:
vampire, zombie, dragon, goblin, spectre, banshee, ghoul, orc.
Arrange the monsters in the game as follows, with the following hitpoint values:
Change the game loop so that it announces the presence of a monster in a room.
Note that the house has two monsters.
By the end of this task there should be monsters in locations.
5
4.7 Task 6 - Combat
By the end of this task it should be possible to engage in combat with the monsters/enemies
according to the rules of combat, by typing fight.
Create a function called rollDice which will return a random integer from 1-6.
Create a member function of the Player class, called combat, that will conduct combat
with between the player and any enemies in the current location. The rules of combat
are as follows:
1. Both Monster and Player have a hitpoint value. Once a character’s hitpoint value
reaches 0, that character is defeated.
2. The Monster strikes first.
3. Their damage to the player is determined by calling rollDice and multiplying the
result by 2. (So result can be 0-12).
4. The player’s hitpoint total is reduced by the damage inflicted by the Monster.
5. The player then strikes back - rollDice is called, and this is modified by the weapon
with the highest power rating. So if the player has a sword with a power of 10, 10
is added to the dice roll to determine damage done to the monster.
6. This cycle continues until either the player or the enemy reaches 0 hitpoints.
7. After each round, the hitpoints of each combatant are displayed to the user.
8. If there is more than one monster in the room, only one monster is engaged in
battle when the user types fight - the user needs to type it again to fight the
other monster. The monster order should be strongest first - so the player fights
the monster with the higher hitpoints first.
9. The Character class should have the member function takeHit added to it, which
will decrease the character’s hitpoints by the given amount.
10. If the player is defeated, the player’s score is shown and the game ends.
4.8 Task 7 - The Boss
Create a new Player character called ‘boss’, give it a name and description, and add the
boss to the game. Put the boss in the cave. Modify the game loop so that when the
boss is defeated, the game ends.
4.9 Task 8 - Game Enhancements
Add further items to the game:
Treasures: Cup, Pearl, Key, Book
Potions: Green Healing Potion
You can decide their value, and strength in the case of the healing potion.
Put these items into the possession of some of the monsters. Make sure that the ghoul
6
has the key.
Modify the game so that when a monster is defeated, their items become available in the
room for the player to collect.
4.10 Task 9 - Implementing Armour
Create a new child class of Item called Armour.
Add at least 5 examples of armour into the game. Some examples:
ringmail, chainmail, shield, breastplate, helmet, gauntlet.
As well as name and description, the Armour class should have a member variable called
protection. You can decide values for this. But make sure that you put the gauntlet, with a protection of 2, in the library. Armour reduces the effect of damage
inflicted on the character. All Character objects should have the ability to use armour, so
it should be implemented at the Character (parent class) level. All armour items should
be listed to the user when they type inv or inventory. Modify the combat rules so
that during combat, damage inflicted on the player by an enemy is reduced by a random
amount between 0 and the total value of protection of all the armour in the player’s
possession.
7
5 Example Gameplay
8
9
软件开发、广告设计客服
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
软件定制开发网!