私のハングマンゲーム(SEE PICTURE HERE)のキーボードのようなボタンを作っています。私の問題は内部クラスです。私はこの内部クラスについてLINKを読んでおり、FINAL
タイプの外部変数にしかアクセスできないと言います。しかし、変数を宣言しても、変数をそれ以上変更することはできません。だから私の問題は、内部クラスの内部の値を変更する必要があるということです。私のコードは次の通りです:Javaの内部クラス
public class MainGame extends JDialog {
private String player;
private char [] wordChar;
private JButton[] buttons;
private int level;
private int score;
private int livesLeft;
private int missedGuess;
void newGame() {
level = 0;
score = 0;
livesLeft = 10;
missedGuess = 0;
//label1:
// while (livesLeft!= 0) {
//get random WORD from LIST
Word hiddenWord = new Word();
//put random word in Array
wordChar = new char[hiddenWord.getHiddenWord().length()];
wordChar = hiddenWord.getHiddenWord().toCharArray();
buttons = new JButton[wordChar.length];
for (int i = 0; i < wordChar.length; i++){
JButton guessWord = new JButton(" ");
guessWord.setFont(new Font("Microsoft Sans Serif", 1, 18));
guessWord.setEnabled(false);
jPanel3.setLayout(new GridLayout(1, wordChar.length));
jPanel3.add(guessWord);
buttons[i] = guessWord;
}
checkLetter();
}
void checkLetter() {
int checker = 0;
while(checker != wordChar.length){
jPanel1.setLayout(new GridLayout(3, 9, 3, 5));
for (char buttonChar = 'a'; buttonChar <= 'z'; buttonChar++) {
String buttonText = String.valueOf(buttonChar);
final JButton letterButton = new JButton(buttonText);
letterButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
for (int j = 0; j < wordChar.length; j++){
String text = String.valueOf(wordChar[j]);
if(actionCommand.equals(text)){
buttons[j].setText(text);
checker++; //THIS CODE IS NOT POSSIBLE!!!!
}
}
}
});
jPanel1.add(letterButton);
}
checker++;
}
}
注:上記のコードは完全ではありません。 intチェッカーは、すでに推定されている正しい文字の数をカウントするために使用されるので、単語の長さと等しい場合、次のレベルに進むことができます。
コードを再作成するにはどうすればよいですか?
明らかなコントロールチェックとは別に、「チェッカー」が何をしているのかを説明すると、人々が設計の選択肢を提案するのに役立つかもしれません。 – Carl