2017-03-17 8 views
-2

Ich habe gerade gelernt, wie man verschiedene Klassen in Java verwenden, aber ich weiß nicht klar, wie. Ich habe mich auch gefragt, wie ich eine ausreichende Mechanik in meinen Code einbauen kann, um mein Spiel zu starten und zu stoppen. Zum Beispiel wenn jemand etwas eingibt, das du nicht tun solltest, damit er es wieder betreten kann. Denken Sie daran, dass ich mit diesem kleinen Spiel nicht fertig bin.Ich habe Probleme zu organisieren

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

Ich würde in Refactoring-Konzepte untersuchen. Die meisten Spiele werden auch in einer Art von Schleife gemacht. Eine While-Schleife könnte hier gut sein. –

+1

Diese Frage könnte mehr zum Thema bei http://codereview.stackexchange.com/ –

+0

Ich verstehe, dass die meisten Spiele in Schleifen wie While-Schleifen gemacht werden, aber ich bin ein Anfänger und weiß nicht, wie man einen macht. – Sve

Antwort

3

Was Sie hier haben, ist im Grunde ein state machine. Du druckst etwas aus und präsentierst dann einige Auswahlmöglichkeiten. Der Benutzer gibt eine dieser Optionen ein und Sie wechseln zu einem anderen "Status" (dh einem anderen Ort), an dem Sie etwas drucken, eine Auswahl treffen, in einen neuen Zustand wechseln ... usw.

Sie können repräsentieren einen Zustand etwas wie folgt aus:

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

(Linke absichtlich blank, für Klarheit)

und bauen einige Staaten wie folgt aus:

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."; 

und kommen Sie mit den Staaten toget sie wie folgt aus:

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); 

Also, Sie sagen, dass, wenn Sie am Anfang sind, können Sie wählen, „Leave“, und Sie werden zum „lassen Sie das Auto“ Zustand bewegen oder die „offene Glovebox "Staat; und dass du zurück ins Auto kommst oder etwas anderes machst, das dich zum Sterben bringt.

Sie dies als state transition diagram ziehen kann, wo „Knoten“ sind die Zustände, und „Kanten“ sind die Möglichkeiten:

enter image description here

Sie erhalten eine Last dieser State Instanzen erstellen müssen und verbinden Sie sie zusammen für Ihr Spiel oben. Aber sobald Sie haben, ist die Logik zu „spielen“ ganz einfach:

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!"); 
    } 
} 

Für eine verwandte, aber etwas andere Art und Weise, dies zu implementieren, die State design pattern überprüfen.

+0

Viel Aufwand bei der Beantwortung einer Frage, die im Wesentlichen außerhalb des Themas liegt (aber +1). Das Zeichnen eines [State-Diagramms] (https://en.wikipedia.org/wiki/State_diagram) ist der richtige Startpunkt. –

+0

Danke für die Information. Ich werde definitiv lernen, Zustandsdiagramme zu lernen. – Sve