我正在尝试制作一个内存卡游戏,有3个条件:
- 当玩家开始游戏时,第一次点击会显示第一张牌
- 如果玩家点击第二张牌,则有 2 个选项
A。第二张牌与第一张牌具有相同的值(value)。因此保留它们。
b.第二张卡有不同的值(value)。因此,当点击 时,将两者翻转回来
我不知道解决这个问题的最佳方法是什么。我想到使用 if 语句并创建新方法“state”,它应该有 3 个输出。
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{
}
}
最佳答案
我会把问题分解成更小的问题。
有几种不同的方法来解决解决更大的最终目标所需的小任务:
- public void RevealCard(Card 卡)
- public boolean isMatch(Card 卡)
- public void FlipCardsBackOver(卡卡1,卡卡2);
并添加一个实例变量来存储已经打开的卡片。一旦您分解了所有单独的挑战,那么您的问题就变得很简单:
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
}
}
关于java 内存游戏的三个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19795433/