这是一个刽子手游戏
public static String letterGuessed;
public static String[] word = {"fuzzy","chess","elephant","cheesecake","charger","laptop","relevance","funnybone"};
public static int ran;
public static JLabel jl = new JLabel();
public void wordGenerator(){
int max = 8;
int wordLength;
int counter = 0;
int min = 0;
ran = (int)(Math.random()* (max - min +1) + min);
wordLength = word[ran].length();
while (counter <= wordLength){
lblWord.setText( lblWord.getText() + "_ ");
counter++;
}
}
public void getLetter(){
letterGuessed = txtLetterGuess.getText();
}
public void rightOrWrongGuess() {
if (word[ran].contains(letterGuessed)){
//lblWord.replace.
} else {
//PICTURE CHANGE
}
lblGuessedLetters.setText(lblGuessedLetters.getText() + "_ " + letterGuessed);
}
private void btnGuessLetterActionPerformed(java.awt.event.ActionEvent evt) {
getLetter();
rightOrWrongGuess();
for (int i=0;i<=6;i++) {
if (!word[ran].contains(letterGuessed)) {
lblPicture.setIcon(new ImageIcon("C:\\Pic\\hangman" + i + ".jpg"));
}
}
因此,每当他们猜错字母时,我都会尝试使用计数器上传不同的图片。只有6张照片,最后一张是完整的刽子手。 i
或counter
似乎不起作用。
我认为我不会得到快速连续的图片,因为他们每次都必须点击按钮。 感谢。
答案 0 :(得分:4)
你不想使用for循环,这没有任何意义,因为你会在每个按钮按下时循环所有图像,立即。因此,如果用户按下按钮一次,则将立即交换六个图像,并且由于它是在Swing事件线程上完成的,因此除了最后一个图像之外,它们根本不会被看到。再次按下按钮,拉链,同样的事情发生。
不,您只想简单地在actionPerformed中增加一个int计数器变量,然后使用该int更改图像一次,而不是在for循环中。
e.g。在伪代码中,
private void btnGuessLetterActionPerformed(java.awt.event.ActionEvent evt) {
get the letter selected
if the letter is correct,
update the guess word display to show the new letter in the word
end if
else // the letter is incorrect
incorrectGuessCount++;
if incorrectGuessCount == max, game over, show whole image
else
setIcon to the hangmanImageIconList.get(incorrectGuessCount)
end else
end else
}
此外,将所有图像加载到程序开头的ArrayList中,而不是按下按钮。