Я закончил эту игру, Крестики-нолики, но я изучаю, как нанести цвета на квадраты победителей или нарисовать линию. Сделать квадрат или линию легко, но я не знаю, как выбрать только выигрышные квадраты, когда мои выигрышные комбо выглядят так:

const winningCombos = [[0,1,2], [3,4,5], [6,7,8], [0,3,6], [1,4,7], [2,5,8], [0,4,8], [2,4,6]] 

И способ, которым ходы игрока вставляются в массив, чтобы проверить комбинации позже. Например, может быть, одному игроку нужно 5 ходов, чтобы выиграть, но мне просто нужно выиграть 3 клетки.

 xChoices = [0,1,3,6] // where 0,3,6 are winners and I want to draw a line on them or put a colour 

как я проверяю комбо:

 function checkForXWinner(){ return winningCombos.some(combo ={amp}gt;{ return combo.every(e ={amp}gt;{ return xChoices.includes(e) }) }) } function checkForOWinner(){ return winningCombos.some(combo ={amp}gt;{ return combo.every(e ={amp}gt;{ return oChoices.includes(e) }) }) } 

вот jsfiddle, ура.

https://jsfiddle.net/6zbdgrmy/

Поскольку вы хотите раскрасить эти квадраты, вы также можете найти соответствующий массив в многомерном массиве и раскрасить каждый квадрат отдельно

Пример:

 const winningCombos = [ [0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6] ] xChoices = [0, 1, 3, 6] const winArrayIndex = winningCombos .map(arr ={amp}gt; arr.every(y ={amp}gt; xChoices.includes(y))) .findIndex(x ={amp}gt; x) for (let i = 0; i {amp}lt; winningCombos[winArrayIndex].length; i  ) { console.log('color:', winningCombos[winArrayIndex][i]) } 

Пытаться

  boxes = Array.from(document.querySelectorAll('.col')) const winCombo = () ={amp}gt; { let wonCombo = [] winningCombos.forEach(combo ={amp}gt; { if (boxes[combo[0]].innerHTML == boxes[combo[1]].innerHTML {amp}amp;{amp}amp; boxes[combo[0]].innerHTML == boxes[combo[2]].innerHTML {amp}amp;{amp}amp; boxes[combo[0]].innerHTML != "") wonCombo = combo }) return wonCombo } 

Это возвращает выигрышную комбинацию. Теперь вы можете работать с div-файлами в позиции wonCombo и применять к ним нужные вам CSS.

Saurav

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,