Estoy haciendo botones con forma de teclado para mi juego Hangman (SEE PICTURE HERE), mi problema es sobre las clases internas. He leído esto LINK sobre clases internas y dice que solo se puede acceder a las variables externas con el tipo FINAL
. Pero si declaro la variable como tal, ya no puedo cambiar el valor de ella ... Así que mi problema es que necesito cambiar el valor dentro de la clase interna. Mi código es el siguiente:Clases internas en 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++;
}
}
NOTA: El código anterior no está completo. El corrector int se utiliza para contar el número de letras correctas ya están adivinado por lo que si es igual a la longitud de la palabra, ahora puedo pasar a la siguiente nivel
¿Cómo puedo volver a hacer mi código?
Si explica lo que 'checker' está haciendo, además de la verificación de control obvia, podría ayudar a las personas a sugerir alternativas de diseño. – Carl