Как случайным образом назначить 9 карт в 9 заранее определенных местоположений без дубликатов на code.org? - PullRequest
0 голосов
/ 26 апреля 2018

Я старшеклассник, и для моего курса основ компьютерных наук мы должны разработать и написать игру как финал.Я пытаюсь закодировать одну из этих подходящих игр (например, 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);
});

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Я тоже старшеклассник, и мой последний проект - сделать игру.Хотя я думаю, что мы используем разные базы, вы используете javascript, как и я, но вы ссылаетесь на файлы .png, я использую игровую лабораторию, поэтому я не обращаюсь непосредственно к файлам png.

В любом случае,лично я создал бы массив с возможностью использования каждой карты, затем использовал Math.random (arrayLength), чтобы выбрать карту, затем поместил ее и удалил из массива, промойте и повторяйте, пока все карты не будут помещены.

Что касается оценки, я бы использовал пару переменных.Одна переменная для отслеживания того, с какой парой вы работаете в поиске соответствия, а затем переменная для того, сколько из этой пары вы нашли в строке.

Учитывая, что вы спросили об этом 17 дней назад, я незнаю, нужна ли вам помощь, но удачи!

0 голосов
/ 26 апреля 2018

Перетасовка вещей, таких как карты, является известной проблемой.Для небольшого набора, такого как карты, используйте случай Фишера-Йейтса .

Для больших наборов можно использовать другие методы, но для 52 карт достаточно Фишера-Йейтса.

В некоторые языки уже встроен метод shuffle(), хотя для обучения полезно написать хотя бы один раз.

...