Попытка закодировать MasterMind на html, но система распознавания подсказок не работает должным образом - PullRequest
0 голосов
/ 27 апреля 2020

Пытаясь поймать черно-белые подсказки для моей репликации настольной игры MasterMind, он обнаруживает цвет два раза, например:

Секретный код: Красный, Желтый, Желтый, Розовый. Я пытаюсь угадать: Красный, Зеленый, Синий, Оранжевый. Неожиданный результат: (Черный: 1 ) (Белый: 1)

Поскольку Красный находится на том месте, где он должен быть, вы получаете черную подсказку, но она не учитывается для белых подсказок, потому что того, что. Я попытался удалить выбранный цвет и копию секретного кода, и он появляется в журнале отладки, который я создал, но, похоже, не работает

Журнал отладки показывает это:

  • (4) [0, 5, 5, 6] Копия S C
  • (4) [0, 2, 3, 4] Выборы
  • (4) [0, 5, 5, 6] Копия S C
  • (4) [0, 2, 3 , 4] Выбор
  • (4) [1, 5, 5, 6] Секретный код
document.getElementById("bttGuess").style.display = "none";

function GtData() {
  let a = document.getElementById("s1");
  let b = document.getElementById("s2");
  let c = document.getElementById("s3");
  let d = document.getElementById("s4");
  let fa = Number(a.options[a.selectedIndex].value);
  let fb = Number(b.options[b.selectedIndex].value);
  let fc = Number(c.options[c.selectedIndex].value);
  let fd = Number(d.options[d.selectedIndex].value);
  r = [fa, fb, fc, fd];
  return r
}
var Try = 0;
var SecretCode = [];

function generateRdm() {
  for (i = 0; i < 4; i++) {
    SecretCode.push(Math.floor(Math.random() * 6 + 1));
  }
}
let blackHint = 0;
let whiteHint = 0;
Btn = document.getElementById("bttGuess");
Btn.addEventListener("click", function () {
  let blackHint = 0;
  let whiteHint = 0;
  let temporalSC = SecretCode.slice();
  let Data = GtData();

  function naming(array, destiny) {
    for (i = 0; i < 4; i++) {
      if (array[i] == 1) {
        destiny.push("Red");
      }
      else if (array[i] == 2) {
        destiny.push("Green");
      }
      else if (array[i] == 3) {
        destiny.push("Blue");
      }
      else if (array[i] == 4) {
        destiny.push("Orange");
      }
      else if (array[i] == 5) {
        destiny.push("Yellow");
      }
      else if (array[i] == 6) {
        destiny.push("Pink");
      }
      else if (array[i] == 7) {
        destiny.push("Black");
      }
    }
  }
  let NamedData = [];
  let WinningSC = [];
  naming(Data, NamedData);
  naming(SecretCode, WinningSC);
  for (i = 0; i < 4; i++) {
    if (Data[i] == temporalSC[i]) {
      temporalSC.splice(i, 1, 0);
      Data.splice(i, 1, 0);
      blackHint++
    }
  }
  console.log(temporalSC);
  console.log(Data);
  for (i = 0; i < 4; i++) {
    if (temporalSC.includes(Data[i]) == true) {
      temporalSC.splice(Data.indexOf(i), 1, 0)
      Data.splice(i, 1, 0);
      whiteHint++
    }
  }
  console.log(temporalSC);
  console.log(Data);
  console.log(SecretCode);
  if (blackHint == 4) {
    window.alert("You win! The Secret code was: " + WinningSC)
    document.getElementById("bttPlay").style.display = "block";
    document.getElementById("bttGuess").style.display = "none";
  }
  Try++
  document.getElementById(Try.toString()).innerHTML = NamedData + " (Black Hints: " + blackHint + ") (White Hints: " + whiteHint + ")";
  if (Try == 10 && blackHint != 4) {
    window.alert("You lose!  The Secret code was: " + WinningSC)
    document.getElementById("bttPlay").style.display = "block";
    document.getElementById("bttGuess").style.display = "none";
  }

});
BtnP = document.getElementById("bttPlay");
BtnP.addEventListener("click", function () {
  Try = 0;
  SecretCode = [];
  generateRdm();
  for (i = 1; i <= 10; i++) {
    document.getElementById(i.toString()).innerHTML = " "
    document.getElementById("bttPlay").style.display = "none";
    document.getElementById("bttGuess").style.display = "block";
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...