保持匹配对面朝上的记忆游戏错误。我的代码出了什么问题?

时间:2015-07-09 12:29:05

标签: javafx javafx-2 javafx-8

我正在编写一个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"));

}

为什么只有第一张卡面朝上?第二张卡片不会面朝上。

(我的英文太糟糕了,对不起,谢谢你们!)

1 个答案:

答案 0 :(得分:1)

当点击第二张牌时,它会面朝上但之后会立即面朝下因为isMatch = false,所以你无法观察到它们之间的对比。

面向上和向下之间的动画应该有一些延迟。使用Thread.sleep不是一个选项,因为它会延迟当前线程,这是JavaFX主ui线程,所以你将无法在那段时间内观察到gui的变化(面朝上)。