0

我正在尝试制作具有 3 个条件的记忆卡游戏:

  1. 当玩家开始游戏时,第一次点击会显示第一张牌
  2. 如果玩家点击第二张卡片,则有 2 个选项
    a。第二张卡与第一张卡的价值相同。因此保留他们两个。
    湾。第二张卡有不同的价值。因此,单击时将两者都翻转回来

在此处输入图像描述

我不知道处理这个问题的最佳方法是什么。我想过使用 if 语句并制作应该有 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{

    }        
}
4

1 回答 1

1

我会把问题分解成更小的问题。

有几种不同的方法来解决解决更大最终目标所需的小任务:

  • public voidrevealCard(卡牌)
  • public boolean isMatch(卡卡)
  • public void flipCardsBackOver(Card card1, Card card2);

并添加一个实例变量来存储已经启动的卡。一旦你分解了所有单独的挑战,那么你的问题就变得很简单了:

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
  }
}
于 2013-11-05T18:07:49.950 回答