gpt4 book ai didi

java - 初学者 : Adding a Teleport Room to World Of Zuul

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:23 25 4
gpt4 key购买 nike

我有一个计算机实验室,我们必须在其中完成文字冒险游戏“World of Zuul”。为此,我们必须完成几个步骤,例如创建更多房间、创建项目类以及向房间添加项目。最后一步是在游戏中添加一个传送室。以下是项目表中的文本:

Implement a “teleport room” that has an entrance but no exit. The short description is “in a room with blank walls and no obvious exit”. When you perform the look command in the teleport room, there is a 75% chance that you will just stay in the teleport room and see the description above. There is a 25% chance that you will teleport randomly into one of the other N rooms and then you will see a description of that room. You will need to think about re-organizing the relationship between the Room class and the Game class to make this happen.

我不知道该怎么做。非常感谢任何帮助。

房间等级:

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

/**
* 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 Kölling and David J. Barnes
* @version 2011.08.08
*/

public class Room
{
private String description;
private HashMap<String, Room> exits; // stores exits of this room.
private HashSet<Item> items;

/**
* 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<String, Room>();
items = new HashSet<Item>();
}

/**
* 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);
}

/**
* Add items into a room
* @param item The item which will be added to the room
*/
public void addItem(Item item)
{
items.add(item);
}

/**
* @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 + ".\n" + getExitString() + "\n" + getItemString();
}

/**
* 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<String> keys = exits.keySet();
for(String exit : keys) {
returnString += " " + exit;
}
return returnString;
}

/**
* Return a string describing the room's items and descriptions, for example
* "Items: Book, (insert description here".
* @return Details of the room's items.
*/
private String getItemString()
{
String itemString = "items: ";
if(items.size() < 1) {
itemString = itemString += "There are no items here.";
}
else {
for(Item item : items) {
itemString+= item.getName() + "; " + item.getDescription() + ". ";
}
}
return itemString;
}

/**
* 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);
}
}

游戏类别:

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, labyrinth, teleport_room;
Item book, stick, knife, spoon;

// 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");
labyrinth = new Room("in the University Labyrinth");
teleport_room = new Room("in a room with blank walls and no obvious exit");

//create the items
book = new Item("Book", "A book containing useless information", 5);
stick = new Item("Stick", "A large stick, can be used for protection", 10);
knife = new Item("Knife", "A dull butter knife", 5);
spoon = new Item("Spoon", "A tablespoon, good for consumption of cereal", 5);

// initialise room exits
outside.setExit("east", theater);
outside.setExit("south", lab);
outside.setExit("west", pub);
outside.setExit("north", labyrinth);

theater.setExit("west", outside);

pub.setExit("east", outside);
pub.setExit("west", labyrinth);

lab.setExit("north", outside);
lab.setExit("east", office);

office.setExit("west", lab);
office.setExit("north", teleport_room);

labyrinth.setExit("south", pub);
labyrinth.setExit("east", outside);

//initialize room items
outside.addItem(book);
labyrinth.addItem(stick);
lab.addItem(knife);
office.addItem(spoon);

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")) {
System.out.println(currentRoom.getLongDescription());
}
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
}
}
}

最佳答案

您基本上必须创建一个继承自“Room”的类“TeleporterRoom”然后您在新类中覆盖方法“getExit”。您可以在此处计算更改到另一个房间的概率。

关于java - 初学者 : Adding a Teleport Room to World Of Zuul,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29881311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com