我正在编写一个小型的基于文本的游戏,我遇到了while循环问题。
第二次获取输入的主要方法是将它们发送回方法的开头(起始保险库中的每个房间都是一种方法,如下所示:
public static void elseoverseeroffice()
{
command = in.nextLine();
if (command.equals("look around") || command.equals("l") || command.equals("look"))
{
overseeroffice();
}
这是我正在做的一个小例子。
我有它,以便当玩家检查终端时,它进入终端循环:( while循环在底部,另一个文本在那里用于上下文.delay();只是延迟打印输出为了很酷的效果)
public static void overseerterminal()
{
delay();
System.out.println("================================================");
delay();
System.out.println("= VAULT 9 OVERSEER TERMINAL =");
delay();
System.out.println("================================================");
delay();
System.out.println("\n > VAULT 9 OVERSEER INSTRUCTIONS");
delay();
if(elevator_sys==false)
{System.out.println(" > ACTIVATE ELEVATOR SYSTEM");}
else
{System.out.println(" > DEACTIVATE ELEVATOR SYSTEM");}
delay();
if(saferevealed==false)
{System.out.println(" > REVEAL SAFE");}
else
{System.out.println(" > HIDE SAFE");}
System.out.println(" > EXIT");
delay();
delay();
System.out.println("\n TYPE YOUR SELECTION");
while (!command.equals("vault 9 Overseer Instructions") || !command.equals("VAULT 9 OVERSEER INSTRUCTIONS") || !command.equals("ACTIVATE ELEVATOR SYSTEM") || !command.equals("activate elevator system") || !command.equals("REVEAL SAFE") || !command.equals("reveal safe") || command.equals("exit") )
{
command = in.nextLine();
我在终端中有很多选项,所有选项都循环回终端。您可以输入此终端的最后一个命令是
else if (command.equals("exit") )
{
System.out.println("You shut down the terminal.");
elseoverseeroffice();
break;
}
我在那里休息以停止循环,但如果它在监督办公室之前,它不会运行,如果我有休息,那么elseoverseeroffice();在while循环之外,如果我在房间中键入一个不是有效的命令,它会将播放器放回终端循环中。
以下是命令行中的一些复制和粘贴文本:
You press a button on the terminal, and it springs to life, displaying the need to input a password.
Type the password.
excalibur
================================================
= VAULT 9 OVERSEER TERMINAL =
================================================
> VAULT 9 OVERSEER INSTRUCTIONS
> ACTIVATE ELEVATOR SYSTEM
> REVEAL SAFE
> EXIT
TYPE YOUR SELECTION
exit
You shut down the terminal.
look around
**Overseer's Office**
This small important looking room is lit by a circular light.
A central round desk sits in the middle of the room.
There is an entrance to your east.
what
what
INVALID COMMAND
I am back in the terminal
INVALID COMMAND
exit
You shut down the terminal.
see
我不知道发生了什么。只有当我在房间里时,它才会让我回到终端方法。我可以在另一个房间里犯错误(每个房间都是一种方法,因为它们是个人的),它会说"你不能这样做"。
有任何帮助吗?我知道这很长,但如果您需要更多代码,请告诉我什么,我会评论它。我不想上传整个程序。
P.S 这也发生在我的程序的后期部分。整个事情在玩家健康状况大于0时运行,并且我有一个对玩家来说非常苛刻的房间。 如果玩家在另一个房间进入另一个循环,然后进入instakill房间,他们就不会被杀死。也许我应该有导致最终游戏方法,我不确定。
谢谢大家,先来这里发帖。
答案 0 :(得分:1)
应该是
while ((!command.equalsIgnoreCase("vault 9 Overseer Instructions") &&
!command.equalsIgnoreCase("activate elevator system") &&
!command.equalsIgnoreCase("reveal safe")) || command.equalsIgnoreCase("exit") )