保持配对面朝上的记忆游戏错误。我的代码有什么问题?
Memory game error with keeping matched pairs face up. what's wrong with my code?
我正在编写记忆消除游戏。单击一张卡片,它将正面朝上。点击第二张牌,它也会翻到正面。如果两张牌匹配,它们就会消失。如果不匹配,它们将保持面朝下。
我的程序:如果你点击第一张卡片,它会变成正面朝上,没问题。但是如果你点击第二张牌,它不会翻到正面。
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"));
}
为什么只有第一张牌正面朝上?第二张牌不会正面朝上。
(我的英文太烂了,抱歉谢谢大家!)
当点击第2张卡片时,由于isMatch=false,它是正面朝上的,但紧接着又是正面朝下的,所以你无法观察到中间的正面朝上。
面向上和向下之间的动画应该有一些延迟。使用 Thread.sleep 不是一个选项,因为它会延迟当前线程,即 JavaFX 主线程 ui,因此您将无法观察到 gui 的变化(朝上)期间。
我正在编写记忆消除游戏。单击一张卡片,它将正面朝上。点击第二张牌,它也会翻到正面。如果两张牌匹配,它们就会消失。如果不匹配,它们将保持面朝下。
我的程序:如果你点击第一张卡片,它会变成正面朝上,没问题。但是如果你点击第二张牌,它不会翻到正面。
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"));
}
为什么只有第一张牌正面朝上?第二张牌不会正面朝上。
(我的英文太烂了,抱歉谢谢大家!)
当点击第2张卡片时,由于isMatch=false,它是正面朝上的,但紧接着又是正面朝下的,所以你无法观察到中间的正面朝上。
面向上和向下之间的动画应该有一些延迟。使用 Thread.sleep 不是一个选项,因为它会延迟当前线程,即 JavaFX 主线程 ui,因此您将无法观察到 gui 的变化(朝上)期间。