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.