Text-Adventure

Bitte aktiviere JavaScript!
Hallo liebe Community,

sollte dieses Thema falsch platziert sein, bitte verschieben oder gegebenenfalls löschen.
Im Rahmen eines Schulprojektes entwerfe ich und mein Team ein Text-Adventure mittels Java. (hier: mexikanischer Staatsbürger versucht, die Grenze zu den Staaten zu passieren.).
Leider habe ich ein entscheidendes Problem bei meinem Checkpoint. Die Idee ist simpel. Es entstehen Verzweigungen. Je nach dem, was der User eingibt, kommt er an verschiedene Stellen. Das Management der Stellen geschieht via Checkpoint.
Wird ein bestimmter Text eingegeben, so kommt er dementsprechend einen Checkpoint weiter. Leider habe ich den Anschein, dass mein Checkpoint nicht gespeichert wird..
Auch mehrere Antwortmöglichkeiten sind laut dem Programm (bei Strings) undefiniert (||).
Diese habe ich provisorisch auskommentiert.

Meinen Code findet ihr hier.


import java.util.Scanner;

public class play {

private String antwort;

public void setAntwort (String pAntwort) {

this.antwort = pAntwort;

}



private static int Checkpoint = 0;

public void setCheckpoint (int pCheckpoint) {

this.Checkpoint = pCheckpoint;

}



public static void main(String[]args){

System.out.print("2018, xyORT. Du bist mexikanischer Staatsbürger. Deine Familie hat bereits erfolgreich die Grenze zu den Vereinigten Staaten passiert. \nDu denkst darüber nach, ihnen zu folgen. Wenn du bleibst, musst du dich der mexikanischen Mafia stellen, doch eine Flucht birgt viele Gefahren. \nFür welche Möglichkeit entscheidest du dich? Bleiben oder Flüchten?");

Scanner s = new Scanner(System.in);

while (Checkpoint < 10 ) {

String pAntwort = s.next();

if (pAntwort.equals("Bleiben" /*|| "bleiben" || "hier bleiben" || "Hier bleiben"*/)) {

System.out.println("Haha! Netter Versuch! Nix Da!");

}

else if (pAntwort. equals("Flüchten" /*|| "flüchten" || "Flüchte" || "flüchte" || "Flucht"*/ )) {

System.out.print("Super! Flüchtest du alleine oder in einer Gruppe?");

Checkpoint += 1;

if (pAntwort.equals("alleine" /*|| "Alleine" || "Allein" || "allein" */) & Checkpoint == 1){

System.out.print("Wenn du alleine flüchtest, hast du zwei Möglichkeiten:\n Entweder gehst du den Weg durch die Wüste oder den Weg über die Grenzkontrolle. ");

Checkpoint += 1;

}

else if (pAntwort.equals("Gruppe" /*|| "In einer Gruppe" || "gruppe" */)) {

System.out.print("\n Du hast dich einer Gruppe angeschlossen. Ihr überlegt ob ihr euch in einem LKW über die Grenze fahren lasst, oder ob ihr zu Fuß gehen wollt.");

Checkpoint += 1;

}

}

}

}

}

Ich hoffe, die Formatierung ist nicht allzu grauenhaft.

Habt ihr eine Idee zur Lösung meines Problems?

Beste Grüße,

Simon
 
A

Anzeige




Vielleicht hilft dir unser Java-Tutorial hier weiter —> (hier klicken)
Bitte immer in Code-Tags schreiben:
Java:
import java.util.Scanner;

public class play {
    private String antwort;

    public void setAntwort(String pAntwort) {
        this.antwort = pAntwort;
    }

    private static int Checkpoint = 0;

    public void setCheckpoint(int pCheckpoint) {
        this.Checkpoint = pCheckpoint;
    }

    public static void main(String[] args) {

        System.out.print("2018, xyORT. Du bist mexikanischer Staatsbürger. Deine Familie hat bereits erfolgreich die Grenze zu den Vereinigten Staaten passiert. \nDu denkst darüber nach, ihnen zu folgen. Wenn du bleibst, musst du dich der mexikanischen Mafia stellen, doch eine Flucht birgt viele Gefahren. \nFür welche Möglichkeit entscheidest du dich? Bleiben oder Flüchten?");

        Scanner s = new Scanner(System.in);

        while (Checkpoint < 10) {
            String pAntwort = s.next();
            if (pAntwort.equals("Bleiben" /* || "bleiben" || "hier bleiben" || "Hier bleiben" */)) {
                System.out.println("Haha! Netter Versuch! Nix Da!");
            }
            else if (pAntwort.equals("Flüchten" /* || "flüchten" || "Flüchte" || "flüchte" || "Flucht" */ )) {
                System.out.print("Super! Flüchtest du alleine oder in einer Gruppe?");
                Checkpoint += 1;

                if (pAntwort.equals("alleine" /* || "Alleine" || "Allein" || "allein" */) & Checkpoint == 1) {
                    System.out.print("Wenn du alleine flüchtest, hast du zwei Möglichkeiten:\n Entweder gehst du den Weg durch die Wüste oder den Weg über die Grenzkontrolle. ");
                    Checkpoint += 1;
                }
                else if (pAntwort.equals("Gruppe" /* || "In einer Gruppe" || "gruppe" */)) {
                    System.out.print("\n Du hast dich einer Gruppe angeschlossen. Ihr überlegt ob ihr euch in einem LKW über die Grenze fahren lasst, oder ob ihr zu Fuß gehen wollt.");
                    Checkpoint += 1;
                }
            }
        }
    }
}
 
"2018, xyORT. Du bist mexikanischer Staatsbürger. Deine Familie hat bereits erfolgreich die Grenze zu den Vereinigten Staaten passiert. \nDu denkst darüber nach, ihnen zu folgen. Wenn du bleibst, musst du dich der mexikanischen Mafia stellen, doch eine Flucht birgt viele Gefahren. \nFür welche Möglichkeit entscheidest du dich? Bleiben oder Flüchten?"
if (pAntwort.equals("Bleiben" /*|| "bleiben" || "hier bleiben" || "Hier bleiben"*/)) {
System.out.println("Haha! Netter Versuch! Nix Da!");
}
Warum man dann der Mexikaner überhaupt gefragt wird, geht aus der Geschichte nicht vor..
Idiotie at it best ;)
 
Also ... du hast eine statische Variable Checkpoint (schreib Variablennamen klein) und Instanzmethoden, die den Wert setzen. Schlecht. Mach die Methoden auch statisch oder noch besser: Erstelle eine Instanz der Klasse, anstatt mit statischen Variablen zu arbeiten.

Die Fälle "alleine" und "gruppe" werden wohl nie erreicht werden, weil der Wert gleichzeitig "flüchten" sein muss.

Wenn du das Ganze nicht zwingend selbst programmieren willst, schau dir mal Tads3 an :)
https://en.wikipedia.org/wiki/TADS
(es gibt natürlich noch andere Alternativen, ADRIFT z.B.)
Ich weiß ja nicht, ob's in der Schule um das Adventure oder die Engine geht.
 
A

Anzeige




Hier lernst du alle wichtigen Java-Grundlagen.
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben