Zuul-Game -Project Sysy 3110
Java
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.settings
src
uml
.classpath
.gitignore
.project
README
forms-1.3.0-src.zip
forms-1.3.0.jar

README

Read Me
*************************************************
*                 World of Zuul                 *
*                     V 1.0                     *
*                                               *
*                  Developed By:                *
*                   Tanzeel Rana                *
*               Muhammad Mohd Johari            *
*                    Sean Byron                 *
*                  Ethan Aubuchon               *
*                                               *
*             Created October 23, 2012          *
*************************************************

1.0 About:

The world of Zuul is a thrilling, text-based, action adventure fanatasy game.  The player embarks on a misticle journey through the world of Zuul, on a quest to do nothing of note.  Along the way the player will encounter multiple foes, which he/she can choose to slay.  Their scary names may strike fear into your heart but have no fear, for they shall not attack.

1.1 Monsters:

There are three monsters hidden in the world of Zuul.

**********************
*Name       * Health *
**********************
**********************
*Kracken    *   10   *
**********************
*Grendel    *    8   *
**********************
*Goblin     *    3   *
**********************

1.2 Items:

Throught Zuul, there are three items, hidden in plain view in three seperate rooms.  All three of these hold absolutely no purpose.  Each item has a weight.  You cannot exceed the maximum weight of 1000 units.

**********************
*Name       * Weight *
**********************
**********************
*Plant      *   2.0  *
**********************
*Sword      *   7.0  *
**********************
*Pogo Stick *   5.0  *
**********************

1.3 Map:

The World of Zuul consists of 10 rooms.  They are mapped as follows.


                                            *******************
                                            *                 *
                                            *                 *
                                            *                 *
                                            *     Entrance    *
                                            *                 *
                                            *                 *
                                            *                 *
                                            *                 *
                                            ********   ********
                                                   *   *
                                                   *   *
                      *******************   ********   ********   *******************
                      *                 *   *                 *   *                 *
                      *                 *   *                 *   *                 *
                      *                 *****                 *****                 *
                      *     Waiting                Lobby                Dining     *
                      *       Room                                       Room       *
                      *                 *****                 *****                 *
                      *                 *   *                 *   *                 *
                      *                 *   *                 *   *                 *
                      *******************   ********   ********   ********   ********
                                                   *   *                 *   *
                                                   *   *                 *   *
                      *******************   ********   ********   ********   ********
                      *                 *   *                 *   *                 *
                      *                 *   *                 *   *                 *
                      *                 *   *                 *****                 *
                      *    Gallery     *   *     Theatre                Studio     *
                      *                 *   *                                       *
                      *                 *   *                 *****                 *
                      *                 *   *                 *   *                 *
                      *                 *   *                 *   *                 *
                      ********   ********   *******************   ********   ********
                             *   *                                       *   *
                             *   *                                       *   *
                      ********   ********   *******************   ********   ********
                      *                 *   *                 *   *                 *
                      *                 *   *                 *   *                 *
                      *                 *****                 *****                 *
                      *    Workshop              Dressing              Technician   *
                      *                            Room                             *
                      *                 *****                 *****                 *
                      *                 *   *                 *   *                 *
                      *                 *   *                 *   *                 *
                      *******************   *******************   *******************


2.0 Implementation:

2.1 Undo/Redo:

We chose to use an undo and redo stack to help implement the undo and redo methods.  Whenever a new command is entered, if it is a command that we have programmed to be "reversible" (a command we wish for the user to be able to undo), the command is pushed into the undo stack.  Whenever undo is called, the command is popped of the stack, inverted (pick becomes drop, attack becomes heal, go north becomes go south, ect), this reversed command is followed, and then stored into a redo stack.  If redo is called the command is popped out of the stack, reversed, followed, and stuck into the undo stack.  Whenever a reversable command is called, the redo stack is emptied.

2.2 Command words:

The command words have been broken into two categories: reversible and nonreversible.  The non-reversible commands are stored in a final static array of Strings.  The reversible commands are stored as keys in a hashmap, their reverse being stored as the value.  Only reversible commands can be undone.  If a command appears as its own reverse, then the code will go to a hashmap of second words and their reverse.  Currently, this rule only effect go and its directions.

Only reversible commands will be put into the undo/redo stacks, meaning undo and redo will only affect reversible commands.

The commands are as follows:

Reversible:
go - go
pick - drop
drop - pick
attack - heal
heal - attack
***NEW COMMAND****
eat - uneat
uneat - eat (for undo/redo method)

eat
After player has pick up plant, player can now eat to restore player's health to the initial health

uneat
Undo for eat.

Non-reversible:
help
look
undo
redo
quit

2.3 Items and Monster

Items and monsters are stored in hashmaps.  Their string equivalent that the user inputs are the keys.  This makes it easy to return the proper monster or item to the Game class.

*****************ITEM NOW HAVE SPECIFIC FUCTION IN THE GAME*******************
Sword - Increase player damage by one

Plant - can be use to eat and restore player's health

PogoStix - Can be use to skip monster guarding the door(go to other room without killing monster)

3.0 View

Instead of text-based view, player now will have GUI view showing the map and current room where the player are. 

The current room will be in the middle of the map and only the room that has been visited by the player will be shown in the map. 

The exits of the room will be shown to player so that player will know which exit is available.

4.0 Control

For now,player still will be using console input to control the game same as previous milestone.

5.0 Package

All the class have been rearranged into packages to follow MVC representation

Model:
	game.java
	
	Parser.java
	
	Room.java
			
		**removed** 
		
			-exits:HashMap<String,Room>
			-items:HashMap<String,Item>
			-monster:HashMap<String,Monster>	
		
		**Room class now has a hash map that stores the walls of the room 
		  the walls now have monsters items and exits on them insted.
			
	Wall.java 
			
		This class represents the wall of a room. 
 		each room will contain 4 walls
 		each wall can have one monster and one item 	
		
		++ getWall(String) method added, it returns the Wall 
		   corresponding to the String
		
Model.command:
	Command.java
	CommandStack.java
	CommandWords.java
	
Model.object:
	Item.java
	Monster.java
	Player.java

testSuite :
	GameTest.java  *added test for new method eat and unEat,attack with sword and skip monster with PogoStix
	PlayerTest.java *added test for new method eat and unEat
	MonsterTest.java
	CommandStackTest.java
	RoomTest.java
	TestCommand.java
	TestCommandWords.java
	
view:
	Removed *****DrawableRoom.java**** changed to ****MapRoom.java****
	
			MapRoom.java provides support for drawing a visual representation
     		of the room on a JPanel
	
	MapView.java
			
			this class is used to show the room in a 2-D view 
			
	FirstPersonItem.java
	
			FirstPersonItem helps in the visual representation of 
	 		an item on the wall of a Room.
			
	FirstPersonMonster.java
			
			FirstPersonMonster helps in the visual representation of 
	 		an monster on the wall of a Room.
			
	FirstPersonRoom.java
			
			this class is used to represent the room in a 3-D view 
			on the Jpanel
			
	FirstPersonView.java
			
			FirstPersonView is the class that creates the main frame for 
			the game and hold all the panels,menu bars and menu items.It 
			keeps the view updated every time a new move is executed. 
			
	HealthPanel.java
	
			this is a panel at the bottom that represresents the current
			health of a player.
controller:
	FPKeyListener.java
	FPMouseListener.java

editor:
	EditorDriver.java

editor.controller:
	EditorListener.java
	EditorUpdateObject.java

eidtor.model:
	LevelEditor.java

editor.view:
	EditorMap.java
	EditorView.java

save:
	GameSave.java

start:
	GameDriver.java
	WelcomeScreen.java

xml:
	ExitWriter.java
	ItemWriter.java
	MonsterWriter.java
	RoomWriter.java
	TopLevelParser.java
	XMLExit.java
	XMLItem.java
	XMLMonster.java
	XMLParser.java
	XMLReader.java
	XMLRoom.java
	XMLWriter.java


6.0 UML
	
The UML diagram is updated and added the new class for the GUI part (DrawableRoom.java and MapView.java) and rearranged into their package.

Sequence diagram for each command available for the player created.

List of sequence diagram:
play()
goRoom()
pick()
drop()
attack()
heal()
eat()
uneat()