我目前正在学习Java编程,我们需要制作一个基本的Hangman游戏,没有图形界面,只需要主要的和更少的方法。
所以这就是事情:
我做了一个方法,允许我在不同的主题之间进行选择,每个主题上有5个单词或一组单词,然后它随机选择其中一个并将其分配给一个字符串变量“word”,一个i'我会一起工作。
然后有一个方法创建一个字符串“HiddenWord”,只需用'*'替换字符并保留字之间的空格。
问题在于我不知道如何输入字母“字母”,并在隐藏字中替换该字母,逐步解析隐藏字。
我会提供我的代码,但它是西班牙语,所以我会翻译一些关键词(你注意到我的英语技能真棒吗?)
HideWord
方法(我认为这里没有问题,也许应该以其他方式完成单词之间的间距):
public String hideWord(String word)
{
String hiddenWord ="";
for(int i=0;i<word.length();i++)
{
if(word.charAt(i)==' ')
{
hiddenWord+=' ';
}
else
{
hiddenWord+='*';
}
}
return hiddenWord;
}
我已故意删除main
方法中无趣且容易的部分。
main ()
{
Ahorcado objeto=new Ahorcado();
//Example word, since the full code is really long
String word = "Hello World";
int life;
String hiddenWord=objeto.hideWord(word);
System.out.println("Game just Started\n");
System.out.println(palabraOculta); //Hello world -> ***** *****
char letter;
boolean resolved=false;
do
{
System.out.println("Input a letter");
letter=objeto.teclado.next().charAt(0);
//Intentionally left almost Blank because every try did a weird Pyramid thing or just crash
for(int i=0;i<word.length();i++)
{
if(letter==word.charAt(i))
{
}
}
if(hiddenWord.equals(word))
{
resolved=true;
}
objeto.life--;
}
while(objeto.vidas>=0&&resolved==false);
}
嗯,就是这样,抱歉我的可怕语法和我可怜的Java,如果需要,我会提供更多部分代码。
答案 0 :(得分:1)
一旦你发现一个字母在单词中,你应该做什么,只需替换你在原始单词中找到字母的索引中的*字符:
for(int i=0;i<word.length();i++)
{
if(letter==word.charAt(i))
{
char[] wordCharsArray = hiddenWord.toCharArray();
wordCharsArray[i] = letter;
hiddenWord= String.valueOf(wordCharsArray);
}
}
我不确定但是可能有更有效的方法来替换字符串中的字符,但这应该对你有用。
答案 1 :(得分:0)
为了提高效率,我只想使用StringBuilder
:
do{
System.out.println("Input a letter");
letter=objeto.teclado.next().charAt(0);
StringBuilder sb = new StringBuilder();
for(int i=0; i<word.length(); i++){
if(letter == word.charAt(i)){
sb.append(word.charAt(i));
} else {
sb.append(hiddenWord.charAt(i));
}
}
hiddenWord = sb.toString();
resolved = hiddenWord.equals(word);
objeto.life--;
} while(objeto.vidas>=0 && !resolved); //resolved == false could be simplified to !resolved