CPSC3175 — Spring 2021 — Rodrigo A. Obando, Ph.D. — CSU 1 CPSC3175 Final Project The Adventure/Role Playing Game Due Date: The day and time of the Final Exam. Due to our current situation we will do...

1 answer below »
I need help getting the combat system complete so that the monster class provides the stats for combat.


CPSC3175 — Spring 2021 — Rodrigo A. Obando, Ph.D. — CSU 1 CPSC3175 Final Project The Adventure/Role Playing Game Due Date: The day and time of the Final Exam. Due to our current situation we will do the presentations at different times throughout the finals period. This is also the presentation day. The Game Your task is to create and implement a text-based adventure/role playing game using the C# programming language. You have been given a simple framework that lets you walk through a few rooms. You must use this as a starting point. You must implement at least 5 software design patterns in the project (Simple patterns such as Enumerators, Designated Con- structors, etc. are NOT included). You should use loosely coupled components and cohesiveness in your design. Please, read this Implementing at least 5 design patterns is not optional, in fact, that affects your overall grade. The points for the project are assigned according to Table 1 and Table 2 (see page 5.) The maximum number of points is 1000. If you implement 5 software design patterns (or more) properly, whatever points you earn according to the features of the game will be your grade. If you earn 950, your grade is 950 points. If you only implement 4 software design patterns then your 950 points will only be 760. If you only implement 3 software design patterns then your 950 points will only be 570, so on and so forth. In other words, the percentage of the number of software design patterns will be the percentage applied to the points earned in Table 1 and Table 2. 1 Read The Code Reading code is an important skill that you need to practice. Your first task is to read some of the existing code and try to understand what it does. By the end of the assignment, you will need to understand most of it if not all of it. 2 Make small extensions As a little exercise to get warmed up, make some changes to the code. For example: • change the name of a location to something different. CPSC3175 — Spring 2021 — Rodrigo A. Obando, Ph.D. — CSU 2 • change the exits — pick a room that currently is to the west of another room and put it to the north • add a room (or two, or three, ...) These and similar exercises should get you familiar with the game. 3 Design Your Game First, you should decide what the goal of your game is. It should be something along the lines of: You have to find some items and take them to a certain room (or a certain person?). The items might be keys to open locked rooms. Then you can get another item. If you take that to another room, you win. For example: You are at Columbus State University, Main Campus. You have to find out where your lab class is. To find this, you have to find the front office and ask. At the end, you need to find the exam room. If you get there on time, and you have found your textbook somewhere along the way, and you have also been to the tutorial class, then you win. And if you’ve been to the Cafeteria more than five times during the game, your exam grade gets reduced by 50%. Or: You are lost in a dungeon. You meet a dwarf. If you find something to eat that you can give to the dwarf, then the dwarf tells you where to find a magic wand. If you use the magic wand in the big cave, the exit opens, you get out and win. It can be anything, really. Think about the scenery you want to use (a dungeon, a city, a building, etc.) and decide what your locations (rooms) are. Make it interesting, but do not make it too complicated. (I would suggest no more than 30 rooms.) Put objects in the scenery, maybe people, monsters, etc. Decide what task the player has to master. Please, create a One Page Document describing your game concept. You should identify all members in the team if you are to work in a group (groups cannot have more than 3 members.) 4 Implement the Game Decide what classes you need to implement the game, then implement and test them. 5 Levels You may choose to create the single-player version (default) or the multi- player version (client/server.) The latter is more challenging since it requires CPSC3175 — Spring 2021 — Rodrigo A. Obando, Ph.D. — CSU 3 thread synchronization in the program as well as networking. This networking will require a substantial change on the base system. Regardless of the version you choose, the base functionality that you have to implement is: • The game has several locations/rooms. • The player can walk through the locations. (This was already implemented in the code you were given.) • There are items in some rooms. Every room can hold any number of items. Some items can be picked up by the player, others cannot. • The player can carry some items with him/her. Every item has a weight. The player can carry items only up to a certain total weight. • The player can win. There has to be some situation that is recognized as the end of the game where the player is informed that he/she has won. • Implement a command ‘back’ that takes you back to the last room you have been in. If you had visited 10 rooms in a row since the beginning of the game and you used the command ’back’ 10 times you should go back to where you started. Therefore, the system should keep track of the rooms you have visited using the command ’go’ but not the command ’back’. • Add at least five new commands (in addition to those that were already present in the code and the back command). Challenge tasks: • Add characters to your game. Characters are people or animals or mon- sters — anything that moves, really. Characters are also in rooms (like the player and the items). Unlike items, characters can move around by themselves. • Make the characters able to interact with the player similar to using a Command pattern. • Extend the parser to recognize three-word commands. You could, for example, have a command give bread dwarf to give some bread (which you are carrying) to the dwarf. • Add a magic transporter room — every time you enter it you are trans- ported to a random room in your game. CPSC3175 — Spring 2021 — Rodrigo A. Obando, Ph.D. — CSU 4 • Each item may also have volume besides weight and the player can carry items only up to a certain volume. • Add the multiplayer/threading capabilities to the game. • In a multiplayer game, have the player drop all items if either dies or leaves the game. • Create locked doors and use keys to open them. • Generate your rooms, their connections, and all items randomly every time you start your game or the server if it is a multiplayer game. • Create a game reader to have the game read a file where the layout of the rooms, items and other characters start. This basically substitutes the createRooms: method with a readLevel: method. • Create a role-playing game where the player may grow in a series of areas (strength, spells, mastery, etc). • Provide a way to have the players wear armor or use weapons. • Make weapons/armor wear out. • Give selling/buying value to all items. • Create a trading room where you can buy or sell items. • Create a battle system where your character may engage in fights with other characters. • Create a quest system which can be used to have your character com- plete specific tasks to obtain items or information that otherwise would be unaccessible. • Create a way to leave/save the game and come back to it later (single- player). • Create a way to leave and come back to the game (multiplayer). • Others. You can come up with additional challenge tasks yourself. You have to discuss those with me and get my approval before you implement them. I will advise you if you have picked something that is too difficult or too much work. Note: If you implement a challenge task you should use it in the game. CPSC3175 — Spring 2021 — Rodrigo A. Obando, Ph.D. — CSU 5 Presentation Report Log Game Total 100 100 100 700 1000 Table 1: Final Project Deliverables. Score/Team One member Two members Three members 490-553 Base functionality +2 Challenge tasks +5 Challenge tasks 560-623 +2 Challenge tasks +5 Challenge tasks +7 Challenge tasks 630-700 +5 Challenge tasks +7 Challenge tasks +10 Challenge tasks Table 2: Game by number of members and tasks. 6 Submission and Assessment You have to submit the C# project in CougarView/D2L. All code must be professionally written (comments and indentation!) and will be graded for • correctness • appropriate use of language constructs • style (commenting, indentation, etc.) • difficulty (extra credit for difficult extensions) You also have to submit a report that includes • the name and a short description of your game • the description should include at least a user level description (what does the game do?) and a brief implementation description (what are important implementation features?) and which design patterns and where they are used. • special features of your game • known bugs or problems (Note: for a bug in your code that you document yourself, you may not lose much credit — maybe none, if it is in a challenge task. For bugs that we find that you did not document you will probably lose credit. Test your system thoroughly.) • a log of all the time allocated to this project. The log should include date, time of day, length of time, team members and task for each entry. You may use a spreadsheet to keep this log. The assignment must be handed in and presented to a panel of judges (fac- ulty members or just me). Late submissions will not be accepted! If you, for any reason, cannot hand in or post the project on the due date, you have to hand your assignment in earlier! CPSC3175 — Spring 2021 — Rodrigo A. Obando, Ph.D. — CSU 6 The presentation Your work will be assessed after a presentation of your game. You will not be graded without this presentation. You are expected to have written all the new code yourself (everything else is plagiarism!) and to be able to explain in detail all of the code you have written. Your grade for this assignment will reflect your understanding
Answered Same DayMay 02, 2021

Answer To: CPSC3175 — Spring 2021 — Rodrigo A. Obando, Ph.D. — CSU 1 CPSC3175 Final Project The Adventure/Role...

Swapnil answered on May 03 2021
143 Votes
82826/The AdventureRole Playing Game/.gitignore
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Result
s
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# TypeScript v1 declaration files
typings/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
82826/The AdventureRole Playing Game/App.config




82826/The AdventureRole Playing Game/App.xaml
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Prometheus_Adventure_RPG"
StartupUri="MainWindow.xaml">




82826/The AdventureRole Playing Game/App.xaml.cs
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace Prometheus_Adventure_RPG
{
///
///

public partial class App : Application
{
}
}
82826/The AdventureRole Playing Game/DataModel/Config.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace Prometheus_Adventure_RPG.DataModel
{
sealed class Config
{
public static Config Load() => Application.LoadComponent(new Uri("/DataModel/Config.xaml", UriKind.Relative)) as Config;
public string StartEventKey { get; set; }
public Dictionary Events { get; set; } = new Dictionary();
}
}
82826/The AdventureRole Playing Game/DataModel/Config.xaml







The year is 5285 B.C. You are Prometheus, the Titan of foresight. You have just created the human race, to whom you wish to give the gift of fire. However, Zeus disagrees with you, and has issued an order that fire shall never be given to mortals. This places some tough decisions ahead of you.






Humans are currently nothing more than hunters and gatherers, and you soon realize that they will not advance toward substantial civilization without fire.










You steal a spark of fire from the gods on Olympus, and give it to humans as your gift. They are still a primitive society, but your gift gives them some potential to become more advanced. However, you fear that you will attract Zeus's attention should give them additional help against his...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here