AFON // радиотехник affonya@mail.ru
← Все проекты JavaScript

Крестики-нолики

Логика игры крестики-нолики и определение победителя.

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) || 'нет');

Пояснения

Поле хранится плоским массивом из девяти клеток; деструктуризация линии делает проверку короткой.