java - 简单的刽子手游戏 - 3 个问题
问题描述
好的,这是我的第一个 Java 项目。我很高兴它终于奏效了,特别是因为我投入的时间比我想象的要多得多。
我有 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");
}
}
}
感谢帮助!
解决方案
- static 关键字意味着类拥有您的字段,而不是对象本身。这意味着不会在每次创建对象时创建此字段,而是在给定类型的所有对象之间共享一个字段。您必须仅在主应用程序类中执行此操作,因为主方法是静态的。
- 您可以,您只需要相应地更改目录结构。
- 获取单词,跳过相同的字母,计算长度,然后对照您猜到的字母进行核对。
推荐阅读
- logging - 如何在 Fluentd 配置中定义哈希(JSON 或对象)?
- sql - 在 SQL Server 中动态转换更新语句值
- reactjs - 无法将类型分配给 React 高阶组件
- python - 根据Python中的第二个列表调整列表中的元素
- linux - 使用 rsync 自动同步
- python - 如何使用 APScheduler 管理任务队列?
- xaml - 根据参数调整ListView中的文本大小
- java - 如何通过收集器分组以从数据中创建新字段?
- c++ - c++ std::vector: sum in a vector position its previous value
- nginx - Kubernetes - 入口控制器与入口