Assignment title: C# or JAVA
Assignment Overview
You are required to logically extend the functionality of the Maze Game introduced during lectures, via the modification of
the code base as well as documentation and implementation of various user stories. You will use the Boost methodology
discussed during lectures, which requires the use of pair programming. Working individually on programming tasks for
this assignment is discouraged and will only be approved when necessitated by circumstances. All documentation, other
than the customized game map, must be completed individually.
The code base provided for this assignment has already implemented the "warm up" and some "sets".
You will be
implementing numerous other "sets" for this assignment using the Boost methodology. The "warm down" stage is not
required.
You are free to take ideas discussed during lectures and implement these in your own version of the code base provided
in Moodle for this assignment.
This assignment will be marked according to the functionality of your code, in addition to the elegance and extensibility of
your design and quality of your documentation.
Note: It is recommended that you spend some time familiarising yourself with the provided code base prior to beginning
any work on this assignment. You should start by spending some time exploring the structure of the code to gain an
understanding of the roles each class plays within the system and then complete Lab 7.
Assignment Requirements
In Pairs:
1. Design and implement a custom environment for your maze game. This requires producing your own unique
hand-drawn map of the maze game environment and changing the HardCodedData file to reflect the locations
and items on your map.
At least six (6) locations, including at least one (1) shop, must be included, as well as
enough items to allow for proper testing of the game functionality. For example, there must be sufficient items to
verify that a player cannot collect an item if the weight restriction has been met. Note: you should not retain the
original locations or items from the provided code base in your version of the game.
2. Implement each of the following deliverables / milestones:
a. functionality as detailed in Lab 7 and Lab 8
b. commands to manage the various item management commands:
i. showInventory
ii. getItem
iii. dropItem
iv. equipItem
v. unequipItem
vi. purchaseItem
vii. sellItem.
Ensure that weight restrictions are not exceeded and that the context for each command is appropriate.
For example, purchasing and selling of items should only be able to occur in a shop.
c. basic combat functions, allowing a player to attack or to be attacked by a non-player character (NPC). A
player may flee combat or continue to attack until such time as one combatant loses all life points. The
end result must not be hard-coded, and neither the hostile NPCs nor player may have their attributes
configured in such a way that the final outcome is pre-determined. Note that combat functions should
only be available when the player is in the presence of a hostile NPC.
Individually:
1. Prepare an individual report, to be submitted as a Word document or a PDF, which includes:
a. The student number and name of each person on your team (including yourself)
b. User stories for each of the deliverables / milestones
c. Class diagrams for Lab 7 and Lab 8
d. Sequence diagrams for four (4) of the item management commands
e. A statement of your own personal contribution to the assignment
f. A statement of your partner's contribution to the assignment
g. A reflection of approximately 300 words on how working on this assignment has contributed to your
understanding of design patterns, UML diagrams and the Boost methodology.
Lab week 7 – Implementing Move in the MazeGame
Explore the codebase
1. Download the "Lab 7" code (this code was discussed in the lecture and has implemented the startup use case).
2. Unzip the code and open up the solution in Visual Studio.
3. Spend some time exploring the code, change the startup location in the HardCodedData class and run the project to test the results.
4. Create an Enterprise Architect project called Lab 7 and reverse engineer the code to create class definitions.
5. Create a single class diagram containing all of the classes in the Entity, Boundary and Control packages.
Creating a command parser
Before we can get started on implementing commands and adding further functionality to the Maze Game we need a way of breaking up the user input. Commands have a format of command ie: move west
So what we need to do is break up our user input from a single string into a number of words, and work out which are commands and which are arguments. We can assume that the first word encountered in user input is the command, and what follows are the argument(s). We could even make our command parser a little more user friendly by dropping of commonly used words that are neither commands or useful arguments. ie: if the user typed "go to the north" we could drop to and the.
Lab week 8 – Implementing the Command Pattern and NPCs
Codebase
This lab continues from last week. You need to have completed lab 7 to continue with this labsheet and you are expected to use your own code from last week to work on this week's tasks.
Assignment 2 Hand up
You need to submit the following from today's lab sheet for assignment 2:
• Completed codebase zipped up as lab8.
• A single Class Diagram illustrating all entity, control and boundary classes on the one page.
• A sequence diagram illustrating how the MoveCommand executes.