2017-03-17 165 views
-2

我剛剛瞭解瞭如何在java中使用不同的類,但我並不清楚如何去做。我也想知道如何在我的代碼中創建一個足夠的機制來開始和停止我的遊戲。比如當某人輸入了你不應該的東西時,所以它會允許他們再次輸入。請記住,我還沒有完成這個小遊戲。我遇到了麻煩

package Horror; 

import java.util.Scanner; 

public class main { 
    public static void main (String[] args){ 
     //Creating a scanner to get user input 
     Scanner input = new Scanner(System.in); 

     //Game Story | Introduction 
     System.out.println("You find yourself in a car, but you have no idea how you got there. It's raining outside and you spot a house through your cold window. You see something in the glovebox."); 
     System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
     String contlol = input.nextLine(); 
     System.out.println("Choices:"); 
     System.out.println("'Leave'"); 
     System.out.println("'Open Glovebox'"); 
     String firstchoice = input.nextLine(); 
     //Choice of leaving the car without opening the glovebox 
     if (firstchoice.equalsIgnoreCase("Leave")){ 
      System.out.println("You get outside of the car. It's dark and rainy and you have no other choice than to enter the safest place that's closest to you. The house"); 
      System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
      String cont1 = input.nextLine(); 
      System.out.println("Choices:"); 
      System.out.println("'Walk'"); 
      String in = input.nextLine(); 
      //Choice of Walking to the house 
      if (in.equalsIgnoreCase("Walk")){ 
       System.out.println("You begin to walk towards the house. The door creaks open, and you find yourself in a dusty, cold house. The house doens't seem like it has had anybody in it for years, and there is an upstairs and a kitchen."); 
       System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
       String cont2 = input.nextLine(); 
       System.out.println("Choices:"); 
       System.out.println("'Kitchen'"); 
       System.out.println("'Upstairs'"); 
       System.out.println("'Living Room'"); 
       String gimme = input.nextLine(); 
       if (gimme.equalsIgnoreCase("Kitchen")){ 
        System.out.println("You walk into the dark kitchen. You find a light switch to the side, and the room brightens up a tiny bit. You see that the stove is on. Someone is boiling water."); 
        System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
        String gay = input.nextLine(); 
        System.out.println("Choices"); 
        System.out.println("'Run'"); 
        System.out.println("'Stay'"); 
        String utters = input.nextLine(); 
        if (utters.equalsIgnoreCase("Run")){ 
         System.out.println("You run to the door helplessly. You find that the door is locked... From the outside."); 
         System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
         String k = input.nextLine(); 
         System.out.println("Choices:"); 
         System.out.println("'Upstairs'"); 
         System.out.println("'Living Room'"); 
         String kkk = input.nextLine(); 
         if (kkk.equalsIgnoreCase("Upstairs")){ 
          System.out.println("As you start your journey upstairs, the stairs start creaking, and you hear someone. After a while, you convince yourself it was your imagination."); 
          System.out.println("Once you get upstairs, you find a bathroom, and a bedroom."); 
          System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
          String rape = input.nextLine(); 
          System.out.println("Choices:"); 
          System.out.println("'Bathroom'"); 
          System.out.println("'Bedroom'"); 
        } 
       }else if (utters.equalsIgnoreCase("Stay")){ 
        System.out.println("You walk toward the boiling pot of water. Inside, you see someone, but not yourself..."); 
        System.out.println("You turn around, but not quick enough to evade the knife that is being hurled at you. It sticks inside your heart."); 
        System.out.println("You start to slowly die, watching the creature above you stare down into your eyes."); 
        System.out.println("YOU LOSE. . ."); 
        return; 
       } 
       }else if (gimme.equalsIgnoreCase("Living Room")){ 
        System.out.println("You walk into the small, but somehow spacious living room. There is a television, ceiling fan, record player, couches, and other living room items."); 
        System.out.println("As soon as you walk into the living room, the telvesion turns on to a news channel, and the ceiling fan starts spinning."); 
        System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
        String dick = input.nextLine(); 
        System.out.println("Choices:"); 
        System.out.println("'Run'"); 
        System.out.println("'Investigate'"); 
        String meme = input.nextLine(); 
        if (meme.equalsIgnoreCase("Investigate")){ 
         System.out.println("You circle around the living room. You find a cassette tape inside the telveison. You hear something behind you."); 
         System.out.println("You turn around, but no one's there. You turn back around and the cassette tape is gone."); 
         System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
         String gutknife = input.nextLine(); 
         System.out.println("Choices:"); 
         System.out.println("'Upstairs'"); 
         System.out.println("'Kitchen'"); 
         String search = input.nextLine(); 
         if (search.equalsIgnoreCase("Upstairs")){ 
          System.out.println("As you start your journey upstairs, the stairs start creaking, and you hear someone. After a while, you convince yourself it was your imagination."); 
          System.out.println("Once you get upstairs, you find a bathroom, and a bedroom."); 
          System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
          String rape = input.nextLine(); 
          System.out.println("Choices:"); 
          System.out.println("'Bathroom'"); 
          System.out.println("'Bedroom'"); 
          String fight = input.nextLine(); 
          if (fight.equalsIgnoreCase("Bathroom")){ 
           System.out.println("As you walk into the bathroom, you flip on the light switch. You find a sink, toilet, mirror, and a bath tub with the shower curtains covering it."); 
           System.out.println("You hear water dripping."); 
           System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
           String poop = input.nextLine(); 
           System.out.println("Choices:"); 
           System.out.println("'Investigate'"); 
           System.out.println("'Look in Mirror'"); 
           String gimmedat = input.nextLine(); 
          }else if (fight.equalsIgnoreCase("Bedroom")){ 
           System.out.println("You walk in to a roomy bedroom. You think to yourself that it must be the master bedroom. You start looking around."); 
           System.out.println("After inspecting the room for a few minutes, you find a bloody knife on the drawer, it's right next to a dead body lying next to you feet."); 
           System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
           String cont0101 = input.nextLine(); 
           System.out.println("Choices:"); 
           System.out.println("'Scream'"); 
           System.out.println("'Examine'"); 
           String gaymemes = input.nextLine(); 
           if (gaymemes.equalsIgnoreCase("Examine")){ 

           } 
          } 
         } 
        } 
       } else if (gimme.equalsIgnoreCase("Upstairs")){ 
        System.out.println("As you start your journey upstairs, the stairs start creaking, and you hear someone. After a while, you convince yourself it was your imagination."); 
        System.out.println("Once you get upstairs, you find a bathroom, and a bedroom."); 
        System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
        String rape = input.nextLine(); 
        System.out.println("Choices:"); 
        System.out.println("'Bathroom'"); 
        System.out.println("'Bedroom'"); 
        String xdd = input.nextLine(); 
        if (xdd.equalsIgnoreCase("Bathroom")){ 
         System.out.println("As you walk into the bathroom, you flip on the light switch. You find a sink, toilet, mirror, and a bath tub with the shower curtains covering it."); 
         System.out.println("You hear water dripping."); 
         System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
         String poop = input.nextLine(); 
         System.out.println("Choices:"); 
         System.out.println("'Investigate'"); 
         System.out.println("'Look in Mirror'"); 
         String gimmedat = input.nextLine(); 
       }else if (xdd.equalsIgnoreCase("Bedroom")){ 
        System.out.println("You walk in to a roomy bedroom. You think to yourself that it must be the master bedroom. You start looking around."); 
        System.out.println("After inspecting the room for a few minutes, you find a bloody knife on the drawer, it's right next to a dead body lying next to you feet."); 
        System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
        String cont0101 = input.nextLine(); 
        System.out.println("Choices:"); 
        System.out.println("'Scream'"); 
        System.out.println("'Examine'"); 
        String rapeme = input.nextLine(); 
        if (rapeme.equalsIgnoreCase("Examine")){ 

        } 
       } 
      } 
      } 
     }else if (firstchoice.equalsIgnoreCase("Open Glovebox")){ 
      System.out.println("You find a note in the glovebox. It reads: 'They've taken it away from me. They told me I was crazy. But I'll prove them wrong. I will take it back. I will make this right. You don't know me. But I am there. Watching."); 
      System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
      String cont3 = input.nextLine(); 
      System.out.println("Choices:"); 
      System.out.println("Leave"); 
      String getin = input.nextLine(); 
      if (getin.equalsIgnoreCase("Leave")){ 
       System.out.println("You get outside of the car. It's dark and rainy and you have no other choice than to enter the safest place that's closest to you. The house"); 
       System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
       String cont69 = input.nextLine(); 
       System.out.println("Choices:"); 
       System.out.println("'Walk'"); 
       String fat = input.nextLine(); 
       if (fat.equalsIgnoreCase("Walk")){ 
        System.out.println("You begin to walk towards the house. The door creaks open, and you find yourself in a dusty, cold house. The house doens't seem like it has had anybody in it for years, and there is an upstairs and a kitchen."); 
        System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
        String cont2 = input.nextLine(); 
        System.out.println("Choices:"); 
        System.out.println("'Kitchen'"); 
        System.out.println("'Upstairs'"); 
        System.out.println("'Living Room'"); 
        String gimme = input.nextLine(); 
        if (gimme.equalsIgnoreCase("Kitchen")){ 
         System.out.println("You walk into the dark kitchen. You find a light switch to the side, and the room brightens up a tiny bit. You see that the stove is on. Someone is boiling water."); 
         System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
         String gay = input.nextLine(); 
         System.out.println("Choices"); 
         System.out.println("'Run'"); 
         System.out.println("'Stay'"); 
         String utters = input.nextLine(); 
         if (utters.equalsIgnoreCase("Run")){ 
          System.out.println("You run to the door helplessly. You find that the door is locked... From the outside."); 
          System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
          String k = input.nextLine(); 
          System.out.println("Choices:"); 
          System.out.println("'Upstairs'"); 
          System.out.println("'Living Room'"); 
          String kkk = input.nextLine(); 
          if (kkk.equalsIgnoreCase("Upstairs")){ 
           System.out.println("As you start your journey upstairs, the stairs start creaking, and you hear someone. After a while, you convince yourself it was your imagination."); 
           System.out.println("Once you get upstairs, you find a bathroom, and a bedroom."); 
           System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
           String rape = input.nextLine(); 
           System.out.println("Choices:"); 
           System.out.println("'Bathroom'"); 
           System.out.println("'Bedroom'"); 
           String xdd = input.nextLine(); 
           if (xdd.equalsIgnoreCase("Bathroom")){ 
            System.out.println("As you walk into the bathroom, you flip on the light switch. You find a sink, toilet, mirror, and a bath tub with the shower curtains covering it."); 
            System.out.println("You hear water dripping."); 
            System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
            String poop = input.nextLine(); 
            System.out.println("Choices:"); 
            System.out.println("'Investigate'"); 
            System.out.println("'Look in Mirror'"); 
            String gimmedat = input.nextLine(); 
            }else if (xdd.equalsIgnoreCase("Bedroom")){ 
             System.out.println("You walk in to a roomy bedroom. You think to yourself that it must be the master bedroom. You start looking around."); 
             System.out.println("After inspecting the room for a few minutes, you find a bloody knife on the drawer, it's right next to a dead body lying next to you feet."); 
             System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
             String cont0101 = input.nextLine(); 
             System.out.println("Choices:"); 
             System.out.println("'Scream'"); 
             System.out.println("'Examine'"); 
             String ugh = input.nextLine(); 
             if (ugh.equalsIgnoreCase("Examine")){ 

             } 
            } 
           } 
          }else if (utters.equalsIgnoreCase("Stay")){ 
           System.out.println("You walk toward the boiling pot of water. Inside, you see someone, but not yourself..."); 
           System.out.println("You turn around, but not quick enough to evade the knife that is being hurled at you. It sticks inside your heart."); 
           System.out.println("You start to slowly die, watching the creature above you stare down into your eyes."); 
           System.out.println("YOU LOSE. . ."); 
           return; 
          } 
         }else if (gimme.equalsIgnoreCase("Upstairs")){ 
          System.out.println("As you start your journey upstairs, the stairs start creaking, and you hear someone. After a while, you convince yourself it was your imagination."); 
          System.out.println("Once you get upstairs, you find a bathroom, and a bedroom."); 
          System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
          String rape = input.nextLine(); 
          System.out.println("Choices:"); 
          System.out.println("'Bathroom'"); 
          System.out.println("'Bedroom'"); 
          String xdd = input.nextLine(); 
          if (xdd.equalsIgnoreCase("Bathroom")){ 
           System.out.println("As you walk into the bathroom, you flip on the light switch. You find a sink, toilet, mirror, and a bath tub with the shower curtains covering it."); 
           System.out.println("You hear water dripping."); 
           System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
           String poop = input.nextLine(); 
           System.out.println("Choices:"); 
           System.out.println("'Investigate'"); 
           System.out.println("'Look in Mirror'"); 
           String gimmedat = input.nextLine(); 
           } 
        }else if (gimme.equalsIgnoreCase("Living Room")){ 
         System.out.println("You walk into the small, but somehow spacious living room. There is a television, ceiling fan, record player, couches, and other living room items."); 
         System.out.println("As soon as you walk into the living room, the telvesion turns on to a news channel, and the ceiling fan starts spinning."); 
         System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
         String dick = input.nextLine(); 
         System.out.println("Choices:"); 
         System.out.println("'Run'"); 
         System.out.println("'Investigate'"); 
         String meme = input.nextLine(); 
         if (meme.equalsIgnoreCase("Investigate")){ 
          System.out.println("You circle around the living room. You find a cassette tape inside the telveison. You hear something behind you."); 
          System.out.println("You turn around, but no one's there. You turn back around and the cassette tape is gone."); 
          System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
          String gutknife = input.nextLine(); 
          System.out.println("Choices:"); 
          System.out.println("'Upstairs'"); 
          System.out.println("'Kitchen'"); 
          String search = input.nextLine(); 
          if (search.equalsIgnoreCase("Kitchen")){ 
           System.out.println("You walk into the dark kitchen. You find a light switch to the side, and the room brightens up a tiny bit. You see that the stove is on. Someone is boiling water."); 
           System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
           String gay = input.nextLine(); 
           System.out.println("Choices"); 
           System.out.println("'Run'"); 
           System.out.println("'Stay'"); 
           String utters = input.nextLine(); 
           if (utters.equalsIgnoreCase("Run")){ 
            System.out.println("You run to the door helplessly. You find that the door is locked... From the outside."); 
            System.out.println("PRESS ANY KEY TO CONTINUE. . ."); 
            String k = input.nextLine(); 
            System.out.println("Choices:"); 
            System.out.println("'Upstairs'"); 
            String kkk = input.nextLine(); 
            }else if (utters.equalsIgnoreCase("Stay")){ 
             System.out.println("You walk toward the boiling pot of water. Inside, you see someone, but not yourself..."); 
             System.out.println("You turn around, but not quick enough to evade the knife that is being hurled at you. It sticks inside your heart."); 
             System.out.println("You start to slowly die, watching the creature above you stare down into your eyes."); 
             System.out.println("YOU LOSE. . ."); 
             return; 
            } 
           } 
          } 
         } 
        } 
       } 
      } 
    } 
} 
+0

我會研究重構概念。大多數遊戲也是在某種類型的循環中完成的。 while循環可能在這裏很好。 –

+1

這個問題可能更多的話題在http://codereview.stackexchange.com/ –

+0

據我所知,大多數遊戲都是在循環中完成的,比如while循環,但我是初學者,不知道如何製作一個。 – Sve

回答

3

你在這裏有什麼基本上是state machine。你打印一些東西,然後提出一些選擇;用戶輸入這些選擇中的一個,然後移動到某個不同的「狀態」(即不同的地方),在那裏打印某些內容,顯示選項,移動到新的狀態......等。

您可以代表一個國家是這樣的:

class State { 
    String message; 
    Map<String, State> choices = new LinkedHashMap<>(); 
} 

(左故意裸露,爲清楚起見)

,建設一些這樣的狀態:

State start = new State(); 
start.message = "You find yourself in a car..."; 

State leaveTheCar = new State(); 
leaveTheCar.message = "You get outside of the car..."; 

State openGlovebox = new State(); 
openGlovebox.message = "You find a note..."; 

State dead = new State(); 
dead.message = "You're dead."; 

,並加入美國toget她這個樣子:

start.choices.put("Leave", leaveTheCar); 
start.choices.put("Open glovebox", openGlovebox); 

leaveTheCar.choices.put("Get back in car", start); 
leaveTheCar.choices.put("Blah", dead); 

openGlovebox.choices.put("Bloo", dead); 

所以,你是說,當你在一開始,你可以選擇「離開」,你會移動到「離開車」狀態或「開手套箱「狀態;並且你可以回到車裏,或者做別的事情導致你死亡。

您可以得出這樣一個state transition diagram,其中「節點」的狀態,而「邊緣」是選擇:

enter image description here

你需要創建這些State實例的負荷和加入他們爲您的遊戲上面。但是,一旦你有,「玩」的邏輯很簡單:

State state = start; 
while (true) { 
    System.out.println(state.message); 
    if (state.choices.isEmpty()) { 
    break; // No choices: game over. 
    } 

    while (true) { // Keep going until user enters a valid choice. 
    System.out.println("Choices:"); 
    for (String key : state.choices.keySet()) { 
     System.out.println("'%s'%n", key); 
    } 
    String choice = input.nextLine(); 
    if (state.choices.containsKey(choice)) { 
     state = state.choices.get(choice); // Go to the next state. 
     break; 
    } 

    System.out.println("Choose again!"); 
    } 
} 

爲了實現這一點,檢查出State design pattern相關但略有不同的方式。

+0

大量的努力回答了一個基本的題外話題(但+1)。繪製[狀態圖](https://en.wikipedia.org/wiki/State_diagram)是開始的地方。 –

+0

感謝您的信息。我一定會研究學習狀態圖。 – Sve