На первом круге срабатывает на следующем нет, надо исправить мой код, задача по книге
Решаю задачку по книге Фримен Э., Робсон Э. - Изучаем программирование на JavaScript там есть задачка морской бой, суть в том что при повторном вводе числа корабль потоплен этого быть не должно. У меня есть решение которое срабатывает правильно(первый круг), я знаю что в коде ошибка, но как додумать мое решение?
Дано
var location1 = 1;
var location2 = 2;
var location3 = 3;
var guess;
var hits = 0;
var guesses = 0;
var isSunk = false;
while (isSunk == false) {
guess = prompt("Ready, aim, fire! (enter a number from 0-6):");
if (guess < 0 || guess > 6) {
alert("Please enter a valid cell number!");
} else {
guesses = guesses + 1;
if (guess == location1 || guess == location2 || guess == location3) {
alert("HIT!");
hits = hits + 1;
if (hits == 3) {
isSunk = true;
alert("You sank my battleship!");
}
} else {
alert("MISS");
}
}
}
var stats = "You took " + guesses + " guesses to sink the battleship, " +
"which means your shooting accuracy was " + (3/guesses);
alert(stats);
При повторе числа например 1, корабль потоплен. Я пытаюсь решить её так, но не получилось до конца, в чем ошибка в моей логике? Помогите пожалуйста разобраться...
var location1 = 1
var location2 = 2
var location3 = 3
var guess
var hits = 0
var guesses = 0
var isSunk = false
var repeat
while (isSunk == false) {
guess = prompt('Ready, aim, fire! (enter a number from 0-6):')
if (
guess < 0 ||
guess > 6 ||
repeat == location1 ||
repeat == location2 ||
repeat == location3 ||
guess == repeat
) {
alert('Please enter a valid cell number!')
repeat = 7
} else {
guesses = guesses + 1
if (guess == location1 || guess == location2 || guess == location3) {
alert('HIT!')
hits = hits + 1
repeat = guess
if (hits == 3) {
isSunk = true
alert('You sank my battleship!')
}
} else {
alert('MISS')
}
}
}
var stats =
'You took ' +
guesses +
' guesses to sink the battleship, ' +
'which means your shooting accuracy was ' +
3 / guesses
alert(stats)