2 Stimmen

Spiel True or False funktioniert nicht mehr nach der 1. Runde

Ich bin neu bei Java, dies ist mein erstes Programm, das ich entwickelt habe. Grundsätzlich geben Sie '1' ein und das bringt Sie zum Spiel.

Setzt das Level auf 1.

Dann wird eine Frage ausgewählt, basierend auf dem Level. Die erste Runde funktioniert gut. Nachdem ich in Runde 1 richtig geantwortet habe, bringt es mich zur Frage 2.

Aber bei Frage 2, wenn ich richtig antworte, bleibt es bei Frage 2 hängen und wiederholt sie, anstatt zur nächsten Frage zu wechseln.

Warum passiert das? Habe ich level++?

public static void main(String[] args) {
    gameRoom();
}

public static void gameRoom() {
    System.out.println("Willkommen zum Wahrheits- und Falsch-Spiel!");
    System.out.println("Bitte geben Sie 1 ein, um zu starten, oder -1, um das Programm zu beenden.");
    InputI = Konsole.nextInt();

    if (InputI == 1) {
        inGame = true;
        gameProcess(1);
    }
}

public static void gameProcess(int level) {

    switch (level) {

        case 1:
            question = tof.getQuestion(1);
            System.out.println("Ihre Frage lautet: " + question);
            System.out.println("Bitte antworten Sie mit 'true' oder 'false'!.");
            level = 1;
            break;

        case 2:
            question = tof.getQuestion(2);
            System.out.println("Ihre Frage lautet: " + question);
            System.out.println("Bitte antworten Sie mit 'true' oder 'false'!.");
            level = 2;
            break;

        case 3:
            System.out.println("Hey1");
            break;
    }

    while (inGame) {
        InputS = Konsole.nextLine();
        while (InputS != "") {
            inGame = false;
            InputS = Konsole.nextLine();
            checkQuestion(level, InputS);
        }
    }
}

public static void checkQuestion(int level, String question) {
    Boolanswer = tof.checkQuestion(level, question);
    level++;
    if (Boolanswer) {
        System.out.println("Richtig!" + correctAnswers);
        correctAnswers++;
    } else {
        System.out.println("Falsch! " + correctAnswers);
    }

    inGame = true;
    gameProcess(level);
}

Das Problem könnte sein, dass das System die Schleife nicht lesen kann, solange Input != "", aber ich könnte mich irren. Hier ist die andere Klasse:

private String[][] questionsArray = new String[][]
{
    {"Ist der Himmel blau?", "true"},
    {"Ist der Himmel grün?", "false"}
};

private String answer = "";
private String Currentanswer = "";
private String question = "";
private int level = 0;
private boolean returnValue = false;

public String getQuestion(int Level) {
    switch (Level) {

    case 1:
        question = questionsArray[0][0];
        break;

    case 2:
        question = questionsArray[1][0];
        break;      
    }

    return question;
}

public String getAnswer(int Level) {
    switch (Level) {

        case 1:
            answer = questionsArray[0][1];
            break;

        case 2:
            answer = questionsArray[1][1];
            break;          
    }

    return answer;
}   

public boolean checkQuestion(int level, String answer) {

    switch (level) {
        case 1:
            Currentanswer = questionsArray[0][1];
            if (Currentanswer.equalsIgnoreCase(answer)) {
                returnValue = true;
            } else {
                returnValue = false;
            }
            break;

        case 2:
            Currentanswer = questionsArray[1][1];
            if (Currentanswer.equalsIgnoreCase(answer)) {
                returnValue = true;
            } else {
                returnValue = false;
            }
            break;              
    }
    return returnValue;
}

Das Problem ist, dass, wenn ich die zweite Frage richtig beantworte, nichts gedruckt wird. Und wenn ich die Frage falsch beantworte, wird zur ERSTEN Frage gewechselt.

Ich habe nur 2 Fragen, ich weiß, aber ich bin nur am Testen. Das Level sollte auf 3 gehen und entsprechend den Switch-Fällen "Hey!" ausgeben.

1voto

Obl Tobl Punkte 5564

Das Problem könnte in dieser Schleife liegen:

while (inGame) {
            InputS = console.nextLine();
            while (InputS != "") {
                inGame = false;                 
                InputS = console.nextLine();
                checkQuestion(level, InputS);               
            }
        }

Versuchen Sie, while (InputS != "") durch while (!InputS.equals("")) { zu ersetzen

0voto

Tala Punkte 8628

Sie unterstützen keine Ebene> 2

 public String getQuestion(int Level) {
    switch (Level) {

    case 1:
        question = questionsArray[0][0];
    break;

    case 2:
        question = questionsArray[1][0];
    break;      
    }

    return question;
}

Ihre Frage = questionsArray[1][0]; bleibt für jede andere Ebene als 1 oder 2.

Wenn Sie Stufe 3 senden, tut der switch nichts und die vorherige Frage wird zurückgegeben,

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X