简单的刽子手游戏与两个字符数组。他们得到六次尝试。第一个用户输入一个单词,第二个用户通过_ blanks猜测单词

时间:2016-03-14 03:19:44

标签: java

import java.util.Scanner;
public class HangmanGame {
  public static void main(String[] args) {
    Scanner kybd = new Scanner(System.in);

    int guesses = 0;

//我真的需要这部分吗?

    //Ask the user to enter a word and store it into an array
    System.out.println("Please enter a word: ");
    String wordToGuess = kybd.next();
    char[] word = wordToGuess.toCharArray();
    char[] underscore = new char[wordToGuess.length()];
    for (int i = 0; i < wordToGuess.length(); i++) {
      underscore[i] = '_';
    }

    System.out.println("You have 6 tries to guess the word:");
    for ( int i = 0; i < wordToGuess.length(); i++) {
      System.out.println(" " + underscore[i] + " ");
    }
    System.out.println("Please enter your guess: ");
    char guess = kybd.next();
    for (int i = 0; i < word.length; i++) {
      if (guess == word[i]) {
        underscore[i] = guess;
     }
    }
   }
  }

//我在这里迷失了一点。

我知道这根本不对,但我希望得到一些提示。非常感谢!!

2 个答案:

答案 0 :(得分:1)

import java.util.Scanner;

public class HangmanGame {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner kybd = new Scanner(System.in);

        System.out.println("Please enter a word: ");
        String wordToGuess = kybd.next();
        char[] underscore = new char[wordToGuess.length()];
        for (int i = 0; i < wordToGuess.length(); i++) {
          underscore[i] = '_';
        }




        int wordLenToGuess = wordToGuess.length();
        int unsuccessfulTries = 6;

        while(wordLenToGuess >0 && unsuccessfulTries >0 ){
            System.out.println();
            for ( int i = 0; i < wordToGuess.length(); i++) {
              System.out.print(" " + underscore[i] + " ");
            }
            System.out.println();

            System.out.println("You have " +unsuccessfulTries+ " tries to make a guess");
            System.out.println("Please enter your guess: ");
            //kybd.nextLine();
            char guess = kybd.next().charAt(0);
            boolean iscorrect = false;
            for (int i = 0; i < underscore.length; i++) {
                if(wordToGuess.charAt(i) == guess)
                {
                    underscore[i] = guess;
                    wordLenToGuess--;
                    iscorrect = true;
                }
            }

            if(!iscorrect)
                unsuccessfulTries--;
        }

        if(wordLenToGuess == 0)
            System.out.println("YOU WIN!! :)");
        else System.out.println("Sorry! You Lose :(");

    }

}

算法: 继续尝试,直到猜到整个单词或6次不正确的尝试。

如果猜到了正确的字母,请填写空白'_'否则减少尝试次数

当猜到整个单词或者所有6次尝试都用尽时退出循环。

如果用户赢或输,请通知用户。

答案 1 :(得分:0)

这里需要解决的事情包括让用户选择猜字母或单词,只要用户尚未猜到该单词,让游戏继续进行,并检查是否用户猜到了他或她已经猜到的一封信(这最后一件事是可选的,但却是错误检查的好习惯)。考虑一下将保持游戏进展的条件。在用户猜到6次或成功猜出该单词之前,游戏不会结束。要在每次猜测后检查这些条件,我们可以使用while循环。要查看用户是否正确猜到了这个词,我们可以使用布尔变量来跟踪这个,

boolean wordHasBeenGuessed = false;
while(!wordHasBeenGuessed && guesses < 6)
//this loop reads "while the word has not been guessed yet and the user has not exceeded 6 guesses

要让用户选择猜字母或单词,我们需要使用if语句提出两个场景,

System.out.println("Would you like to guess a letter or a word?");
String type = kybd.next();
if(type.toLowerCase().equals("letter"){
//do stuff to deal with this case here
}
else{
//do stuff to deal with this case here
}//of course this part can be customized anyway you'd like

最后,看起来应该是这样的,

import java.util.Scanner;
public class HangmanGame {
  public static void main(String[] args) {
    Scanner kybd = new Scanner(System.in);

    int guesses = 0;


    //Ask the user to enter a word and store it into an array
    System.out.println("Please enter a word: ");
    String wordToGuess = kybd.next();
    char[] word = wordToGuess.toCharArray();
    char[] underscore = new char[wordToGuess.length()];
    for (int i = 0; i < wordToGuess.length(); i++) {
      underscore[i] = '_';
    }
    boolean wordHasBeenGuessed = false;
    int numOfLettersFound = 0;
    while(!wordHasBeenGuessed && guesses < 6){
         System.out.println("You have " + (6-guesses) + " tries to guess the word:");

         for ( int i = 0; i < wordToGuess.length(); i++) {
              System.out.print(" " + underscore[i] + " ");
         }
         System.out.println("Would you like to guess a letter or a word?");
         String type = kybd.next();
         if(type.toLowerCase().equals(letter)){
              System.out.println("Enter your guess");
              char guess = kybd.next();
                  for (int i = 0; i < word.length; i++) {
                      if (guess == word[i]) {
                          underscore[i] = guess;
                          numOfLettersFound++;
                      }
                  }
              if(numOfLettersFound == wordToGuess.length()){
                  wordHasBeenGuessed = true;
              }
         }
         else{
              System.out.println("Enter your guess");
              String answer = kybd.next();
              if(answer.eqauls(wordToGuess){
                  wordHasBeenGuessed = true;
              }
         }
         guesses++;
     }
     //after the while loop is finished, tell the user whether or not he/she has won or not
     if(wordHasBeenGuessed){
         System.out.println("You won");
     }
     else{
         System.out.println("You lost");
     }
  }

}

如果您有任何疑问,请随时提出。