我正在寫一個基於小型文本的文本遊戲,並且遇到while循環時遇到了問題。While循環和方法的問題(不會正確退出循環)
獲得輸入的第二時間的主要方法是把它們發送回所述方法的開始(每個房間在起始庫是一個方法,如下所示:
public static void elseoverseeroffice()
{
command = in.nextLine();
if (command.equals("look around") || command.equals("l") || command.equals("look"))
{
overseeroffice();
}
這是一個小我在做什麼的例子:
我擁有它,所以當玩家檢查一個終端時,它會進入終端的循環:(while循環在底部,其他文本在那裏用於上下文。 ();只是延遲打印出來的很酷的效果)
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房間,他們不會被殺死。也許我應該有導致最終遊戲的方法,我不確定。
謝謝你們,先在這裏發帖。
第一件事情,要麼你必須做出退出聲明更低字母或你需要改變,而(str.equalsIgnoreCase(「字符串匹配」) – emotionlessbananas
是啊,我只是看着我的代碼...我有(while)(.... || command.equals(「exit」),而不是||!command.equals(「exit」) –