当前位置: 首页 > 知识库问答 >
问题:

刽子手检查逻辑

舒赞
2023-03-14

嗨,我是编程新手,我们的任务是制作一个刽子手游戏。现在我面临的问题是猜测。程序猜对了一切,并且工作正常。虽然它不会打印出JTextField中的字母,或者它会打印出1个字母,但当我猜正确时,上一个字母会被覆盖。

那么,有谁能伸出援助之手呢?

这是我的检查代码:

  private class check implements ActionListener {
    public void actionPerformed(ActionEvent ae) {
        try {  
            // Grabs the letter from the guessField and converts it into a char which can be used to compare against the word.
         guess = guessField.getText();

        guessField.setText("");
        char guess2 = guess.charAt(0);


        String displaySecret = "";

        for (int i = 0; i < random.length(); i++)
            displaySecret += "*";


        //read in a guess
        int position = random.indexOf(guess2);
        //now position contains the index of guess inside secret, or
        //-1 if the guess was wrong

        String newDisplaySecret = "";
        for (int i = 0; i < random.length(); i++)
            if (i == position)
                newDisplaySecret += random.charAt(i); //newly guessed character
            else
                newDisplaySecret += displaySecret.charAt(i); //old state

        displaySecret = new String(newDisplaySecret);

        wordField.setText(displaySecret);

}

共有2个答案

边浩漫
2023-03-14
wordField.setText(displaySecret);

wordField.setText(wordField.getText()+displaySecret);

假设world字段中的代码用新的值替换了该值,方法声明说它是set,而不是addText

施冠玉
2023-03-14

您应该更改初始化显示密码的方式

String displaySecret = "";
    for (int i = 0; i < random.length(); i++)
        displaySecret += "*";

String displaySecret = wordField.getText();
if(displaySecret=NULL){/*case for fist execution*/
    displaySecret="";
    for (int i = 0; i < random.length(); i++)
    displaySecret += "*";
}

这将使你能够记住从一个猜测到另一个猜测的最后一个条目。如果标签已正确初始化,则可以删除整个if语句。

然而,代码中还有另一个问题,即如果同一个字母在随机变量中多次出现,则只能找到第一个字母。

条件:

if(i=position)

应该是

if (guess2 == random.charAt(i))
 类似资料:
  • 我已经被这段代码困扰了一段时间,非常感谢您的帮助。因此,基本上我的刽子手代码运行良好,但控制台中的显示,破折号应该反映哪些字母猜对了,哪些字母仍然需要猜对,这是完全错误的。我将在这里发布我的代码。由于时间很长,我将只发布相关的方法。我觉得问题似乎出在显示数组列表上,我无法持续更新它。

  • 我目前正在用java编写一个hangman控制台游戏,到目前为止还没有遇到任何问题。 我现在遇到了一个似乎无法解决的问题。 我有不同单词的数组容易,中等和困难,并根据选择的难度随机从他们得到一个单词。然后我把这个单词转换成*'s,这样玩家就看不到角色了。 然后向用户索要信件,程序会通知用户信件是对还是错。但问题是,如果*在单词中,我似乎无法将*改为字母。例如,如果单词是“蜜蜂”,玩家选择了b,我想

  • 在我的游戏中出现的问题是,当我试图在游戏中插入单词时,它不显示字母,它应该在正确的时候显示字母,如果它是错误的,它应该通过增加刽子手的一部分来惩罚我。 我创建了惩罚函数和函数,当它正确时显示用户输入的字母,请帮助!! 这是我的代码:http://pastebin.com/du98i88G 我认为在pygame中的函数` 中可能存在问题,而不是gameQuit:for event。事件get():i

  • 我是java新手,我正在尝试创建一个基本的刽子手游戏,我已经为这一轮创建了方法,但我一直在创建一个布尔值,该值将使游戏进入下一轮(如果玩家输入了错误的字母,他将失去一次猜测字母的尝试;他可能只会出错10次;如果猜测,他将继续游戏)。我的代码到目前为止,我甚至尝试通过if/else语句排除布尔值,但对我来说它似乎非常愚蠢。任何帮助都是有用的。非常感谢。

  • OpenNLP API中句子检测类背后使用的逻辑是什么?是: 基于“”进行检测或 最长的空白修剪字符序列或 还有别的 有人能解释一下吗? 另外:解析API中的解析是如何完成的,即使用的逻辑是什么?

  • 我想做一个刽子手游戏。每转一圈,用户猜一个字母。如果他们猜对了,他们可以再猜一次。否则,它们剩余的可用猜测将减少1,猜测的字母将放入一个数组中。 当用户点击零剩余猜测时,程序应该询问他们是否想再次玩。如果他们回答“是”,则应重新启动游戏;如果他们回答“否”,则程序结束。 我遇到的问题是用于猜测的数组,以及重新启动游戏。 此外,程序启动时每隔一段时间都会出错。错误是 线程“main”java中出现异