@WhoAmI02

Как определить победителя в крестиках-ноликах?

Существует массив, содержащий индексы нужных ячеек. Необходимо проверить наличие совпадения комбинации значений массива в исходном массиве.

let playzone = document.querySelector('.playzone');

// draw cells

for (let i = 0; i < 9; i++){
  let block = document.createElement('div');
  block.className = 'block';
  block.dataset.index = i+1;
  
  playzone.appendChild(block);
}

// fill cells

let fillX = true;
let fillO = false;
let filledX = [];
let filledO = [];

function fill(target){
  if (!target.classList.contains('block')) return;
  let index = target.dataset.index; 
  if (fillX){
    target.innerHTML = '<p>X</p>';
    filledX.push(index);
    fillX = false;
    fillO = true;
  }else{
    target.innerHTML = '<p>O</p>';
    filledO.push(index);
    fillX = true;
    fillO = false;
  }
  target.classList.add('actived');
  console.log(filledX);
}

// checking winner

function checkWinner(){
  let winnerCombination = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
    [1, 4, 7],
    [2, 5, 8],
    [3, 6, 9],
    [1, 5, 9],
    [3, 5, 7]
  ];
  for (let i = 0; i < winnerCombination.length; i++){
    
  }
}
// add event listener

playzone.addEventListener('click', function(event){
  let target = event.target;
  fill(target);
  checkWinner();
})
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
if (winnerCombination.some(n => n.every(m => filledX.includes(m)))) {
  ...

Точно так же проверяется и filledO (можно сделать функцию, которая будет принимать массив для проверки).

Ну и конечно в filledX/filledO надо класть не строки (как это сейчас происходит), а числа.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы