Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * 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 Kolling and David J. Barnes
- * @version 1.0 (February 2002)
- */
- public class Game
- {
- private Parser parser;
- private Organ currentOrgan;
- private int energy;
- /**
- * Create the game and initialise its internal map.
- */
- public Game()
- {
- createOrgans();
- parser = new Parser();
- energy = 3;
- }
- /**
- * Create all the rooms and link their exits together.
- */
- private void createOrgans()
- {
- Organ circulatorySystem, respitorySystem, upperGI, lowerGI, sinuses;
- // create the rooms
- circulatorySystem = new Organ("in the circulatory system");
- respitorySystem = new Organ("int the respitory system");
- upperGI = new Organ("in the upper GI");
- lowerGI = new Organ("in the lower GI");
- sinuses = new Organ("in the sinuses");
- // set organ exits
- circulatorySystem.setExit("anterior", respitorySystem);
- circulatorySystem.setExit ("posterior", upperGI);
- respitorySystem.setExit ("anterior", sinuses);
- respitorySystem.setExit ("posterior", circulatorySystem );
- upperGI.setExit ("anterior", circulatorySystem );
- upperGI.setExit ("posterior", lowerGI );
- lowerGI.setExit ("anterior", upperGI);
- sinuses.setExit ("posterior", respitorySystem);
- currentOrgan = circulatorySystem; // 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();
- printLocationInfo();
- }
- /**
- * Given a command, process (that is: execute) the command.
- * If this command ends the game, true is returned, otherwise false is
- * returned.
- */
- 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"))
- goOrgan(command);
- else if (commandWord.equals("look"))
- look();
- else if (commandWord.equals("eat"))
- eat();
- else if (commandWord.equals ("energy"))
- energyLevel();
- else if (commandWord.equals("quit"))
- wantToQuit = quit(command);
- return wantToQuit;
- }
- // a command to look around the room
- private void look()
- {
- System.out.println(currentOrgan.getLongDescription());
- }
- // 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:");
- System.out.println(" go quit help");
- }
- // eat glucose to power up
- private void eat()
- {
- if (currentOrgan.getGlucoseLevel() > 0)
- {
- energy += 1;
- currentOrgan.resetGlucoseLevel();
- System.out.println ("you have eaten 1 glucose.");
- }
- else
- {
- System.out.println("there is nothing to eat.");
- }
- }
- private void energyLevel()
- {
- System.out.println ("energy level " + energy);
- }
- /**
- * Try to go to one direction. If there is an exit, enter
- * the new room, otherwise print an error message.
- */
- private void goOrgan(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.
- Organ nextOrgan = currentOrgan.getExit (direction);
- if (nextOrgan == null)
- System.out.println("There is no door!");
- else
- {
- currentOrgan = nextOrgan;
- currentOrgan.generateGlucose();
- printLocationInfo();
- }
- }
- /**
- * "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
- }
- private void printLocationInfo()
- {
- System.out.println (currentOrgan.getLongDescription());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement