我正在编写一个MEMORY MATCH GAME。点击一张卡,它会面朝上。点击第二张卡片,它也会正面朝上。如果两张卡匹配,它们将消失。如果不匹配,他们将保持面朝下。
我的程序:如果您点击第一张卡,它将面朝上,没问题。但如果你点击第二张卡片,它就不会正面朝上。
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"));
}
为什么只有第一张卡面朝上?第二张卡片不会面朝上。
(我的英文太糟糕了,对不起,谢谢你们!)
答案 0 :(得分:1)
当点击第二张牌时,它会面朝上但之后会立即面朝下因为isMatch = false,所以你无法观察到它们之间的对比。
面向上和向下之间的动画应该有一些延迟。使用Thread.sleep不是一个选项,因为它会延迟当前线程,这是JavaFX主ui线程,所以你将无法在那段时间内观察到gui的变化(面朝上)。