我完全不熟悉编程,我必须用 Java 完成一些任务(我使用的是 Eclipse)。这是一款刽子手游戏。我的代码如下。我写了一个基于控制台的程序,基本上可以工作(计算生命而不是绘制刽子手图形)。
我认为这个问题对大多数人来说似乎很简单,但我真的很感谢你的帮助。
我正在尽最大努力在网上寻找答案,但作为一个完全的新手,很难知道从哪里开始。我真的很想知道我是否在正确的轨道上,这样我就不会浪费太多时间。
我应该(并且想要!)自己做这件事,所以理想情况下,我希望得到关于应该关注什么的提示。
我的问题是:
- 我现在需要创建一个 GUI(我以前从未做过): 我已经算出的这段代码有多大用处?一旦我开始使用 GUI 创建游戏,一切就完全不同了吗?
- 我使用了一个
StringBuffer
来存储之前猜测的字母。我 想要搜索这个以便显示所有的单词 先前猜测的字母填写(因为它只打印 在所有其他字母被遮盖的情况下得出当前的猜测)。就是它 可能吗?
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
StringBuffer buffer = new StringBuffer();
String secretWord;
int secretWordLength;
int position;
int livesLost = 0;
int totalLives = 10;
int lettersRemaining;
boolean guessInWord;
char guess;
StringBuffer prevGuessedLetters;
//prompt user to enter a word and set as an instance of the secretWord variable
System.out.println("Enter a word:");
secretWord = myScanner.next();
//determine the length of the word entered
secretWordLength = secretWord.length();
System.out.println(secretWordLength);
lettersRemaining = secretWordLength;
for (position = 0; position < secretWordLength; position++) {
System.out.print("*");
}
System.out.println();
//loop starts
while (lettersRemaining > 0 && livesLost < 10) {
//prompt user to guess a letter
System.out.println("Guess a letter:");
guess = myScanner.findWithinHorizon(".", 0).charAt(0);
//check if the letter guessed is in the secretWord
guessInWord = (secretWord.indexOf(guess)) != -1;
if (guessInWord == false) {
livesLost++;
System.out.print("Sorry, you have lost a life. You still have ");
System.out.print(totalLives -= livesLost);
System.out.println(" life/lives left. Keep trying.");
} else {
System.out.println("That was a good guess, well done!");
for (position = 0; position < secretWordLength; position++) {
if (secretWord.charAt(position) == guess) {
System.out.print(guess);
lettersRemaining--;
} else {
System.out.print("*");
}
}
}
System.out.println();
prevGuessedLetters = buffer.append(guess);
System.out.print("Previously guessed letters: ");
System.out.println(prevGuessedLetters);
System.out.print("Letters remaining: ");
System.out.println(lettersRemaining);
}
if (livesLost == totalLives) {
System.out.println("Sorry, you lose!");
} else {
System.out.print("Well done, you win! The word was ");
System.out.println(secretWord);
}
}
最佳答案
Java 带有一个名为 Swing 的 GUI 工具包,您应该学会将其用于手头的任务。
就搜索之前猜测的字母而言, Set
可能更适合您,这是一个 Collection
的独特元素。你可以使用 Set
的 Character
s ,即 Set<Character>
.
一个粗略的例子:
Set<Character> guesses = new HashSet<Character>();
Character guess;
// etc.
while (lettersRemaining > 0 && livesLost < 10)
{
//prompt user to guess a letter
System.out.println("Guess a letter:");
guess = myScanner.findWithinHorizon(".",0).charAt(0);
if (guesses.contains(guess)) {
System.out.println("You have already guessed this character!");
} else {
guesses.add(guess);
//check if the letter guessed is in the secretWord
guessInWord = (secretWord.indexOf(guess))!= -1;
// etc.
}
}
实际上,您可以从 add
中获得更多里程方法利用它返回 true
的事实如果元素不在集合中:
if (guesses.add(guess)) {
//check if the letter guessed is in the secretWord
guessInWord = (secretWord.indexOf(guess))!= -1;
// etc.
} else {
System.out.println("You have already guessed this character!");
}
关于java - 第一次编码(Java 刽子手游戏)- 从基于控制台到 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22768544/