刽子手检查逻辑

时间:2013-10-17 12:02:09

标签: java

嗨,我是编程新手,我们有一个创建刽子手游戏的任务。现在我遇到的问题是猜测。该程序猜测一切正常,它正常工作。虽然它没有打印出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 个答案:

答案 0 :(得分:0)

wordField.setText(displaySecret);

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

认为world字段中的代码将值替换为新值,方法声明称为set,而不是addText

答案 1 :(得分:0)

您应该从

更改初始化显示密钥的方式
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 += "*";
}

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

但是你的代码还有另外一个问题,即如果你的随机变量中出现过多次相同的字母,你只能找到第一个。

条件:

if(i=position)

应该是

if (guess2 == random.charAt(i))