Я начинающий программист.Я начал учить себя JavaScript.Я сделал рудиментарную линкорную игру.Проблема в том, что если пользователь входит в одно и то же место (если это попадание) 3 раза, линкор тонет.Чтобы избежать этого, я добавил массив «userchoices», чтобы записать вводимые пользователем данные, а затем перепроверить, повторяя цикл for.цикл for, в свою очередь, содержит оператор If, который должен предупредить пользователя, если он уже выстрелил в этом месте ранее.Проблема в том, что оператор if выполняется каждый раз.
Пожалуйста, просмотрите приведенный ниже код и предложите исправления.Спасибо.
var randomloc = Math.floor(Math.random() * 5);
var location1 = randomloc;
var location2 = location1 + 1;
var location3 = location2 + 1;
var guess;
var userchoices = [];
var hits = 0;
var guesses = 0;
var issunk = false;
function battleship() {
while(issunk == false)
{
guess = prompt("Ready,Aim,Fire! (Enter a number 0-6):");
console.log("users input = " + guess);
if (guess == null)
break;
if (guess < 0 || guess > 6){
alert("Please enter a valid cell number. No of guesses has been
incremented.")
}
else{
guesses++;
userchoices[guesses] = guess;
console.log("users choices = " + userchoices);
}
/* for(var i = 0; i <= guesses; i++)
{
if(userchoices[guesses] = guess)
console.log("you have already fired at this location");
} */
if (guess == location1 || guess == location2 || guess == location3){
alert("Enemy Battleship HIT");
hits = hits + 1;
if (hits == 3){
issunk = true;
alert("Enemy battleship sunk")
}
}
else{
alert("You Missed");
}
}
if (issunk){var stats = "you took " + guesses + " guesses to sink the battleship. You accuracy was " + (3/guesses);alert(stats);}
else{alert("You Failed!"); issunk = false;}
}
Эта часть вызывает ошибку
for(var i = 0; i<=guesses; i++)
{
if (userchoices[guesses] = guess){
console.log("you have fired at this location already");
}}
Оператор if должен выполняться только тогда, когда пользователь вводит номер сетки, по которой у него уже есть огонь,неважно, попал или не попал.