Игра - монетки (Кто может сказать - почему в центре алгоритм нарушается?)


#1

Решал задачку(найдена на просторах “нета”):
Есть 10 монеток.
При щелчке по любой из них -
переворачиваются сама монетка и две соседние.
У крайних монеток только одна соседняя.
Задача - перевернуть все монетки.

Решение:

let step = 0;
let a;
let b;
let m;
function turn (nr)
{
	a = nr - 1;
	b = nr + 1;
	step ++;
	if (a >= 0 && a <= 9)
	document.getElementById('c'+a).checked = !document.getElementById('c'+a).checked;
	if (b >= 0 && b <= 9)
	document.getElementById('c'+b).checked = !document.getElementById('c'+b).checked;
	win ();
}
function win ()
{
	for ( m = 0; m <= 9; m ++)
	if (!document.getElementById('c' + m).checked)
	return;
	document.write ("Вы победили! Ваш счет: " + step);
}


<input type="checkbox" id="c0" onclick="turn(0)"/>
<input type="checkbox" id="c1" onclick="turn(1)"/>
<input type="checkbox" id="c2" onclick="turn(2)"/>
<input type="checkbox" id="c3" onclick="turn(3)"/>
<input type="checkbox" id="c5" onclick="turn(6)"/>
<input type="checkbox" id="c7" onclick="turn(7)"/>
<input type="checkbox" id="c8" onclick="turn(8)"/>
<input type="checkbox" id="c9" onclick="turn(9)"/>

#2

потому что идентификаторы и аргументы функции turn в инпутах должны быть по порядку
кроч долго объяснять, должно быть так:

тест
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Document</title>
  </head>
  <script>
    let step = 0;
    let a;
    let b;
    let m;

    function turn(nr) {
      a = nr - 1;
      b = nr + 1;
      step++;
      console.log(`a=${a}, nr=${nr}, b=${b}, step=${step}, m=${m}`);
      if (a >= 0 && a <= 7)
        {document.getElementById('c' + a).checked = !document.getElementById('c' + a).checked;}
      
      if (b >= 0 && b <= 7){
        document.getElementById('c' + b).checked = !document.getElementById('c' + b).checked;}
      win();

    }


    function win() {
      for (m = 0; m <= 7; m++) {
        if (!document.getElementById('c' + m).checked)
          return;
      }
      alert("Вы победили! Ваш счет: " + step);
    }

  </script>

  <body>
    <input type="checkbox" id="c0" onclick="turn(0)" />
    <input type="checkbox" id="c1" onclick="turn(1)" checked/>
    <input type="checkbox" id="c2" onclick="turn(2)" />
    <input type="checkbox" id="c3" onclick="turn(3)" checked/>
    <input type="checkbox" id="c4" onclick="turn(4)" />
    <input type="checkbox" id="c5" onclick="turn(5)" checked/>
    <input type="checkbox" id="c6" onclick="turn(6)" />
    <input type="checkbox" id="c7" onclick="turn(7)" />
  </body>

</html>

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