Найти в Дзене

Определяем победителя / Крестики-нолики. Пошаговый курс

Мы приближаемся к финишу, друзья. На прошлом уроке мы научили компьютер играть в крестики-нолики. При этом научившись играть сами на уровне мастера. Действительно, пользуясь этой стратегией проиграть невозможно. Сейчас компьютер отвечает на наши ходы и сам отвечает на наши. Но сейчас игра не заканчивается, то есть компьютер продолжает совершать ходы когда это уже бессмысленно. Поэтому на этом уроке займемся определением победителя. Как это сделать? После каждого хода мы должны проверять игровое поле. Мы должны проверить каждую линию и подсчитать, сколько в каждой линии крестиков и сколько ноликов. Если в линии три крестика - победил крестик, если три нолика - победил нолик. Если в каждой из восьми линий есть как крестик, так и нолик, то достигнута ничья, продолжать игру бесполезно. Итак, проверяем игровую ситуацию после каждого хода: И вот здесь: Эта функция проверяет все линии игрового поля и определяет, достигнута победа, ничья, или игра продолжается. Вот и сама функция checkWin: Пер

Мы приближаемся к финишу, друзья. На прошлом уроке мы научили компьютер играть в крестики-нолики. При этом научившись играть сами на уровне мастера. Действительно, пользуясь этой стратегией проиграть невозможно. Сейчас компьютер отвечает на наши ходы и сам отвечает на наши. Но сейчас игра не заканчивается, то есть компьютер продолжает совершать ходы когда это уже бессмысленно. Поэтому на этом уроке займемся определением победителя.

Как это сделать? После каждого хода мы должны проверять игровое поле. Мы должны проверить каждую линию и подсчитать, сколько в каждой линии крестиков и сколько ноликов. Если в линии три крестика - победил крестик, если три нолика - победил нолик. Если в каждой из восьми линий есть как крестик, так и нолик, то достигнута ничья, продолжать игру бесполезно.

Итак, проверяем игровую ситуацию после каждого хода:

И вот здесь:

-2

Эта функция проверяет все линии игрового поля и определяет, достигнута победа, ничья, или игра продолжается. Вот и сама функция checkWin:

-3

Переменные lx, lo, lb предназначены для подсчета количества линий, где, соответственно, только крестики, только нолики или и крестики и нолики.

Подсчитав, мы проверяем, если линий с крестиками одна или больше, значит победил крестик, если линий с ноликами одна или больше - победил нолик, если линий с крестиками и ноликами восемь штук - достигнута ничья. При этом мы сохраняем в переменной winner символ, определяющий победителя. И перед каждым ходом проверяем ее значение:

-4

И здесь:

-5

Теперь функция winLine, эта функция возвращает единицу, если линия состоит только из данной фигуры и иначе - ноль:

-6

Отлично! По большому счету игра готова. Остается добавить переход на третий экран, на котором мы будем объявлять победителя. Этим займемся на следующем уроке. А сейчас давайте просто покажем окошко по окончанию игры:

-7

Сохраняйте, обновляйте и попробуем сыграть!

-8

Осталось один урок, на нем мы сделаем переход на третий экран и поправим ошибки. Если остались вопросы - обязательно пишите их в комментариях.

Предыдущий урок | Содержание курса | Последний урок

Подпишитесь на наш канал, чтобы не пропустить следующие уроки.

Новые уроки, новые курсы будут на моем блоге здесь: keklik.me.