联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2019-05-24 11:18

CSC72003 Assignment 2

Weight: 30% of your final mark

Due: 24 May 2019 10 pm

Specifications

Your task is to complete various exercises in BlueJ, using the Java language, and to submit these via

the MySCU link created for this purpose.

Marking criteria includes:

Use of correct coding style, including the use of comments;

Accuracy of coding;

Use of suitable coding structures;

Correct submission and naming conventions of assessment items as required.

Getting Help

This assignment is to be completed individually. It is the opportunity to gain an understanding of the

concepts of object oriented programming and coding syntax. It is important that you master these

concepts yourself. You are permitted to work from the examples in the study guide or textbook but

you must acknowledge assistance from other textbooks or classmates. In particular, you must not

use online material or help from others, as this would prevent you from mastering these concepts.

Who can you get help from? Use this diagram to determine from whom you may seek help with

your program.

Encouraged

Attribution Required

Ask tutor

Not acceptable

Lecturer Tutors Online

Forums

Relatives Students

outside unit Hired coders

Classmates Private

Tutors Other

Part I:

Set up your assignment

To set up your assignment you will need to do the following:

Create a folder called username-A2. For example, mine would be ahendr10-A2.

Copy the zuul-bad project in chapter 8 of the book projects to your username-A2

folder.

Create a word document called username-A2-documentation. For example, mine

would be ahendr10-A2- documentation. Add your full name and student id to the

footer. You will lose marks if you do not do this. Save this word document to your

username-A2 folder.

After you have set up your assignment open the zuul-bad project In BlueJ, create a new

instance of the Game class, run the play method and familiarize yourself with the game.

You should also:

Review the code style guide in topic 7 as this is the style you will be required to use

in your assignment.

Download chapter 6 of the text book from topic 7 on mySCU as you will need this for

the assignment.

NOTE: When you submit your assignment, you will need to zip up your username-A2

folder and upload onto mySCU

Design your game

Using the given zuul game as a starting point, you must design your own game.

Some possible game scenarios are described in Exercise 6.3 of the text. If you find it difficult

to visualize this sort of game scenario, try modelling your game on some familiar real-world

location. If you need additional inspiration, you can try playing the original Colossal Cave

Adventure game.

You must have the following in your game:

Your game scenario must have at least six (6) different rooms.

Your game scenario must have at least six (6) types of exits - north, south, east, west,

up, down and any other you require. This requirement does NOT mean that each

room must have 6 exits.

Your game scenario must include at least four (4) items that the player could find,

pick up and potentially use.

? Your game must have some way for the player to win. Most likely, this will be by

achieving some goal such as finding a particular item, surviving for some specified

number of moves... whatever makes sense for your game.

Written Exercise 1

Write a brief description of your game in your word document. You must:

Describe your game including the back story and the setting

List the items in the game

Explain how the player wins

Written Exercise 2

Draw a map for your game scenario. You must:

Label the rooms

Label the exits (connections between rooms)

Specify the locations of the items

The map can be hand-drawn. You do not need to use a drawing program but your map must

be clearly readable. This map must also be placed in the Word doc.

Part 2:

Written Exercise 3

Your game has 6 exits however the zuul-bad game only has 4 exits. Your will also have more

rooms than zuul-bad and they will have different names. Copy the following template into

your word document and replace the text for each of the methods. You must identify and

describe the changes you would need to make to the zuul-bad project to convert it into your

game. You need to consider the additional exits and rooms you have in your game. DO NOT

WRITE THE CODE…YOU WILL NOT GET ANY MARKS you must identify and describe the

changes. I have completed the Room class, so you can see what is required.

--------------------TEMPLATE START-------------------

Class Room

Instance variables

Add an instance variables of type Room for the up exit

Add an instance variables of type Room for the down exit

setExits method

Add a parameter of type Room to the setExits method for the up exit

Add a parameter of type Room to the setExits method for the down exit

? Add an if statement to the setExits method to assign the up parameter to the up

instance variable

Add an if statement to the setExits method to assign the down parameter to the

down instance variable

getDescription method

no changes needed

Class Game

Instance variables

Replace this text. Identify and describe the changes you need to make to the

instance variables to add your additional exits and rooms in point form. If no

changes are needed write no changes needed

createRooms method

Replace this text. Identify and describe the changes needed in the createRooms

method to add your additional exits and rooms in point form. If no changes are

needed write no changes needed

play method

Replace this text. Identify and describe the changes needed in the play method to

add your additional exits and rooms in point form. If no changes are needed write

no changes needed

printWelcome method

Replace this text. Identify and describe the changes needed in the printWelcome

method to add your additional exits and rooms in point form. If no changes are

needed write no changes needed

processCommand method

Replace this text. Identify and describe the changes needed in the processCommand

method to add your additional exits and rooms in point form. If no changes are

needed write no changes needed

printHelp method

Replace this text. Identify and describe the changes needed in the printHelp method

to add your additional exits and rooms in point form. If no changes are needed write

no changes needed

goRoom method

? Replace this text. Identify and describe the changes needed in the goRoom method

to add your additional exits and rooms in point form. If no changes are needed write

no changes needed

quit method

Replace this text. Identify and describe the changes needed in the quit method to

add your additional exits and rooms in point form. If no changes are needed write

no changes needed

--------------------TEMPLATE FINISH-------------------

Part 3:

Written Exercise 4

The printWelcome method and the goRoom methods contain code duplication and both

print a description of the current room and a list of the exits. This is not a good design.

Explain why.

Programming exercise 1

Correct the problem of repeated functionality in the printWelcome and goRoom methods

by refactoring the repeated functionality out of these methods into a method of its own

called getRoomExitsAndDescription. Then call this new method in each place the

description and exits need to be displayed.

Written Exercise 5

In the previous exercise you created the getRoomExitsAndDescription method that prints a

description of the current room and a list of the exits. This code is contained in the Game

class. This is not a good design. Explain why.

Programming exercise 2

Refactor the code that generates the list of the exits into a method named

getExitString in the Room class. This method should return a String listing the exits

from the room. For example, if the room has exits to the north and west, this

method should return a String containing: "north west".

Add a method called getLongDescription to the Room class that returns a String

containing the description of the current room and a list of the exits of a room (hint:

call the getExitString method you just created

Now that each Room has a method that can print information about a Room refactor

the code in the Game class to take advantage of this functionality. i.e. anywhere the

Game class uses the getRoomExitsAndDescription method, change it to use your

getLongDescription method.

Written Exercise 6

Now that we have made some changes to our code create a template similar to the

template I provided for written exercise 3 for the Game and Room class (note that it will be

different as you now have new methods and have refactored code into different classes).

Then identify and describe the changes you would need to make to the zuul-bad project to

convert it into your game, just like you did in written exercise 3. You need to consider the

additional exits and rooms you have in your game. DO NOT WRITE THE CODE…YOU WILL

NOT GET ANY MARKS you must identify and describe the changes.

Written Exercise 7

Answer the following question. Has the design improved? You must explain why or why not.

Programming exercise 3

Update the comments at the beginning of the Game class, the Room class and the

message displayed by the printWelcome method so that they describe your game.

Update the Game and Room class so that it creates the rooms and exits that you

invented for your game. You do not need to add any items to your game yet. You will

add items later.

Part 4

Programming exercise 4

Even with the improvements we have made to our code there are a lot of places that need

to be changed to add a new exit. It would be better if it were possible for an exit to have any

arbitrary name and that when given the name of an exit we could find the associated Room

that lies beyond. This should sound like a good job for a HashMap where the name of an

exit is the key and the Room lying beyond the exit is the value. Improve the design of the

Room class by refactoring it so that it uses a HashMap to store the exits instead of an

individual field for each exit.

Play the game to check that it still works.

Part 5

Programming exercise 5

Your game scenario requires that there be items positioned throughout the world that the

player can pick up and possibly use. An item sounds like something that should be

represented by an object! So create an Item class to represent the items in your game. You

will need to decide what fields your Item class needs to have, what parameters the

constructor will require and what methods the class will have. At a minimum, items will

have a name and a description. However, items may have any other attributes that make

sense for your game (e.g. weight, colour, value, destructive power ..)

Programming exercise 6

Now that there is a class for representing Items we need a way to allow the rooms to

contain an item. Modify the Room class so that one item can be added to or removed from

the room. You will need to think about what fields and methods to add to the Room class.

Also think about what the methods that you add should do when an attempt is made to add

an item to a room that already contains an item, or an attempt is made to remove an item

from a room that does not contain an item.

Programming exercise 7

Now that a room can contain an item, when the player enters a room he/she should be told

about the item in that room (if there is one). Modify the appropriate code so that if the

player enters a room containing an item, the name and description of the item are displayed

along with the description of the room and the list of exits.

Programming exercise 8

Edit the code in the Game class so that the items for your game are created and added to

the appropriate rooms at the start of the game. Recall that your game must include at least

four items. Be sure to test any methods that you add or modify.

Play the game to ensure that your items are appearing in the rooms.

Part 6

Now that rooms can contain items and a player will know when they enter a room with an

item, it would be nice if the player could pick up and carry items. Add functionality to the

Player class that will allow the player to pick up and drop items. The player should be able to

carry any number (i.e. a collection) of items.

Programming exercise 9

Modify the Game class so that it will recognize the command take. When the user enters

the "take" command, the item in the current room, if there is one, should be added to the

items that the player is carrying and a message should be printed indicating that the player

has taken the item. If there is no item in the current room the take command should print

an error message. Be sure to test any methods that you add or modify. (Hint: Remember

that one task of the Game constructor is to "teach" the CommandReader what words are

valid commands. Thus, you will need to make a change in Game's constructor if you want to

introduce a new command.)

Play the game to be sure the take command works!

Programming exercise 10

Modify the Game class so that it will recognize the command inventory. When the user

types "inventory" the game prints the names of the items that the player is currently

carrying. You should think carefully about where the list of item names should be generated.

(Consider the fact that the player is carrying the items and think about how the list of exits

for a room is generated and displayed.)

Play the game to be sure the inventory command works!

Programming exercise 11

Add support to the game for a drop command so that the player can drop an item by name

(e.g. "drop book"). The dropped item should appear in the current room. If the current room

already contains an item, the drop command should print an error message indicating that

the room is full and the player should continue to carry the item.

Play the game to be sure the drop command works!

Programming exercise 12

Notice that when you use the help command take, inventory and drop do not appear as

command words. Modify the printHelp method of the Game class so that it automatically

displays any new command words that are added to the game. Do not hard code the words

in the printHelp method. Hint: you should modify the CommandWords class to do this.

Play the game to be sure the modified help command works - celebrate!

THIS IS END OF THE REQUIRED PART OF THE ASSIGNMENT. Below are bonus

enhancements:

If you completed all of the above parts, you may complete any or all of the following

exercises for extra credit. The excercises can be found in the provided text book chapter

from topic 7 on mySCU

PLEASE NOTE YOU MUST:

Explicitly state which of these bonus problems you have done in your word

document or they will not be marked.

Provide the code you have written for these bonus exercises in your word

document or they will not be marked.

Problems worth at most 2 extra points:

Exercise 6.41 in the text.

Exercise 6.42 in the text.

Problems worth at most 4 extra points:

Exercise 6.23 in the text.

Exercise 6.43 in the text.

? Exercise 6.44 in the text.

Exercise 6.45 in the text.

Allow each room to contain a collection of items (rather than just one).

Modify the game so that only a list of the names of the items in a room are displayed

when the player enters. Then add a look command that allows the player to look at

an item in the current room by name. For example, if the player types look book and

there is an item named "book" in the current room, your game should display the

description of that item. If there is no such item, your game should display an error

message. If the player enters the look command with no second word, it should

display the entire description of the room, its exits and the names of any items

again.

Problems worth at most 6 extra points:

Exercise 6.26 in the text.

Exercise 6.47 in the text.

Modify your game to allow the player to win (as you described in your game

scenario).

Problems worth at most 8 extra points:

Do Exercise 6.48 in the text. Note that you must do Exercise 6.47 before doing this

one. Hints:

You can add the following method to the Room class to randomly choose an exit for the

character when it moves. Note that exits is the field (of type HashMap) that contains the

exits for the room - if you used a different field name, use that name instead.

/**

* choose a potential exit at random

*/

public String randomExit() {

Object [] dirs = exits.keySet().toArray();

int index = (int) (Math.random() * dirs.length);

return (String) dirs[index];

}

Your test cases for character movement do not need to check the location of the character

after moving (because characters may move randomly).


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp