首页 > 解决方案 > 简单的刽子手游戏 - 3 个问题

问题描述

好的,这是我的第一个 Java 项目。我很高兴它终于奏效了,特别是因为我投入的时间比我想象的要多得多。

我有 3 个问题

  1. 我必须将“静态”放在所有方法共享的变量前面,因为没有它我有“无法从静态内容引用非静态变量”错误。它如何影响我的脚本,它在实践中有什么意义吗?

  2. 为什么我不能更改包名?除了脚本的第一行外,其他地方都没有提到它

  3. 游戏可以运行,但是我还忘记了一件小事,我真的不知道如何解决这个问题。

这部分决定玩家是否获胜

 if  (wordList.size() == 6) {
                System.out.println("\nYou won, congratulations! \n");
                break;
 }

问题是,我必须写数字“6”,因为我承认在我的代码字“经济”中有 2 个字母“o”,所以如果会这样

wordList.size() == word.length() 

它不起作用(如果代码字中没有 2 个相同的字母,它会起作用)

完整代码:

package hangman;
import java.util.Scanner;
import java.util.ArrayList;

public class Hangman {
        static Scanner reader = new Scanner(System.in);
        static ArrayList<String> wordList = new ArrayList<String>();
        static ArrayList<Character> wordListChar = new ArrayList<Character>();
        static String word = "economy";
        static int answers = 0;

public static void main(String[] args) {

        System.out.println("************");
        System.out.println("* Hangman *");
        System.out.println("************");
        System.out.println("");
        System.out.println("");


        while (true)  {

        System.out.println("Choose a letter! \n");
        String command = reader.nextLine(); 
            if (command.length() == 1) {

                if (!wordList.contains(command)) {
                   printWord(command);
                   guess(command);
                }
                else {
                    System.out.println("You already guessed this letter! \n");
                }
            }
            else {
                System.out.println("Write only 1 letter!");
            }

            if  (wordList.size() == 6) {
                System.out.println("\nYou won, congratulations! \n");
                break;
            }

            if  (answers == 6) {
                System.out.println("\nThis guy is dead, You lost! \n");
                break;
            }

        }

    }

public static void guess(String command) {

      if (word.contains(command)) {
          System.out.println("\nYes, the letter - " + command + " - is in the word!\n" );


      } else {
          System.out.println("\nThe letter - " + command + " - is NOT in the word!\n" );
          answers++;
          hangHim();
      }

}

public static void hangHim() {
    if (answers == 1) { 
                System.out.println("         ____________");
                System.out.println("        |      |     |");
                System.out.println("        |      O     |");
                System.out.println("        |            |");
                System.out.println("        |            |");
                System.out.println("        |            |");
                System.out.println("         ____________");
                System.out.print("\n");
    } 
    else if (answers == 2) { 
                System.out.println("         ____________");
                System.out.println("        |      |     |");
                System.out.println("        |      O     |");
                System.out.println("        |      |     |");
                System.out.println("        |            |");
                System.out.println("        |            |");
                System.out.println("         ____________");
                System.out.print("\n");
    } 
    else if (answers == 3) { 
                System.out.println("         ____________");
                System.out.println("        |      |     |");
                System.out.println("        |      O     |");
                System.out.println("        |     -|     |");
                System.out.println("        |            |");
                System.out.println("        |            |");
                System.out.println("         ____________");
                System.out.print("\n");
    } 
    else if (answers == 4) { 
                System.out.println("         ____________");
                System.out.println("        |      |     |");
                System.out.println("        |      O     |");
                System.out.println("        |     -|-    |");
                System.out.println("        |            |");
                System.out.println("        |            |");
                System.out.println("         ____________");
                System.out.print("\n");
    } 
    else if (answers == 5) { 
                System.out.println("         ____________");
                System.out.println("        |      |     |");
                System.out.println("        |      O     |");
                System.out.println("        |     -|-    |");
                System.out.println("        |     /      |");
                System.out.println("        |            |");
                System.out.println("         ____________");
                System.out.print("\n");
    } 
    else if (answers == 6) { 
                System.out.println("         ____________");
                System.out.println("        |      |     |");
                System.out.println("        |      O     |");
                System.out.println("        |     -|-    |");
                System.out.println("        |     / \\    |");
                System.out.println("        |            |");
                System.out.println("         ____________");
                System.out.print("\n");


    } 

}

public static void printWord(String command) {

       if (word.contains(command)) {


                        wordList.add(command);

                        String command2 = command;
                        char commandChar = command2.charAt(0);
                        wordListChar.add(commandChar);

                       // System.out.println(wordList.size());
                       // System.out.println(wordListChar.size());

                        for (int i = 0; i < word.length(); i++) {
                            char letter = word.charAt(i);

                            if (command.charAt(0) == letter) {
                                System.out.print(letter); 
                            }
                           else if (wordListChar.contains(word.charAt(i))) {
                                System.out.print(letter);
                            }
                            else {
                                System.out.print('*');

                            }
                        }
                      System.out.print("\n\n");



            }    
    }




}

感谢帮助!

标签: java

解决方案


  1. static 关键字意味着类拥有您的字段,而不是对象本身。这意味着不会在每次创建对象时创建此字段,而是在给定类型的所有对象之间共享一个字段。您必须仅在主应用程序类中执行此操作,因为主方法是静态的。
  2. 您可以,您只需要相应地更改目录结构。
  3. 获取单词,跳过相同的字母,计算长度,然后对照您猜到的字母进行核对。

推荐阅读