2016-07-11 19 views
-2

私はテキストアドベンチャーゲームを作っていて、プログラムが終了しました。なぜ誰かが助けることができるのかわかりません。おそらく本当にダムのミスをして申し訳ありません、私は初心者です。 感謝:)Java;文章で終了したコード

//Set up scanner "userInput" 
System.out.println("You are in a room"); 
myScanner = new Scanner(System.in); 
String userInput = myScanner.nextLine(); 

//Variables 
int bone = 0; 
int flashlight = 0; 

//Begin Adventure 

if (userInput.equalsIgnoreCase("look") 
    || userInput.equalsIgnoreCase("look around") 
    || userInput.equalsIgnoreCase("obsererve surroundings")) { 
    System.out.println(
     "There are 4 doors; one is blue, one is green, one is red, and one is yellow"); 
} else { 
    System.out.println("You cant do that"); 
} 
if (userInput.equalsIgnoreCase("enter blue door") 
    || userInput.equalsIgnoreCase("enter blue room") 
    || userInput.equalsIgnoreCase("go into blue door") 
    || userInput.equalsIgnoreCase("go into blue room")) { 
    System.out.println("The room is pitch black"); 
    if (flashlight == 1) { 
    if (userInput.equalsIgnoreCase("use flashlight") 
     || userInput.equalsIgnoreCase("use flash light")) ; 
    System.out.println("Light! You can see a bone on a table."); 
    if (userInput.equalsIgnoreCase("take bone") || userInput.equalsIgnoreCase("grab bone")) ; 
    } 
    if (userInput.equalsIgnoreCase("leave room") 
     || userInput.equalsIgnoreCase("exit room") 
     || userInput.equalsIgnoreCase("exit")) ; 
    System.out.println("You return to the central room."); 
} 
if (userInput.equalsIgnoreCase("enter red door") 
    || userInput.equalsIgnoreCase("go through red door") 
    || userInput.equalsIgnoreCase("enter red room") 
    || userInput.equalsIgnoreCase("enter red room")) { 
    System.out.println("There is a man sitting in the chair"); 
} 
if (userInput.equalsIgnoreCase("talk to man") || userInput.equalsIgnoreCase("talk")) { 
    System.out.println("He tells you that you need to go to the yellow room"); 
} 
if (userInput.equalsIgnoreCase("leave room") 
    || userInput.equalsIgnoreCase("exit room") 
    || userInput.equalsIgnoreCase("exit")) { 
    System.out.println("You return to the central room"); 
} 
if (userInput.equalsIgnoreCase("enter yellow door") 
    || userInput.equalsIgnoreCase("enter yellow room") 
    || userInput.equalsIgnoreCase("go into yellow door") 
    || userInput.equalsIgnoreCase("go into yellow room")) { 
    System.out.println("There is a flashlight on a table"); 
} 
if (userInput.equalsIgnoreCase("take flashlight") 
    || userInput.equalsIgnoreCase("grab flashlight") 
    || userInput.equalsIgnoreCase("take flash light") 
    || userInput.equalsIgnoreCase("grab flash light")) { 
    System.out.println("You got that flashlight man"); 
} 
+1

あなただけのユーザ入力= myScanner.nextLine()ライン ''文字列で、一度ユーザーに入力を求めるプロンプトが表示しています。あなたは、繰り返しループを繰り返す必要があります。あなたは、Javaでのプログラミングに精通していますか?そうでなければ、ゲームを書く前に、一般的にJavaやプログラミングに精通したいかもしれません(アルゴリズムなど)。 –

+1

'userInput = userInput.toLowerCase();'どこかで言うべきで、どこでも 'equalsIgnoreCase'ではなく' equals'を使うだけです。 –

答えて

0

はあなたの問題は、一度だけ入力を取得し、それを変更するには期待しているということです。

たとえば、ユーザーが「青いドア」について何か入力したかどうかを確認してから、同じuserInput値に「懐中電灯」が含まれているかどうかを確認します。それは決して真実ではありません。

入力をループオーバーし、ブランチロジックを状態保存し、現在の場所に応じて変更する必要があります。これを行うには多くの方法がありますが、場所、在庫アイテムのリスト、およびあなたが頼りにする可能性のある他の状態を格納する必要があります。たとえば、ユーザーが赤い扉に入って懐中電灯を探すと、懐中電灯を探しても見つからないでしょう。彼らが青いドアに入って、懐中電灯を見つける前に骨を探すなら、何も見つけられません。これを行うロジックは問題の範囲を超えていますが、簡単な例を以下に示します。

System.out.println("You are in a room"); 
myScanner = new Scanner(System.in); 
while(myScanner.hasNext()) { 
    String userInput = myScanner.nextLine();  
    processInput(userInput); 
} 

... 

void processInput(String input) { 
    // process input, while maintaining state of where the user currently is 
} 
関連する問題