0

OK、私は Java を 1 週間ほどしか学んでおらず、テキスト ベースのゲームを作りたいと思いました。スレッドを使い始めるまで、すべてが順調に進んでいました。ユーザーがゲームの任意の部分で「inv」を入力してインベントリを確認したかどうかを検出できるようにしたいと考えています。唯一の問題は、ゲームを開始すると、コンソールに「ゲームをプレイしますか?」と尋ねられることです。'yes' を 2 回入力する必要があります。これは、スレッドに「inv」と等しいかどうかを確認し、ユーザーが「yes」を入力してゲームを開始するかどうかを確認する if ステートメントがあるためだと思います。

(おそらく非常に非効率的なコードであることはわかっています。初めてのゲーム 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(){

}
}

注:すべてのコードを貼り付けたわけではありません。


そのため、コンソールに「ようこそ! プレイしますか?' スレッドは次の入力が「inv」かどうかをチェックしているため、最初に「yes」と入力する必要があります。次に、「yes」と入力して、再生したいプログラムを指定します。

何か助けていただければ幸いです。これは私を夢中にさせています。

さらに情報が必要な場合は、私に聞いてください:)

4

2 に答える 2

0

ゲーム内のループは 1 つだけにする必要があります。入力を (1 回) 読み取り、それが inv かどうかを確認し、そうでない場合は、通常のコードを実行します。そこにスレッドを立てる理由はまったくありません。実際、yes を 2 回入力する必要があるのは理にかなっています。同じ入力から 2 回聞いているため、inv と等しいかどうかをチェックするスレッドが最初にそれを聞いて何もせず、2 回目には正しいスレッドが仕事をします。

于 2013-03-30T23:13:02.073 に答える