如何将9张卡随机分配到9个预定位置,而无需重复使用code.org?

时间:2018-04-26 01:09:42

标签: random duplicates game-engine shuffle code.org

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

[编辑]好吧所以我意识到我上面写的是模糊和混乱。我真正挣扎的是弄清楚如何将9张牌随机分配到9个预定位置,没有重复,然后它们全部收敛到中间,因此是随机播放。

这是一个非常基本的游戏,用户需要匹配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);
});

1 个答案:

答案 0 :(得分:1)

像卡片一样洗牌是一个众所周知的问题。对于像卡片这样的小套装,请使用Fisher-Yates shuffle

其他方法可用于较大的套装,但对于52张牌,Fisher-Yates就足够了。

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