JS.50 · Игры
Задача
Проверить поле 3×3 и определить победителя.
Алгоритм
Восемь выигрышных линий проверяются на совпадение трёх одинаковых непустых клеток.
Исходный код
⇩ Скачать 50-krestiki-noliki.js
// Крестики-нолики: определение победителя
function winner(b) {
const lines = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]];
for (const [a, c, d] of lines)
if (b[a] && b[a] === b[c] && b[a] === b[d]) return b[a];
return null;
}
const board = ['X','O','X',
'O','X','O',
' ',' ','X'];
console.log(board.join('|'));
console.log('победитель:', winner(board) || 'нет');
Пояснения
Поле хранится плоским массивом из девяти клеток; деструктуризация линии делает проверку короткой.