/ / Erro no jogo de memória ao manter os pares correspondentes voltados para cima. o que há de errado com o meu código? - javafx, javafx-2, javafx-8

Erro de jogo de memória com a manutenção de pares correspondentes. o que há de errado com o meu código? - javafx, javafx-2, javafx-8

Estou programando um jogo de memória. Clique em um cartão, ele ficará virado para cima. Clique em um segundo cartão e ele também ficará virado para cima. Se as duas cartas coincidirem, elas desaparecerão. Caso contrário, eles permanecerão com a face para baixo.

Meu programa: se você clicar no primeiro cartão, o turn ficará voltado para cima, sem problemas. Mas se você clicar no segundo cartão, ele não ficará virado para cima.

public void onMouseClicked(TileUIController eventController, TileUIController matchedController, MouseEvent event, GameUI gameUI) {
if (displayCard1 == null || displayCard2 == null) {//只翻起一张牌,或未翻起牌

if (displayCard1 == null) {//未翻起牌 there is no card has been clicked
displayCard1 = eventController;
} else {//翻起了一张牌//there is already one card has been clicked
if (displayCard1.equals(eventController)) {//是同一张牌被点击,不做任何处理if is the same card to be clicked
return;
}
displayCard2 = eventController;
}
hitSound.play();
faceUp(eventController);//make card to be face up

}


//两张牌都被翻起if there are already tow cards,check if they match
if (displayCard1 != null && displayCard2 != null) {
boolean isMatch = isMatch(displayCard1, displayCard2, event);
if(isMatch){
disappearTwoCards(displayCard1,displayCard2);
}else{
faceDownTwoCards(displayCard1,displayCard2);
}
}
}

private void faceUp(TileUIController controller) {

controller.getImageView().setImage(new Image("upImage"));

}
private void faceDown(TileUIController controller) {
//将image设置为cardback,感觉像翻过去了
controller.getImageView().setImage(new Image("backImage"));

}

por que apenas a primeira carta está voltada para cima? a segunda carta não está voltada para cima.

(Meu inglês é muito ruim, desculpe e obrigado pessoal!)

Respostas:

1 para resposta № 1

Quando a segunda carta é clicada, ela fica voltada para cima, mas voltada para baixo imediatamente depois, porque isMatch = false, para que você não possa observar a face para cima no meio.

Deve haver algum atraso para a animação entrevoltado para cima e para baixo. O uso do Thread.sleep não é uma opção, pois atrasará o encadeamento atual, que é o encadeamento principal da interface do usuário do JavaFX, portanto, você não poderá observar a alteração da GUI (voltada para cima) nesse período.