Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Need Coding in JAVA Design your own text-based adventure game, using the given zuul game as a starting point. try modeling your game on some

Need Coding in JAVA

Design your own text-based adventure game, using the given zuul game as a starting point. try modeling your game on some familiar real-world location. If you need additional inspiration, you can try playing the original Colossal Cave Adventure game.

Some additional specifications:

Your game scenario must include at least six different rooms.

There must be at least six types of exits for the rooms in your game. For example, you could use north, south, east, west, up and down. This requirement does NOT mean that each room must have 6 exits -- most or even all rooms will have fewer.

Your game scenario must include at least four 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.

The game class and room class are shared below:

import java.util.Set; import java.util.HashMap;

/** * Class Room - a room in an adventure game. * * This class is part of the "World of Zuul" application. * "World of Zuul" is a very simple, text based adventure game. * * A "Room" represents one location in the scenery of the game. It is * connected to other rooms via exits. For each existing exit, the room * stores a reference to the neighboring room. * * @author Michael Klling and David J. Barnes * @version 2016.02.29 */

public class Room { private String description; private HashMap exits; // stores exits of this room.

/** * Create a room described "description". Initially, it has * no exits. "description" is something like "a kitchen" or * "an open court yard". * @param description The room's description. */ public Room(String description) { this.description = description; exits = new HashMap<>(); }

/** * Define an exit from this room. * @param direction The direction of the exit. * @param neighbor The room to which the exit leads. */ public void setExit(String direction, Room neighbor) { exits.put(direction, neighbor); }

/** * @return The short description of the room * (the one that was defined in the constructor). */ public String getShortDescription() { return description; }

/** * Return a description of the room in the form: * You are in the kitchen. * Exits: north west * @return A long description of this room */ public String getLongDescription() { return "You are " + description + ". " + getExitString(); }

/** * Return a string describing the room's exits, for example * "Exits: north west". * @return Details of the room's exits. */ private String getExitString() { String returnString = "Exits:"; Set keys = exits.keySet(); for(String exit : keys) { returnString += " " + exit; } return returnString; }

/** * Return the room that is reached if we go from this room in direction * "direction". If there is no room in that direction, return null. * @param direction The exit's direction. * @return The room in the given direction. */ public Room getExit(String direction) { return exits.get(direction); } }

/** * 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, create 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. * * @author Michael Klling 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 the university"); 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.setExit("east", theater); outside.setExit("south", lab); outside.setExit("west", pub);

theater.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("quit")) { wantToQuit = quit(command); } // else command not recognised. return wantToQuit; }

// implementations of user commands:

/** * Print out some help information. * Here we print some stupid, 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:"); parser.showCommands(); }

/** * Try to in to 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 = currentRoom.getExit(direction);

if (nextRoom == null) { System.out.println("There is no door!"); } else { currentRoom = nextRoom; System.out.println(currentRoom.getLongDescription()); } }

/** * "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, 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

Recommended Textbook for

Database Administrator Limited Edition

Authors: Martif Way

1st Edition

B0CGG89N8Z

Students also viewed these Databases questions