2016-10-20 3 views
0

私は秘密の言葉を推測することを任されており、それはゲームオーバーとなるはずです。キャラクターの推測の数が5に達すると、再びプレイしたいかどうか尋ねられます。 私のインクリメントが正しいと思いましたおそらく...ループは終わっていませんか?

はここで、クラスのではない:

public class SecretWord { 
private String secretWord; 
private String hintWord ; 
private int numberOfTurns; 

//Default Constructors 
public SecretWord() 
{ 
    hintWord = ""; 
    secretWord = "juice"; 
    for (int i = 0; i < secretWord.length(); i++) 
    { 
     hintWord+="*"; 
    } 
    this.numberOfTurns = 0; 
} 
//Accessors 
public String getSecretWord() 
{ 
    return this.secretWord; 
} 
public String getHintWord() 
{ 
    return this.hintWord; 
} 
public int getNumberOfTurns() 
{ 
    return this.numberOfTurns; 
} 
//Mutators 
public void setSecretWord() 
{ 
    this.secretWord = "juice"; 
} 
public void setHintWord() 
{ 
    //Setting the hint word which sets the asterisks when you guess something right 
    char[] correctLetters = new char[secretWord.length()]; 
    for (int i = 0; i<secretWord.length();i++) 
    { 
     hintWord+="*"; 
     correctLetters[i] += '*'; 
    } 
} 
public void setNumberOfTurns (int i) 
{ 
    this.numberOfTurns = 5; 
} 
//Methods 
public void guessLetter(char guess) 
{ 
    String tempHintWord=""; 
    for (int i = 0; i < secretWord.length(); i++) 
    { 
     if (secretWord.charAt(i) == guess) 
     { 
      tempHintWord += guess; 
     } 
     else 
     { 
      tempHintWord += hintWord.charAt(i); 
     } 
    } 
    hintWord = tempHintWord; 
} 

ここに私のループを備えたドライバーだ:

public class SecretWordGame { 

//Constant for number of tries 
public static final int NUM_TRIES = 5; 

public static void main (String[] args) 
{ 
    Scanner keyboard = new Scanner(System.in); 

    //Starts game 
    boolean quit = false; 
    while (quit == false) 

    { 
     System.out.println("Welcome to the word guessing game! You have " + 
       +NUM_TRIES+" tries to guess the secret word!"); 

     SecretWord myWord = new SecretWord(); 
     System.out.println("The current hint is \n"+myWord.getHintWord()); 

     while (myWord.getNumberOfTurns() <=NUM_TRIES) 
     { 
      System.out.println("Guess a lowercase letter"); 

      //Gets the first letter of what is entered 

      char tempGuess = keyboard.nextLine().charAt(0); 

      //Updates the hint by calling guess letter method 

      myWord.guessLetter(tempGuess); 

      System.out.println(myWord.getHintWord()); 

      System.out.println("Guess the secret word"); 

      String myGuess = keyboard.nextLine(); 
      //Checks correct guess 
      if (myGuess.equals(myWord.getSecretWord())) 
      { 
       System.out.println("You win!"); 
       break; 
      } 
      else 
      { 
       System.out.println("Keep trying!"); 
      } 
      myWord.setNumberOfTurns(myWord.getNumberOfTurns()+1); 
     } 
     //Prompts user to play again 

     System.out.println("Game over! Try again?"); 

     String userInput = keyboard.nextLine(); 
     if(userInput.equalsIgnoreCase("no")) 
     { 
      quit = true; 
     } 
     else 
     { 
      System.out.println("Let's go again!"); 
     } 
    } 
    System.out.println("Goodbye!"); 
} 

おそらくwhileループ(myWord.getNumberOfTurns()< = NUM​​_TRIES)の比較が間違っていますか?または、おそらくgetNumberOfTurnsのインクリメンタが間違った場所にありますか?私は不明です。

public void setNumberOfTurns (int i) 
{ 
    this.numberOfTurns = i; 
} 

から

答えて

1

変更

public void setNumberOfTurns (int i) 
{ 
    this.numberOfTurns = 5; 
} 

このコードはmyWord.setNumberOfTurns(myWord.getNumberOfTurns()+1);

+0

シンプルな、おかげで呼び出されたときに、それ以外の場合は5に設定されます! –

関連する問題