Java 如何更换旧房间
我对此进行了研究,到目前为止还没有在网站上找到我想要的东西。我或多或少地在尝试一个半基本的基于文本的冒险类型游戏,玩家可以选择一个选项,比如看、漫游、睡眠等。我已经为Room创建了类,并初始化了它和所有其他的类,并且设置了描述等。在其中一个选项中,你进入了一个洞穴,而我还没有从其他人和我的老师那里学到足够的知识来允许你所在区域的描述发生变化。到目前为止,这方面的代码行如下:Java 如何更换旧房间,java,data-structures,Java,Data Structures,我对此进行了研究,到目前为止还没有在网站上找到我想要的东西。我或多或少地在尝试一个半基本的基于文本的冒险类型游戏,玩家可以选择一个选项,比如看、漫游、睡眠等。我已经为Room创建了类,并初始化了它和所有其他的类,并且设置了描述等。在其中一个选项中,你进入了一个洞穴,而我还没有从其他人和我的老师那里学到足够的知识来允许你所在区域的描述发生变化。到目前为止,这方面的代码行如下: public void Gameloop(Room startRoom) { String input;
public void Gameloop(Room startRoom)
{
String input;
boolean notDead = false;
Room currentRoom = startRoom;
while(!notDead)
{
//Shows description of the room
input = JOptionPane.showInputDialog(null, currentRoom.getDescription() + " What do you do? \n(l)ook around\n(g)rab a stick\n(s)leep.");
这是游戏的开始,你在森林里。描述正确,通过选择提升都是正确的。问题在于这方面的代码
if(input.equalsIgnoreCase("l"))
{
input = JOptionPane.showInputDialog(null,"You see trees and a cave. Do you want to go into the casve? \n(y)es \n(n)o");
if(input.equalsIgnoreCase("y"))
{
input = JOptionPane.showInputDialog(null,currentRoom.getDescription() + " Do you want to set up a camp?\n(y)es\n(n)o");
具体的问题是,我根本没有学会如何实施房间更改,否则,游戏的基础将是健全和可行的,选项将更加周密,项目系统将在稍后实施。基本上,我如何改变这个人所在的房间。注意,这个游戏没有GUI,它是基于你为每一个动作输入一个字母而设计的。我会使用这里的策略模式。我会给你一些伪代码让你开始:,注意这不是编译。 其思想是创建一个IRoom接口。这将允许您创建任意多个不同类型的房间。每个文件室都可以定义此文件室中可能的操作,因此您可以向林文件室添加某些操作,例如。 它还有一种方法可以确保房间执行动作。这可能会导致roomchange,因此它将返回一个新的IRoom
public class Game {
private IRoom currentRoom;
public void Gameloop(IRoom startRoom){
while(!notDead)
{
//Shows description of the room
input = JOptionPane.showInputDialog(null, currentRoom.getDescription() + " What do you do? " + dissplayPossibleActionsToUser(startRoom.getPossibleActionsInRoom()));
Action chosenAction = dericeActionFromImput(input);
currentRoom = startRoom.performAction(chosenAction);
}
}
}
public interface IRoom{
//Returns all the actions the current room provides
List<Actions> getPossibleActionsInRoom();
//Does the action
IRoom performAction(Action action);
}
public enum Actions{
LOOK, WANDER, SLEEP;
}
public class Forest implements IRoom{
public List<Actions> getPossibleActionsInRoom(){
return new ArrayList(Actions.wander);
}
public IRoom performAction(Action action){
if(action == wander){
return new HouseRoom();
}
}
}
当前房间=洞穴;