Olá, estou tendo uma dificuldade em uma aplicação java que desenvolvi, que simula um jogo de damas, porém, sua diferença é que durante o jogo, ao tentar capturar uma peça, um painel com uma pergunta e alternativas é mostrado, e o jogador deve responder corretamente para proceder com a ação. Neste caso são usadas 3 classes: Questoes (Possui a estrutura das questoes inseridas no banco de dados),TelaJogo (Tela onde roda o jogo de damas), e PainelQuestoes (Painel onde é mostrado uma questao aleatória do banco dedados). Bem, a minha dificuldade é com que a classe “TelaJogo” espere que a alternativa seja escolhida para ai então fazer a comparação, que no caso não é o que acontece. Na classe PainelQuestao, tem uma string “resposta” que recebe a string “correto” caso a alternativa escolhida seja correta, e a string “errado” caso a alternativa escolhida seja errada. Bom, o problema é que, ao iniciar o PainelQuestão, a string “resposta” ainda está vazia e é quando ocorre a comparação, eu gostaria de saber como faria para a ação comparação esperar até que uma alternativa seja escolhida. Segue o Código
public void actionPerformed(ActionEvent e) {
//SELEÇÃO CAPTURA PECA AZUL
//Eu fiz as ações das pessas serem baseadas na imagem que o botão possui, neste caso estou verificando se a peça a ser clicada está disponível a ser capturada. (pvc = peça vermelha captura)
if(e.getSource()==botao[l][c]){
if(botao[l][c].getIcon()==pvc){
try {
pq = new PainelQuestao();//se o botão atender os requisitos de captura, um painel com uma questão é instanciado.
} catch (Exception e1) {
e1.printStackTrace();
}
if(pq.getResposta()==pq.correto){ //verifica se a resposta está correta
if (botao[l-1][c-1].getIcon()==pas){//se sim, a captura prossegue
botao[l][c].setIcon(cs);
botao[l-1][c-1].setIcon(cs);
botao[l+1][c+1].setIcon(pa);
}
}else {
[...]
}
ActionPerformed da Classe PainelQuestao
public void actionPerformed(ActionEvent a) {
if(a.getSource()==jb1){//verifica se o botao clicado foi a primeira alternativa
altEscolhida = jb1.getText(); //altEscolhida recebe o texto de jb1
if(altEscolhida.equals(altCorreta)){// comparação com a alternativa correta
setResposta(correto); //se sim, string resposta recebe a string correto
}else{
setResposta(errado);//se não, string resposta recebe a string errado
}
System.out.println(altEscolhida);//imprime a alternativa escolhida, a alternativa correta, e se a respota esta correta ou nao.
System.out.println(altCorreta);
JOptionPane.showMessageDialog(null,getResposta());
setVisible(false);
}
if(a.getSource()==jb2){
altEscolhida = jb2.getText();
if(altEscolhida.equals(altCorreta)){
setResposta(correto);
}else{
setResposta(errado);
}
System.out.println(altEscolhida);
System.out.println(altCorreta);
JOptionPane.showMessageDialog(null,getResposta());
setVisible(false);
}
if(a.getSource()==jb3){
altEscolhida = jb3.getText();
if(altEscolhida.equals(altCorreta)){
setResposta(correto);
}else{
setResposta(errado);
}
System.out.println(altEscolhida);
System.out.println(altCorreta);
JOptionPane.showMessageDialog(null,getResposta());
setVisible(false);
}
}