java记忆游戏的三个条件

时间:2013-11-05 17:48:26

标签: java

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

  1. 当玩家开始游戏时,第一次点击显示第一张卡
  2. 如果玩家点击第二张牌,则有2个选项  一个。第二张卡与第一张卡具有相同的价值。因此,保留他们两个  湾第二张牌有不同的价值。因此,当点击
  3. 时双向翻转

    enter image description here

    我不知道处理这个问题的最佳方法是什么。我想到使用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{
    
        }        
    }
    

1 个答案:

答案 0 :(得分:1)

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

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

  • public void revealCard(卡片卡)
  • public boolean isMatch(Card card)
  • 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
  }
}