Ich erstelle ein kleines Mini-Spiel von Hangman. Der Benutzer hat 10 Chancen zu erraten, aber nur 5 Leben.Java: Hangman-Spiel, 10 Chancen, aber nur 5 Leben
Die App funktioniert, wird aber nach dem 5. Leben weitergehen, obwohl ich gehofft hatte, es würde den Spieler aus dieser Schleife werfen.
Die instanziierbare Klasse (Hangman.java) funktioniert ohne Probleme.
Das geheime Wort ist "julie" wie in der instanziierbaren Klasse beschrieben.
Meine App-Klasse:
import javax.swing.JOptionPane;
public class HangmanApp {
public static void main(String args[]) {
String input, secret, result, playAgain;
char guess;
int i, j, k, lives;
Hangman myHangman = new Hangman();
do{
JOptionPane.showMessageDialog(null, "Hello, welcome to Hangman! You have 10 chances but only 5 lives! Best of luck");
lives = 5;
for (j = 10; j > 0; j--) {
while (lives >= 0){
input = JOptionPane.showInputDialog(null, "Please enter a letter");
guess = input.charAt(0);
//process
myHangman.setGuess(guess);
myHangman.compute();
result = myHangman.getResult();
if ((input.charAt(0) == 'j') || (input.charAt(0) == 'u') || (input.charAt(0) == 'l') || (input.charAt(0) == 'i') || (input.charAt(0) == 'e')) {
JOptionPane.showMessageDialog(null, "That letter is in the word! Current correct letters: " + result + ".");
} else {
lives--;
JOptionPane.showMessageDialog(null, "Sorry, that letter is not there. Current correct letters: " + result + ".");
}
//output
//JOptionPane.showMessageDialog(null, "Current correct letters: " + result);
};
lives = -1;
}
result = myHangman.getResult();
secret = myHangman.getSecret();
if (secret.equals(result)) {
JOptionPane.showMessageDialog(null, "Congratulations, you got it!! The word was " + secret + ".");
} else {
JOptionPane.showMessageDialog(null, "Sorry, you didn't get it, better look next time! The word was " + secret + ".");
}
playAgain = JOptionPane.showInputDialog("Do you want to play again? yes/no");
}while (playAgain.equals("yes"));
}
}
Haben Sie Thro laufen ugh deinen Code mit einem Debugger? – Thomas
Es ist nicht wirklich klar, was Sie mit "10 Chancen" meinen. Wie bereits geschrieben, sobald "Leben" -1 erreicht, unterbricht es die Schleife, und dann läuft die 'for (j = 10' Schleife noch 9 mal, tut nichts jedes Mal. Wirklich, diese for Schleife macht nichts. –
Ja, ran es ist ein Debugger (mit NetBeams). Keine Fehler. 10 Chancen, 5 Leben bedeutet, dass der Spieler eine maximale Chance von 10 Runden hat, vorausgesetzt, dass jede Annahme richtig zu bekommen. Überall in diesen 10 Chancen, wenn alle Leben verloren sind, Das Spiel endet –