【发布时间】:2021-10-25 00:44:22
【问题描述】:
我是 java 新手,对于一个班级,我应该创建一个刽子手风格的游戏。我想出了如何从单词列表中提取和屏蔽单词,但不能用新猜测的字母替换被屏蔽的单词,也不会将猜测正确或错误的字母存储到 String 变量中。我的老师建议我们不能使用数组,我们必须使用一个字符并让它搜索字符串......任何帮助将不胜感激!
这是输入猜测:
guess = keyboard.next().toLowerCase().charAt(0);
if (Character.isAlphabetic(guess)){
for (int l = 0; l < guessedLetters.length(); l++){
if (guessedLetters.charAt(l) == guess){
System.out.println ("==> a was already guessed.");
}
else if (Character.isAlphabetic(guess)){
for(int m = 0; m < guessedLettersInc.length(); m++){
if (guessedLettersInc.charAt(m) == guess){
guessedLettersInc = guessedLettersInc + guess;
}}}
else{
hiddenWordGame = hiddenWordNew;
guessedLetters = guessedLetters + guess;
}}}
else{
System.out.println("Not a letter, guess again:");
}
然后检查隐藏的单词并将“-”替换为我拥有的正确字母:
public static String hiddenWordGame(String wordLookup, String hiddenWordGame, String guess, String hiddenWordNew)
{
for (int k = 0; k < wordLookup.length(); k++)
if(wordLookup.charAt(k) == guess.charAt(0)){
hiddenWordNew += guess.charAt(0);
}
else{
hiddenWordNew += hiddenWordGame.charAt(k);
}
return hiddenWordNew;
}
当它运行时,这就是我得到的全部(例如,单词是“lamber”):
已经猜到的字母: 猜猜这个单词中的一个字母:-=--=- ?? l
已经猜到的字母: 猜猜这个单词中的一个字母:-=--=- ?? 一个
已经猜到的字母: 猜猜这个单词中的一个字母:-=--=- ?? 米
已经猜到的字母: 猜猜这个单词中的一个字母:-=--=- ?? z
已经猜到的字母: 猜猜这个单词中的一个字母:-=--=- ?? /
不是字母,再猜一下: 已经猜到的字母: 猜猜这个单词中的一个字母:-=--=- ??
这里添加了完整代码,因为它必须从 txt 文件中提取单词(作为作业的一部分),然后是单词的实际掩码...
import java.util.Scanner;
import java.util.Random;
import java.io.*;
public class WordGame2 {
static Random randomNum = new Random();
public static void main(String[] args) throws IOException
{
Scanner keyboard = new Scanner(System.in);
int numberGames = 1;
int highScore;
int avgScoreRunning;
int avgScoreFinal;
int currentScore;
int numGuesses = '0';
char anotherOne;
char guess;
String guessedLetters = "";
String hiddenWordNew = "";
String guessedLettersInc = "";
String secret = "";
String hiddenWordFinal = "";
String wordLookup;
String hiddenWordGame;
String guessGame;
System.out.print("Welcome to Words: The Word Guessing Game!\n");
System.out.print("Play as many games as you like. I'll remember your top score.\n");
System.out.print("and also compute your average for all games played.\n");
do{
numberGames++;
wordLookup = findWord();
System.out.println(wordLookup);
hiddenWordGame = hideWord(wordLookup);
System.out.println(hiddenWordGame);
System.out.println("\n- - - - - - - - - - - - - - - - - - - - - -");
do{
System.out.print("Letters already guessed: " + guessedLettersInc);
System.out.println("\nGuess a letter in this word: " + hiddenWordGame + " ??");
guess = keyboard.next().toLowerCase().charAt(0);
if (Character.isAlphabetic(guess)){
for (int l = 0; l < guessedLetters.length(); l++){
if (guessedLetters.charAt(l) == guess){
System.out.println ("==> a was already guessed.");
}
else if (Character.isAlphabetic(guess)){
for(int m = 0; m < guessedLettersInc.length(); m++){
if (guessedLettersInc.charAt(m) == guess){
guessedLettersInc = guessedLettersInc + guess;
}}}
else{
hiddenWordGame = hiddenWordNew;
guessedLetters = guessedLetters + guess;
}}}
else{
System.out.println("Not a letter, guess again:");
}
numGuesses++;
}
while(hiddenWordNew != wordLookup);
System.out.println("Want to play again? (Y/y for another): ");
anotherOne = keyboard.next().charAt(0);
}
while (anotherOne == 'Y' || anotherOne == 'y');
}
public static String findWord() throws IOException
{
String secretWord = new String();
File wordList = new File("wordlist.txt");
Scanner wordListNew = new Scanner(wordList);
int wordNumber = randomNum.nextInt(33735) +1;
for(int i = 1; i <= wordNumber; i++){
secretWord = wordListNew.nextLine();
if(i == wordNumber){
}}
return secretWord;
}
public static String hideWord(String wordLookup)
{
String hiddenWordFinal;
int wordLength = wordLookup.length();
System.out.println(wordLength);
String hiddenWord = "";
for (int j = 0; j < wordLookup.length(); j++)
if(wordLookup.charAt(j) == 'a' || wordLookup.charAt(j) == 'e' ||
wordLookup.charAt(j) == 'i' || wordLookup.charAt(j) == 'o' ||
wordLookup.charAt(j) == 'u'){
hiddenWord += "=";
}
else{
hiddenWord += "-";
}
return hiddenWord;
}
public static String hiddenWordGame(String wordLookup, String hiddenWordGame, String guess, String hiddenWordNew)
{
for (int k = 0; k < wordLookup.length(); k++)
if(wordLookup.charAt(k) == guess.charAt(0)){
hiddenWordNew += guess.charAt(0);
}
else{
hiddenWordNew += hiddenWordGame.charAt(k);
}
return hiddenWordNew;
}
}
【问题讨论】:
-
您的输出与代码不匹配。考虑提供一个 minimal reproducible example 来证明您的问题
-
我添加了完整的代码,因为我认为它不是太大并且需要使用外部 txt 文件。感谢您的关注和回复
-
你能解释一下为什么你有这个 if 语句吗?
if (guessedLettersInc.charAt(m) == guess){ guessedLettersInc = guessedLettersInc + guess; } -
这是为了创建一串不正确的猜测,并验证猜测是否已经存在。看了一下,肯定是不完整的,我觉得我太专注于掩蔽问题了……但是你!我需要纠正那个
标签: java