好的,我只学习了大约一周的 java 并决定制作一个基于文本的游戏。在我开始使用线程之前,一切都运行得很顺利。我希望能够检测用户是否在游戏的任何部分输入“inv”来检查他们的库存。唯一的问题是当我开始游戏时,控制台会询问“你想玩游戏吗?” 你必须输入“是”两次。我认为这是因为线程有一个 if 语句来检查它是否等于“inv”,然后检查用户是否输入“是”来开始游戏。
(我知道它可能非常低效的代码,这是我的第一个游戏 xD)
主班
import java.util.Scanner;
public class Game extends gameClass{
public static void main(String[] args) throws InterruptedException{
Scanner input = new Scanner(System.in);
Thread t1 = new Thread(new gameClass());
t1.start();
Menu.menu();
gameClass.beginning();
}
}
菜单类
import java.util.Scanner;
public class Menu{
public static void menu() throws InterruptedException{
Scanner input = new Scanner(System.in);//keyboard input
boolean playingGame=false;
String yesno;
System.out.println("Welcome! Would you like to play?");
while(playingGame==false){//repeats if until user input yes/no.
yesno = input.nextLine();
if (yesno.equalsIgnoreCase("yes")){
playingGame = true;
System.out.println("Great!");
这是来自“gameClass”的线程
public void run(){
Scanner input = new Scanner(System.in);
try{
while(true){
if (input.nextLine().equalsIgnoreCase("inv")){
System.out.println(inventory);
}else if ((input.nextLine().equalsIgnoreCase("help"))||(input.nextLine().equalsIgnoreCase("what do i do"))){
help();
}
Thread.sleep(200);
}
}catch(Exception e){}
}
public static void help(){
}
}
注意:我没有粘贴所有代码。
因此,当控制台询问“欢迎!你想玩?' 我必须先输入'yes',因为线程正在检查下一个输入是否是'inv' 然后我可以继续输入'yes'来告诉我要播放的程序。
任何帮助将不胜感激,这让我发疯了。
如果您需要更多信息,请问我 :)