Пытаясь поймать черно-белые подсказки для моей репликации настольной игры 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";
}
});