Дидактическая игра «Крестики-нолики» (от 3 до 7 лет)
Татьяна Доронина
Дидактическая игра «Крестики-нолики» (от 3 до 7 лет)
Цель: развивать внимание, память и начальные навыки счета.
Объяснить ребенку правила игры в «Крестики-нолики» и играть, как в обычную игру, которую рисуют в тетради.
• Предложите ребенку разместить на пустом поле одну, две, три, четыре и более игровых фигур.
• Познакомьте его с понятиями «поровну», «одинаковое количество». Выложите на поле несколько крестиков. Попросите сосчитать и выложить столько же ноликов, убрав с поля крестики.
• Один крестик и два нолика. Два нолика и три крестика и т. д. Попросите малыша сосчитать, сколько всего фигур на поле.
• Покажите малышу тарелку, скатерть, платок с орнаментом. Расскажите, что в орнаменте с определенной последовательностью повторяются одинаковые фигуры.
Сложите на поле простейший орнамент из игровых фигур. Предложите нарисовать платок или коврик для куклы с орнаментом.
• Сложите на левой половине поля часть узора, предложите ребенку выложить «зеркальное отражение».
• Сложите узор, где симметрия будет нарушена. Предложите ему найти это нарушение и справить ошибку-сделать половинки рисунка симметричными.
Ориентируемся в пространстве
• Познакомьте ребенка с понятиями «право», «лево», «верх», «низ». Поставьте две фигуры рядом, спросите, какая находится справа, а какая слева. Расположите две фигуры одну под другой. Какая сверху, а какая снизу?
• Предложите ребенку сделать узор, располагая фигуры определенным образом под вашу диктовку: «В правый верхний угол помести крестик, в центр-нолик и т. д.»








Интерактивные «Крестики-нолики» по загадкам Инструкция по работе с презентацией Правила игры: • Игра состоит из четырех туров • Дети делятся на 2 команды: «Крестики» и «Нолики» • Номера.



Сценарий праздника «Прощание с 3 классом» в форме игры «Крестики-нолики» Сценарий праздника «Прощание с 3 классом» Учитель: Уважаемые родители, дорогие дети! Вот и подошел к концу очередной учебный год. За этот.
Игра гомоку (крестики-нолики, 5 в ряд)
Читая публикации на Хабре нашел пару статей об алгоритмах игры гомоку: эту и эту. В первой статье разобраны различные варианты решения задачи, но нет реализации в виде игры, во второй — игра есть, но компьютер «играет» слабовато. Я решил сделать свой вариант игры гомоку с блэкджеком достаточно сильной игрой компьютера. Публикация о том, что в итоге получилось. Для тех, кто любит сразу в бой — сама игра.
Для начала хочу определиться с основными моментами. Во-первых, существует множество разновидностей игры гомоку, я остановился на таком варианте: игровое поле 15х15, крестики ходят первыми, выигрывает тот, кто первый построит 5 в ряд. Во-вторых, игровой алгоритм расчета хода компьютером для простоты буду называть AI.
Теория AI
shebeko в своей статье рассмотрел различные алгоритмы AI. Понятно, что при простом переборе всех вариантов ходов при углублении на несколько ходов количество требуемых расчетов зашкаливает. Поэтому надо реализовать какой-нибудь алгоритм по-умнее перебора в лоб.
Читая его статью я задумался над фразой: «Гомоку — это расходящаяся игра с полной информацией и внезапной смертью». Как пример другой игры с внезапной смертью приводятся шахматы. В моем понимании между шахматами и гомоку есть огромная разница: один ход в шахматах может кардинально изменить расклад сил. В шахматах фигуры могут ходить далеко и влиять на множество клеток. Ферзь или ладья потенциально могут атаковать любую клетку поля за 1 ход, т.е. за 1 ход можно поставить так, что любая конкретная клетка будет атакована (если свободны линии хода и атаки). В гомоку такого эффекта нет, одна фигура («камень» — крестик или нолик) может оказывать влияние только на 5 соседних с ней клеток в каждую сторону. Это первая предпосылка к моему алгоритму AI.
Второе важное допущение — в гомоку есть «эндшпили» — шаблоны которые ведут к победе. Помните риторический вопрос Тарантино: «Как долго человек считает до 600?» Аналогично, чтобы построить победную линию из 5 фигур, сначала надо построить линию из 4 (в общем случае: из 5 с 1 пропущенной с краю (линия из 4) или в середине), по другому — никак. Продолжая рассуждения получаем что для 4 необходима тройка, для тройки — двойка.
Я предположил, что такие шаблоны ходов есть нечто аналогичное расчету ходов в глубину, т.к. ходы локальны (имеют относительно малый радиус влияния в отличии от шахмат, например). Значит, можно просто перебрать все возможные варианты шаблонов для каждого потенциального хода. Это вторая половина алгоритма AI.
Осталось определить потенциальные ходы — те клетки поля в которые можно поставить фигуру. В общем случае, потенциальные ходы — это все пустые (не занятые) клетки доски. Учитывая что ходы — локальны, то все клетки нам не нужны, можно рассмотреть только ближайшие к уже стоящим на доске фигурам. Это первая половина алгоритма AI.
Алгоритм AI
1. Определение потенциальных ходов
Т.к. влияние фигур локально, то нет смысла определять потенциальные ходы каждый раз заново. Можно их просто накапливать.
— Особая ситуация: если в начале игры компьютер ходит первым — ход осуществляется в предустановленную клетку — центр доски (массив потенциальных ходов состоит из 1 клетки).
— В дальнейшем, после хода пользователя или AI, в массив потенциальных ходов добавляются поля отстоящие на 2 клетки от ячейки хода (соседние и соседние с соседними), а ячейка в которую совершен ход удаляется из этого массива.
2. Расчет значения важности каждой клетки потенциальных ходов
Для каждой клетки из массива потенциальных ходов:
1) собираются 4 линии из 9 клеток в середине которых сама выбранная клетка (2 диагональных, вертикальная, горизонтальная)
2) каждая линия сравнивается со всеми имеющимися шаблонами. При вхождении клетки в шаблон ее значимость увеличивается на вес этого шаблона. Если в клетке есть возможность поставить «вилку», то ее вес будет в 2 раза больше (он будет просуммирован от весов шаблонов двух линий).
3. Выбор клетки с максимальным значением важности
Расчет весов осуществятся отдельно для атаки (опираясь на фигуры AI) и защиты (сравнение линий из фигур соперника с теми же шаблонами), далее они суммируются. И клетка с максимальным весом — это лучший ход с точки зрения AI.
Возможные улучшения AI
Первое улучшение — это добавление шаблонов, которые я пропустил 🙂
Второе — реализация алгоритма просчета хотя бы на пару ходов вперед с целью выявления потенциальных «вилок» и серии победных ходов в будущем. Это, кстати, основной способ как мне удается обыграть AI — создание серии ходов в которых AI вынужден закрывать 4, чтобы не проиграть (у него по сути нет альтернативы хода) и в результате этой серии ходов создается вилка из двух предфинальных линий (например, из двух четверок), так что зарыть их за один ход не возможно.
Реализация игры
Игра написана на чистом JavaScript (без фреймворков типа jQuery). Графический интерфейс игры реализован на Canvas.
Результат
Спасибо за внимание. Надеюсь, вам было также приятно читать и играть, как мне — реализовывать 🙂
P.S. Небольшая просьба, если будете легко выигрывать — прикрепите, пожалуйста, скриншот игры и ходы (из логов консоли) для анализа и улучшения алгоритма.
Update 1
1. На 10% увеличил значимость весов для атаки. Теперь атака для AI предпочтительнее защиты при прочих равных. Например, если 4ка у AI и у пользователя, то AI предпочтет выиграть.
2. Изменил значения весов по шаблонам. При более четкой балансировки весов можно добиться лучшей игры AI.
Значения весов у шаблонов сейчас такие:
99999 — xxxxx — пять в ряд (финальная выигрышная линия)
7000 — _xxxx_ — открытая четверка
4000 — _xxxx — полузакрытая четверка (две таких четверки предпочтительнее одной открытой, возможно «интереснее игра» будет)
2000 — _x_xxx, _xx_xx, _xxx_x — полузакрытая четверка с брешью (2 таких четверки равны одной открытой четверке и «предпочтительнее» открытой тройки; но если только 1 такая четверка, то открытая тройка предпочтительнее)
3000 — _xxx_ — открытая тройка
1500 — _xxx — полузакрытая тройка
800 — _xx_x, _x_xx — полузакрытая тройка с брешью
200 — _xx_ открытая двойка
Также небольшие веса (от 1 до 20-30) есть вокруг всех ходов, для создания «небольшой случайности хода».
Стратегические крестики-нолики (Starategic Tic-Tac-Toe)
Играть одну партию в крестики-нолики более двух часов — легко.
В статье будет рассказано о том как можно привнести элементы «стратегии и тактики» в привычные всем крестики-нолики. Будут описаны и проанализированы правила игры, рассказано об игровых полях.
Что предлагается?
Игра Starategic Tic-Tac-Toe (STTT) или Стратегические крестики-нолики это, как и её прародитель, игра для двух участников для которой необходимы лишь карандаш и бумага. Она является надмножеством игры Ultimate Tic-Tac-Toe также как Ultimate Tic-Tac-Toe является надмножеством обычных крестиков-ноликов (Ordinary Tic-Tac-Toe). Задача игры — помочь игрокам приобрести навыки стратегического мышления.
Домашняя страница проекта
Содержание
Термины и определения
Осторожно, множество похожих определений и их количество может вас оттолкнуть, но без этого базиса вы не сможете понять о чём пойдёт речь далее.
На этот момент все необходимы нам определения заданы и мы можем приступить к обсуждению самой игры.
Правила игры
Задавая и анализируя данный класс игр (надмножество игры Крестики-нолики) мы, для упрощения понимания и сравнения, разделим правила игры на три части: правила хода, правила выигрыша и ограничения. Рассмотрим игру Оперативные крестики-нолики согласно данному подходу.
Оперативные крестики-нолики
Теперь, когда правила знакомой всем игры заданы согласно предлагаемому подходу, читателю будет легче ориентироваться в правилах Тактических и Стратегических крестиков-ноликов.
Наборы правил Стратегических крестиков-ноликов основываются на правилах Тактических крестиков ноликов, поэтому приведём и их в предлагаемой форме.
Тактические крестики-нолики
Как видно первый игрок сходил в третью Оперативную клетку пятого Оперативного поля, поэтому второй игрок должен ходить в третью Тактическую клетку данного Тактического поля.
Для множества студентов игроков, с кем мне приходилось сразиться, данный набор правил был соложен для понимания на слух, но в ходе первой, пробной игры большинство разбиралось, так что на данном этапе я предлагаю читателю сыграть в Тактические крестики-нолики для чего вам понадобятся карандаш/ручка, тетрадный лист (или обычный если хорошо чертите прямые) и заинтересованный товарищ.
Настало время поговорить о самих Стратегических крестиках-ноликах. В первую очередь при создании новой игры была поставлена цель расширить текущее игровое поле за счёт увеличения количества «уровней» игры, в следствии этого возникла необходимость составить новые правила хода, поскольку старые, как мы увидим ниже, были полными и не могли предоставить новые пути задания ходов игроков. За столом обсуждений будущих правил данной игры родились три основных направления в последствии преобразовавшихся в наборы правил: Тактический, Функциональный и Гиперфункциональный. Опишем данные наборы правил.
Стратегические крестики-нолики
Общие правила
Все три набора правил сохраняют правила выигрыша и ограничения на Тактическим уровне и объявляют те же правила для Стратегического уровня. Таким образом правила выигрыша и ограничения для Стратегического уровня выглядят точно также как правила Тактических крестиков-ноликов с точностью до названий клеток. Читателю предлагается самому написать правила Стратегического уровня для проверки понимания текущих терминов и положений.
Тактический набор правил
Правила Тактических крестиков-ноликов задают отображение (mapping) из множества Клеток в множество Тактических клеток для определения того куда должен ходить текущий игрок в зависимости от хода предыдущего игрока или другими совами правила хода на Тактическом уровне. Тактический набор правил сохраняет отображение из множества Клеток предыдущего Оперативного поля в множество Тактических клеток текущего Тактического поля, при этом декларируя, что отображение из множества Тактических клеток предыдущего Тактического поля в множество Стратегических клеток Стратегического поля сохраняется таким же как и отображение из множества Клеток предыдущего Оперативного поля в множество Тактических клеток текущего Тактического поля или другими словами правила хода на Стратегическом уровне такие же как и на Тактическом уровне. Наглядную иллюстрацию данного положения можно найти под спойлером.

Функциональный набор правил
Вторая идея заключалась в сопоставлении строкам 9х1 (или столбцам 1х9, как будет показано ниже это не столь значительно и выбор в пользу строк был сделан лишь из эстетики получающегося игрового поля) клеток номера Стратегической клетки, в которую должен быть произведён следующий ход. Данная идея была реализована путём помещения номеров Стратегических клеток, для следующего хода, слева в той же строке, что и Клетка текущего хода. Чтобы понять о чём идёт речь перейдите в раздел с игровыми полями. Особенности выбора номеров следующих Стратегических клеток будут раскрыты в разделе анализа игры. Правила отображения из множества Клеток текущего Оперативного поля в множество Тактических клеток следующего Тактического поля сохраняются неизменными.
Гиперфункциональный набор правил
Третья идея заключалась в определении номера Стратегической клетки следующего хода для каждой Клетки текущего хода. Данный набор правил определяет именно такое отображение, при этом правила отображения из множества Клеток текущего Оперативного поля в множество Тактических клеток следующего Тактического поля сохраняются неизменными. Особенности выбора номеров следующих Стратегических клеток будут раскрыты в разделе анализа игры.
Игровые поля
| Название поля | Размер в Клетках | Можно ли нарисовать от руки | Поместится ли на половине тетрадного листа |
|---|---|---|---|
| Игровые поля | |||
| Базовое | 29х29 | Да | Да |
| Пронумерованное | 31х31 | Да | Да |
| Функциональное | 35х31 | Да | Да |
| Гиперфункциональное | 35х31 | Нет | Да |
| Полное | — | Да | Нет |
| Вспомогательные поля | |||
| Поле помощи | 11х15 | Да | Да |
| Поле записи ходов | 6хN | Да | Да |
| Непрерывное поле записи ходов | — | Да | Да |
Далее под соответствующими спойлерами расположены изображения полей и заметки о их дизайне и предназначении.








Анализ игры
В данном разделе будет рассказано о том как был обоснован выбор чисел, означающих следующую Стратегическую ячейку для Функционального и Гиперфункционального набора правил. Метод анализа игры заключается в следующем:
Весь код, реализующий этапы анализа можно найти по ссылке. Код написан на Lua 5.1 и запустится как на интерпретаторе так и на JIT-компиляторе (второй более предпочтителен из-за вычислительной сложности предлагаемого метода). Оконечные этапы анализа — построение heatmap’ов и подсчёт среднего расстояния проводился в Excel.
Проанализируем полученные результаты. Как опорный возьмём результат для Тактического набора правил. И так для данного набора правил удобно взять отображение из множества Тактических клеток в него же, среднее расстояние между Тактическими клетками получилось равным 1.(8) хода. Не много, это означает, что для успешной игры в памяти стоит хранить последние два хода и думать как минимум на два хода вперёд. Heatmap можно увидеть под спойлером. Для всех heatmap’ов шкала идёт от красного к зелёному через жёлтый на увеличение.
Далее применим метод анализа к Функциональному набору правил. Для того как именно определить числа в данном наборе правил существовали некоторые предпосылки, их обсуждение выходит за рамки данной статьи, скажем лишь, что в ходе разработки был предложен довольно эффективный метод создания наборов чисел, проанализировав который мы смогли прийти к выводам об эффективности наборов выделенных из полученных.
Для данного набора правил было удобно взять отображение из множества триплетов Тактических клеток в него же (в триплеты объединены Тактические клетки 1-3, 4-6, 7-9 для каждой Стратегической ячейки). Взглянем на результаты: оптимальными были названы два набора чисел под кодовыми названиями map34 и map67, для данных наборов среднее расстояние между триплетами составило 2.(6) хода. Их особенностью является то, что расстояние от каждого триплета до самого себя составляет ровно 3 хода.


Для визуального сравнения представлены heatmap’ы других наборов:
map14

Последним проанализируем Гиперфункциональный набор правил. При детальном рассмотрении игровых полей, созданных под данный набор правил читатель мог увидеть закономерность в расположении цифр, отвечающих за следующую Стратегическую клетку. Используя данную закономерность мы создали девять наборов чисел описывающих переходя для Гиперфункционального набора правил, из которых был найден оптимальный получивший кодовое имя hmap2. Его показатели составили 2.206 хода в среднем между Тактическими клетками и ровно 3 хода чтобы попасть в туже Тактическую клетку.

Выводы и послесловие
В статье было рассказано о новой игре в своём типе — Стратегических крестиках-ноликах, дизайнерские решения в ходе создания игры были обоснованы путём анализа.
Направления будущих работ
Основными направлениями авторам представляются:
Послесловие
Историю создания и сведения об авторах можно найти на странице проекта, а также там можно найти возможные ограничения авторских прав на производную деятельность. Авторы будут рады помощи с переводом оставшегося русского текста на английский язык на главной странице проекта.







