java 内存游戏的三个条件

标签 java

我正在尝试制作一个内存卡游戏,有3个条件:

  1. 当玩家开始游戏时,第一次点击会显示第一张牌
  2. 如果玩家点击第二张牌,则有 2 个选项
    A。第二张牌与第一张牌具有相同的值(value)。因此保留它们。
    b.第二张卡有不同的值(value)。因此,当点击
  3. 时,将两者翻转回来

enter image description here

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

相关文章:

java - Android 是否为 DatagramSocket 排队 UDP 数据包?

java - 在 Android 代码中模拟创建 AsyncTasks 和 Intents 的优雅方法

java - Web 服务请求在 android 浏览器和代码中不起作用;但它在电脑浏览器中工作

windows-xp - Windows XP 上 Wiimote(Wii Remote)的 Java API

java - 通过 servlet/jsp 从 mysql 数据库中删除数据

java - ANTLR - 如何确定什么样的解析树 "best fits"一些代码

java - 面向对象设计/如何建立类结构

java - 将多个 JSONArray 添加到 JSONArray

java - Neo4J 2.0.2 服务器在 Java 8、Mac OS X 10.9 下拒绝启动

java - @Document 中的 HashSet,其中实体使用唯一 ID,DuplicatekeyException