我正在尝试制作一个有三个条件的记忆卡游戏:
我不知道处理这个问题的最佳方法是什么。我想到使用if语句并制作应该有3个输出的新方法“state”。
public void mousePressed() {
if(state==READY){
for (int i = 0; i < 6; i++) {
if(mouseX >= cards[i].x &&
mouseX <= cards[i].x+cards[i].WIDTH &&
mouseY >= cards[i].y &&
mouseY <= cards[i].y+cards[i].HEIGHT) {
cards[i].flip();
}
}
}
else if (state==FIRST_CHOSEN){
}
else{
}
}
答案 0 :(得分:1)
我会把问题分解成更小的问题。
有几种不同的方法可以解决解决更大目标所需的小任务:
添加一个实例变量,用于存储已经启动的卡。一旦你将所有不同的挑战分开,那么你的问题就变得很容易了:
private Card CardOne; //instance variable
public void revealCard(Card myCard) {
myCard.flipCard(); //Whatever task you need to flip the card
if (CardOne = null) {
myCard = CardOne;
return;
}
if myCard.isMatch(CardOne)) {
//Do whatever you need to do when there is a match
}
else {
this.flipCardsBackOver(myCard, CardOne) //Flip all up cards over and set Card1
//to null
}
}