Menu

Lab Continues Zuul Project Make Copy Lab 1 Zuul Project Folder Eg Folder Named Lastname Zu Q43876554

  1. This lab continues the Zuul project. Make a copy of your Lab 1Zuul project folder (e.g., the folder named LastName-zuul1) andsave it as LastName-zuul, using your last name, e.g.,Smith-zuul.
  2. Set up a Git repository for your Zuul project by following theinstructions Set Up a Repository for a Project. (Start followingalong at 0:25 in the video since you already have an existingproject.)
  3. In Git, create a branch called ‘zuul2-refactoring’ and moveonto the branch. You will do all your work for this lab on thisbranch, committing after each exercise.git branch zuul2-refactoringgit checkout zuul2-refactoring
  4. Complete Exercises 6e: 8.5, 8.6, 8.7, 8.8, 8.11 / 5e: 6.5, 6.6,6.7, 6.8, 6.11.
  5. After each exercise:
    1. Test your program. The changes you make in these exercises arerefactorings and should not change the behavior of the game. Aftereach step make sure everything still works as it did before.
    2. Don’t forget to document your changes.
      • For any changed classes, be sure your name is in the @authorlist and update the version.
      • As you add and update methods make sure each method has acomment header that correctly describes its behavior using javadoc,including @param and @return tags.
    3. When an exercise is complete, commit your changes in Git with acommit message indicating the exercise you just completed as wellas a brief description of the changes you made. For example:git add .git commit -m”Completed exercise 8.5 – extracted method printLocationInfo”It is critical that you commit after each exerciseso that all exercises can be graded. Later exercises change thecode from earlier exercises, and the instructor will be able tograde the early exercises by looking back in your commithistory.
  6. When you have completed all the exercises, make sure yourbranch is clean. (When you do ‘git status’ it should say “On branchzuul2-refactoring. nothing to commit, working tree clean”)
  7. Merge your branch into the master:git checkout mastergit merge zuul2-refactoring

Game code

/**
* 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 beextended
* to make it more interesting!
*
* To play this game, create an instance of this class and call the”play”
* method.
*
* This main class creates and initialises all the others: itcreates all
* rooms, creates the parser and starts the game. It also evaluatesand
* executes the commands that the parser returns.
*
* @author Michael Kölling and David J. Barnes
* @version 2016.02.29
*/

public class Game
{
private Parser parser;
private Room currentRoom;
  
/**
* Create the game and initialise its internal map.
*/
public Game()
{
createRooms();
parser = new Parser();
}

/**
* Create all the rooms and link their exits together.
*/
private void createRooms()
{
Room outside, theater, pub, lab, office;
  
// create the rooms
outside = new Room(“outside the main entrance of theuniversity”);
theater = new Room(“in a lecture theater”);
pub = new Room(“in the campus pub”);
lab = new Room(“in a computing lab”);
office = new Room(“in the computing admin office”);
  
// initialise room exits
outside.setExits(null, theater, lab, pub);
theater.setExits(null, null, null, outside);
pub.setExits(null, outside, null, null);
lab.setExits(outside, office, null, null);
office.setExits(null, null, null, 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 commandsand
// 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 boringadventure game.”);
System.out.println(“Type ‘help’ if you need help.”);
System.out.println();
System.out.println(“You are ” +currentRoom.getDescription());
System.out.print(“Exits: “);
if(currentRoom.northExit != null) {
System.out.print(“north “);
}
if(currentRoom.eastExit != null) {
System.out.print(“east “);
}
if(currentRoom.southExit != null) {
System.out.print(“south “);
}
if(currentRoom.westExit != null) {
System.out.print(“west “);
}
System.out.println();
}

/**
* 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(“quit”)) {
wantToQuit = quit(command);
}

return wantToQuit;
}

// implementations of user commands:

/**
* Print out some help information.
* Here we print some stupid, cryptic message and a list ofthe
* command words.
*/
private void printHelp()
{
System.out.println(“You are lost. You are alone. Youwander”);
System.out.println(“around at the university.”);
System.out.println();
System.out.println(“Your command words are:”);
System.out.println(” go quit help”);
}

/**
* Try to go in one direction. If there is an exit, enter
* the new room, otherwise print an error message.
*/
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 = null;
if(direction.equals(“north”)) {
nextRoom = currentRoom.northExit;
}
if(direction.equals(“east”)) {
nextRoom = currentRoom.eastExit;
}
if(direction.equals(“south”)) {
nextRoom = currentRoom.southExit;
}
if(direction.equals(“west”)) {
nextRoom = currentRoom.westExit;
}

if (nextRoom == null) {
System.out.println(“There is no door!”);
}
else {
currentRoom = nextRoom;
System.out.println(“You are ” +currentRoom.getDescription());
System.out.print(“Exits: “);
if(currentRoom.northExit != null) {
System.out.print(“north “);
}
if(currentRoom.eastExit != null) {
System.out.print(“east “);
}
if(currentRoom.southExit != null) {
System.out.print(“south “);
}
if(currentRoom.westExit != null) {
System.out.print(“west “);
}
System.out.println();
}
}

/**
* “Quit” was entered. Check the rest of the command to see
* whether we really quit the game.
* @return true, if this command quits the game, falseotherwise.
*/
private boolean quit(Command command)
{
if(command.hasSecondWord()) {
System.out.println(“Quit what?”);
return false;
}
else {
return true; // signal that we want to quit
}
}
}

BlueJ: my_zuul-2 New Class... Parser Compile Game Teamwork Command CommandWords Share... Testing Room Run Tests - - - - - > r

BlueJ: my_zuul-2 New Class… Parser Compile Game Teamwork Command CommandWords Share… Testing Room Run Tests – – – – – > recording End Cancel Show transcribed image text BlueJ: my_zuul-2 New Class… Parser Compile Game Teamwork Command CommandWords Share… Testing Room Run Tests – – – – – > recording End Cancel

Expert Answer


Answer to This lab continues the Zuul project. Make a copy of your Lab 1 Zuul project folder (e.g., the folder named LastName-zuul…

OR