2017-05-03 119 views
0

我對這個編碼的東西有點新。任何人都可以幫助我如何循環回到第一選擇。老師希望我們做一個簡單的RPG遊戲,我有一個小問題,我不能回到第一個菜單。這將非常有用,謝謝你。RPG遊戲「回」循環

package looptest; 
    import java.io.*; 

public class LoopTest { 
    public static BufferedReader br; 


    public static void main(String[] args) throws IOException{ 
     br = new BufferedReader (new InputStreamReader(System.in)); 

     // i want loop it back here when you press the back botton 
     System.out.println("What do you want to do?\n" 
       + "[1] Examine\n" 
       + "[2] Speak\n" 
       + "[3] Move"); 
     short choice = Short.parseShort(br.readLine()); 

     while(choice !=3)  

      switch (choice){ 
      case 1: 
       System.out.println("What do you want to examine?\n" 
         + "[1] Bed\n" 
         + "[2] Closet\n" 
         + "[3] Vase\n" 
         + "[4] back"); 
       short choice1 = Short.parseShort(br.readLine()); 
       switch (choice1){ 
        case 1: 
         System.out.println("What a nice bed"); 
         break; 
        case 2: 
         System.out.println("Better not touce the elder's things."); 
         break; 
        case 3: 
         System.out.println("This vase might break if i touched it "); 
         break; 
        case 4: 
        // loops back to the first menu 
         break; 
       } 

       break; 
      case 2: 
       System.out.println("Who do you want to speak to?\n" 
         + "[1] Maiden\n" 
         + "[2] Elder\n" 
         + "[3] Guard\n" 
         + "[4] Back"); 
       short choice2 = Short.parseShort(br.readLine()); 
       switch (choice2){ 
        case 1: 
         System.out.println("Hello there how are you feeling?\n" 
           + "you falling must be very painful i hope you get well soon."); 
         break; 
        case 2: 
         System.out.println("Shoku is waiting for you in his tent go to him he will teach\n" 
           + "you on how to fight. You will need it on your adventure."); 
         break; 
        case 3: 
         System.out.println("....*grunts* "); 
         break; 
        case 4: 
         // loops nack to the first menu 
         break; 
       } 
       break; 
      case 3: 
       break;    
     } 
         System.out.println("Where to you want to go?\n" 
         + "[1] Outside\n" 
         + "[2] Stay inside"); 
       short choice3 = Short.parseShort(br.readLine()); 
       if (choice3 == 1){ 
        System.out.println("Okey lets go "); 
       } 

    } 

} 
+0

也許你應該把它分解成單獨的方法。儘管如此,我仍然很難看到爲菜單添加循環的位置。 – markspace

回答

0

所以,你可以把你的遊戲邏輯的所有東西放到一個單獨的方法中。然後,你應該只需要結束這種方法與return被輸入的數字4後,再次調用該方法,這將導致這一切重新開始:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class RPG { 

    private BufferedReader br; 

    private RPG() { 
     br = new BufferedReader(new InputStreamReader(System.in)); 
    } 

    public static void main(String[] args) throws IOException { 
     RPG rpg = new RPG(); 
     rpg.run(); 
    } 

    private void run() throws IOException { 
     System.out.println("What do you want to do?\n" 
       + "[1] Examine\n" 
       + "[2] Speak\n" 
       + "[3] Move"); 
     short choice = Short.parseShort(br.readLine()); 

     while (choice != 3) { 
      switch (choice) { 
       case 1: 
        System.out.println("What do you want to examine?\n" 
          + "[1] Bed\n" 
          + "[2] Closet\n" 
          + "[3] Vase\n" 
          + "[4] back"); 
        short choice1 = Short.parseShort(br.readLine()); 
        switch (choice1) { 
         case 1: 
          System.out.println("What a nice bed"); 
          break; 
         case 2: 
          System.out.println("Better not touce the elder's things."); 
          break; 
         case 3: 
          System.out.println("This vase might break if i touched it "); 
          break; 
         case 4: 
          run(); 
          return; 
        } 
        break; 
       case 2: 
        System.out.println("Who do you want to speak to?\n" 
          + "[1] Maiden\n" 
          + "[2] Elder\n" 
          + "[3] Guard\n" 
          + "[4] Back"); 
        short choice2 = Short.parseShort(br.readLine()); 
        switch (choice2) { 
         case 1: 
          System.out.println("Hello there how are you feeling?\n" 
            + "you falling must be very painful i hope you get well soon."); 
          break; 
         case 2: 
          System.out.println("Shoku is waiting for you in his tent go to him he will teach\n" 
            + "you on how to fight. You will need it on your adventure."); 
          break; 
         case 3: 
          System.out.println("....*grunts* "); 
          break; 
         case 4: 
          run(); 
          return; 
        } 
        break; 
      } 
     } 
     System.out.println("Where to you want to go?\n" 
       + "[1] Outside\n" 
       + "[2] Stay inside"); 
     short choice3 = Short.parseShort(br.readLine()); 

     if (choice3 == 1) { 
      System.out.println("Okey lets go "); 
     } 
    } 
} 

BTW:在主開關語句中的案例是無法實現的,所以你不必實現這個als這個開關可以被稱爲,而choise不等於3.

0

把所有內容都放在while -loop中,基本上每個選項都是新的while -loop。

像這樣:

while (choice != 4) { 
    // Write the choices 
    // Read the input from user and move on to next, unless the choice 
    // is to exit (either the game or "go back") 

    switch (choice) { 
    case 0: 
     // meh 
     break; 
    case 1: 
     // meh 
    case 2: 
     while (choice != 1) { 
      // Write the new choices 
      // Read the input.......... 

      switch (choice) { 
      case 0: 
       while (choice != 0) { 
        // We can keep doing this, and every time we go 
        // "further in", we can go back by pressing e.g. 4, or 
        // whatever option is "back". 
        // When going back, we'll go back to previous loop, 
        // and it'll re-print the choices 
       } 
       break; 
      case 1: 
       System.out.println("back!"); 
      } 
     } 
     break; 
    case 3: 
     // meh 
    case 4: 
     System.out.println("back"); 
     break; 
    } 
} 

我希望這是有道理的。