1

我是一名高中生,对于我的计算机科学原理课,我们必须设计和编码一个游戏作为期末考试。我正在尝试编写其中一款匹配游戏(例如http://mypuzzle.org/find-the-pair)。对于我的生活,我不知道如何洗牌,所以每次你开始游戏时它们都会改变位置。有很多关于如何制作这些游戏的教程,但是当我查看代码时,这些对我来说毫无意义。据我所知,没有任何教程使用与 code.org 相同的编码语言。

[编辑] 好的,所以我意识到我上面写的内容含糊不清。我真正苦苦挣扎的是弄清楚如何将 9 张卡片随机分配到 9 个预定位置,而不会重复,因为它们都收敛到中间,因此是洗牌。

这是一个非常基本的游戏,用户需要匹配 3 对 3 才能获胜。如果有人觉得自己像个全明星,我也需要帮助弄清楚比赛的得分。提前感谢任何帮助的人(:

var questionURL="question-mark.jpg";
var dogURL="dog.jpg";
var catURL = "cats.jpg";
var currentCard1URL = getImageURL("card1");
onEvent("Startbutton", "click", function() {
  setPosition("card1", 120, 216);
  setPosition("card2", 120, 216);
  setPosition("card3", 120, 216);
  setPosition("card4", 120, 216);
  setPosition("card5", 120, 216);
  setPosition("card6", 120, 216);
  setPosition("card7", 120, 216);
  setPosition("card8", 120, 216);
  setPosition("card9", 120, 216);
});
onEvent("Startbutton", "click", function() {
  timedLoop(1000, function() {
    if (currentCard1URL == dogURL) {
      setImageURL("card1", questionURL);
    }
    if (currentCard2URL == dogURL) {
      setImageURL("card2", questionURL);
    }
    if (currentCard3URL == dogURL) {
      setImageURL("card3", questionURL);
    }
    if (currentCard4URL == catURL) {
      setImageURL("card4", questionURL);
    }
    if (currentCard5URL == catURL) {
      setImageURL("card5", questionURL);
    }
    if (currentCard6URL == catURL) {
      setImageURL("card6", questionURL);
    }
    if (currentCard7URL == bunnyURL) {
      setImageURL("card7", questionURL);
    }
    if (currentCard8URL == bunnyURL) {
      setImageURL("card8", questionURL);
    }
    if (currentCard9URL == bunnyURL) {
      setImageURL("card9", questionURL);
    }
  });
});
onEvent("card1", "click", function() {
  if (currentCard1URL == dogURL) {
     setImageURL("card1", dogURL);
  } else {
     setImageURL("card1", questionURL);
  }
});
var currentCard2URL = getImageURL("card2");
onEvent("card2", "click", function() {
  if (currentCard2URL == dogURL) {
    setImageURL("card2", dogURL);
  } else {
    setImageURL("card2", questionURL);}
});
var currentCard3URL = getImageURL("card3");
onEvent("card3", "click", function() {
  if (currentCard3URL == dogURL) {
    setImageURL("card3", dogURL);
  } else {
    setImageURL("card3", questionURL);}
});
var currentCard4URL = getImageURL("card4");
onEvent("card4", "click", function() {
  if (currentCard4URL == catURL) {
    setImageURL("card4", catURL);
  } else {
    setImageURL("card4", questionURL);}
});
var currentCard5URL = getImageURL("card5");
onEvent("card5", "click", function() {
  if (currentCard5URL == catURL) {
    setImageURL("card5", catURL);
  } else {
    setImageURL("card5", questionURL);}
});
var currentCard6URL = getImageURL("card6");
onEvent("card6", "click", function() {
  if (currentCard6URL == catURL) {
    setImageURL("card6", catURL);
  } else {
    setImageURL("card6", questionURL);}
});
var bunnyURL = "baby.jpg";
var currentCard7URL = getImageURL("card7");
onEvent("card7", "click", function() {
  if (currentCard7URL == bunnyURL) {
    setImageURL("card7", bunnyURL);
  } else {
    setImageURL("card7", questionURL);}
});
var currentCard8URL = getImageURL("card8");
onEvent("card8", "click", function() {
  if (currentCard8URL == bunnyURL) {
    setImageURL("card8", bunnyURL);
  } else {
    setImageURL("card8", questionURL);}
});
var currentCard9URL = getImageURL("card9");
onEvent("card9", "click", function() {
  if (currentCard9URL == bunnyURL) {
    setImageURL("card9", bunnyURL);
  } else {
    setImageURL("card9", questionURL);}
});
onEvent("card1", "click", function() {
  var score = score + 1;
  setText("score", score);
});
4

2 回答 2

1

洗牌是一个已知的问题。对于小系列,比如卡片,然后使用Fisher-Yates shuffle

其他方法可用于更大的集合,但对于 52 张卡片,Fisher-Yates 就足够了。

一些语言已经shuffle()内置了一种方法,但为了学习,最好至少编写一次自己的方法。

于 2018-04-26T08:41:22.837 回答
0

我也是一名高中生,我最后的项目也是做一个游戏。尽管我认为我们使用的是不同的基础,但您像我一样使用 javascript,但您引用的是 .png 文件,我使用游戏实验室,所以我并没有真正直接引用 png 文件。

无论如何,我个人会创建一个包含每个卡片可能性的数组,然后使用 Math.random(arrayLength) 选择一张卡片,然后放置它,然后将其从数组中删除,冲洗并重复直到放置所有卡片。

至于得分,我会使用几个变量。一个变量来跟踪您正在努力匹配的配对,然后是一个变量,用于记录您连续找到了多少配对。

考虑到你 17 天前问过这个问题,我不知道你是否还真的需要帮助,但祝你好运!

于 2018-05-13T08:17:55.467 回答