Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Need to complete the following parts for a Zuul game code: Part 4: Another new command: back o The back command can have only one

Need to complete the following parts for a Zuul game code:

Part 4: Another new command: "back" o The "back" command can have only one word. If there is a second word in the command, just print "Back what?". o The "back" command takes you to the previous room that you visited. (The one you were in immediately before this one.) Print a message to say that you have gone back. o If you are at the beginning of the game, you cannot go back, so just print a message explaining this. o You will need to make various changes to implement this command correctly. o Hint: If you invoke the "back" command twice in a row, where should you be?

Part 6: Another new command "stackBack" o "stackBack" is a one word command. o "stackBack" allows you to go back one room at a time as far as you like (until you reach the beginning of the game). o If you are at the beginning of the game, you cannot go "stackBack", so just print a message explaining this. o You will need to use a Stack (see the Java documentation for information on this class). o Again, you will need to make various changes to implement this command correctly. o Hint: If you invoke the "stackBack" command twice in a row, where should you be? (The answer will normally be different from that of part 4.) o Hint: If you invoke "stackBack" enough times, you will eventually return to the beginning of the game.

Code:

import java.util.*;

/**

*This class is the main class of the "World of Zuul" application.

*"World of Zuul" is a very simple, text based adventure game.Users

*can walk around some scenery. That's all. It should really be extended

*to make it more interesting!

*

*To play this game, make an instance of this class and call the "play"

*method.

*

*This main class creates and initialises all the others: it creates all

*rooms, creates the parser and starts the game.It also evaluates and

*executes the commands that the parser returns.

*

* @authorMichael Kolling and David J. Barnes

* @version 2006.03.30

*

* @author Matthieu Bourbeau

* @version 01 February 11, 2019

*/

public class Game

{

private Parser parser;

private Room currentRoom;

private Room previousRoom;

private Stack roomStack;

/**

* Create the game and initialise its internal map.

*/

public Game()

{

createRooms();

parser = new Parser();

}

/**

* Make all the rooms and link their exits together.

*/

private void createRooms()

{

Room outside, theatre, pub, lab, office;

// create the rooms

outside = new Room("outside the main entrance of the university");

theatre = new Room("in a lecture theatre");

pub = new Room("in the campus pub");

lab = new Room("in a computing lab");

office = new Room("in the computing admin office");

// create some items

Item desk = new Item("Desk", 10);

Item chair = new Item("Chair", 5);

Item beer = new Item("Beer", 0.5);

Item shovel = new Item("Shovel", 2);

Item podium = new Item("Podium", 5);

// add items to rooms

outside.addItem(shovel);

theatre.addItem(desk);

theatre.addItem(chair);

theatre.addItem(podium);

pub.addItem(beer);

pub.addItem(beer);

office.addItem(desk);

lab.addItem(chair);

lab.addItem(beer);

// initialise room exits

outside.setExit("east", theatre);

outside.setExit("south", lab);

outside.setExit("west", pub);

theatre.setExit("west", outside);

pub.setExit("east", outside);

lab.setExit("north", outside);

lab.setExit("east", office);

office.setExit("west", lab);

currentRoom = outside;// start game outside

}

/**

*Main play routine.Loops until end of play.

*/

public void play()

{

printWelcome();

// Enter the main command loop.Here we repeatedly read commands and

// execute them until the game is over.

boolean finished = false;

while (! finished) {

Command command = parser.getCommand();

finished = processCommand(command);

}

System.out.println("Thank you for playing.Good bye.");

}

/**

* Print out the opening message for the player.

*/

private void printWelcome()

{

System.out.println();

System.out.println("Welcome to the World of Zuul!");

System.out.println("World of Zuul is a new, incredibly boring adventure game.");

System.out.println("Type 'help' if you need help.");

System.out.println();

System.out.println(currentRoom.getLongDescription());

}

/**

* Given a command, process (that is: execute) the command.

*

* @param command The command to be processed

* @return true If the command ends the game, false otherwise

*/

private boolean processCommand(Command command)

{

boolean wantToQuit = false;

if(command.isUnknown()) {

System.out.println("I don't know what you mean...");

return false;

}

String commandWord = command.getCommandWord();

if (commandWord.equals("help")) {

printHelp();

}

else if (commandWord.equals("go")) {

goRoom(command);

}

else if (commandWord.equals("look")) {

look(command);

}

else if (commandWord.equals("eat")) {

eat(command);

}

else if (commandWord.equals("back")) {

back(command);

}

else if (commandWord.equals("stackBack")) {

stackBack(command);

}

else if (commandWord.equals("quit")) {

wantToQuit = quit(command);

}

// else command not recognised.

return wantToQuit;

}

// implementations of user commands:

/**

* Print out some help information.

* Here we print a cryptic message and a list of the

* command words.

*/

private void printHelp()

{

System.out.println("You are lost. You are alone. You wander");

System.out.println("around at the university.");

System.out.println();

System.out.println("Your command words are:");

System.out.println(parser.getCommands());

}

/**

* Try to go to one direction. If there is an exit, enter the new

* room, otherwise print an error message.

*

* @param command The command to be processed

*/

private void goRoom(Command command)

{

if(!command.hasSecondWord()) {

// if there is no second word, we don't know where to go...

System.out.println("Go where?");

return;

}

String direction = command.getSecondWord();

// Try to leave current room.

Room nextRoom = currentRoom.getExit(direction);

if (nextRoom == null) {

System.out.println("There is no door!");

}

else {

previousRoom = currentRoom;

currentRoom = nextRoom;

System.out.println(currentRoom.getLongDescription());

}

}

private void look(Command command)

{

if(command.hasSecondWord())

{

System.out.println("Look what?");

return;

}

System.out.println(currentRoom.getLongDescription());

}

private void eat(Command command)

{

if(command.hasSecondWord())

{

System.out.println("Eat what?");

return ;

}

System.out.println("You have eaten now and you are not hungry anymore!");

}

private void enterRoom(Room nextRoom)

{

previousRoom = currentRoom;

currentRoom = nextRoom;

System.out.println(currentRoom.getLongDescription());

}

private void back(Command command)

{

if(command.hasSecondWord()) {

System.out.println("Back what?");

return;

}

if(previousRoom == null) {

System.out.println("Sorry, cannot go back.");

return;

}

roomStack.push(currentRoom);

Room temp = currentRoom;

currentRoom = previousRoom;

previousRoom = temp;

System.out.println("You have gone back to the previous room.");

System.out.println(currentRoom.getLongDescription());

}

private void stackBack(Command command)

{

if(command.hasSecondWord())

{

System.out.println("stackBack what?");

return;

}

if (previousRoom == null)

{

System.out.println("Sorry, cannot go stackBack.");

return;

}

previousRoom = currentRoom;

currentRoom = roomStack.pop();

System.out.println("You have gone stackBack:");

System.out.println(currentRoom.getLongDescription());

}

/**

* "Quit" was entered. Check the rest of the command to see

* whether we really quit the game.

*

* @param command The command to be processed

* @return true, if this command quits the game, false otherwise

*/

private boolean quit(Command command)

{

if(command.hasSecondWord()) {

System.out.println("Quit what?");

return false;

}

else {

return true;// signal that we want to quit

}

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Programming questions