Крестики Нолики — Новый проект

Хочу поделиться новым проектом — «Крестики Нолики». Примитивно, тривиально и весьма скучно, скажут многие, если не все)) Изначально я тоже так решил, но учитывая, что работа свалилась в нужный (читать мертвый сезон) момент, то и тому, как говориться, рады.

Вот только один небольшой нюанс, заставил меня переосмыслить взгляд на такую не замысловатую игру. И чудо — я нашел, что вынести из этой вроде бы маленькой и простенькой вещи.

Если читатель не против, я поделюсь тем, что меня во истину заинтересовало.

Для начала, кратко о возможностях игры. 

Расписывать все, нет смысла, кому интересно — скачают ( в очередном посте дам ссылку), опишу главное.

Крестики Нолики Режимы игры

Режимы игры

Режимы игры

Игра содержит три основных режима: против ИИ (искусственный интеллект), в простонародье «игра против компьютера», игра на двоих на одном устройстве, и игра по сети.

Игра на двоих не является особо интересной задачей, просто поочередно в две руки тыкаем клетки, кто-то выиграет, кто-то проиграет.

Искусственный Интеллект — подробности

Наибольший интерес вызвала для меня, как для программиста, игра против ИИ. На самом деле, задача оказалась весьма не простой. Главная проблема была сделать мозг умным. Звучит конечно смешно, но вложить умные мозги в простенькую игрушку стало чуть ли не самым время-затратным моментом.

Теория графов

Теория графов

Для реализации, пришлось проштудировать теорию графов, на мой взгляд, да и не только на мой, графы, один из наилучших способов реализовать выборку правильных ходов. 

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

на три клетки — три уровня мышления :) 

Крестики Нолики выбор сложности

Крестики Нолики выбор сложности

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

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

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

И к стати о полях.

В игре реализовано три поля: 3х3, 4х4 и 5х5.

Варианты полей

Варианты полей

Все поля доступны для игры против ИИ и при игре на двоих. Но учитывая, что поле 5х5 достаточно большое, именно на нем  и пришлось подрезать мозги, иначе, каждый ход рассчитывается очень долго. А мы ведь не в шахматы играем, и нам не интересно сидеть по 20 минут в ожидании. 

Следующим моментом, который тоже требовал внимания, стала реализация игры по сети. В ТЗ было указание реализовать игру по BlueTooth, но в силу разных причин, пришлось отказаться. Но зато, была реализована игра через WI-FI. Если два скажем телефона, подключены к одному раздатчику Wi-Fi, то следовательно, они могут играть по сети друг против друга! К сожалению, я реализовал поле 3х3, остальные поля не доступны при игре по сети. Но кто знает, возможно заказчик решит, что есть такая необходимость, и в случае дополнительной мотивации, я обязательно реализую и оставшиеся поля.

Купи Слона! Или Крестики Нолики — Магазин

Крестики Нолики Магазин

Магазин

Кроме того в игре реализован магазин, в котором стандартные крестики и нолики можно заменить на персонажей, что уже привлекательнее. Магазин работает на игрой валюте — фишках, которые можно заработать двумя способами, выигрывать у ИИ, или просматривать рекламу. С рекламой мне понравился подход. Она не лезет в экран когда не нужно, все просто — хочешь больше фишек, иди в меню видео, и смотри ролики, за каждый ролик по две фишки) Удобно, не правда ли?

Кроме того игра выполнена на двух языках Английском и Русском, что так же положительно позиционирует проект.

Вот так, простая, давно заезженная игра, привнесла столько интересного и полезного в мою прогерскую рутину. Не даром говорят, хочешь стать программистом игр, напиши свой тетрис. Это примерно из той же оперы…

Чуть позже, когда игра будет опубликована на GoogleStore, я обязательно об этом сообщу, и предоставлю ссылку для скачивания и ознакомления.

Под занавес

Пока писалась статья, возникла вероятность разработки небольшого дополнения к игре. Внимание! По секрету! :) Вероятнее всего, в игру будет введена еще одна возможность приобретения фишек — за реальные деньги. Для тех, кто хочет играть на больших полях, или особенными персонажами, будет предоставлена возможность приобретения того количества фишек за раз, сколько необходимо, без траты времени на просмотр рекламы, или постоянную игру на мини поле против ИИ.

Хотя мне кажется, что только этим дело не ограничится, если все пойдет как задумано, то использование персонажей в сетевой игре также будет доступно, как и все типы полей. На мой взгляд это необходимый минимум требуемый для полноценного завершения проекта.

Совсем забыл. Игра разрабатывается под платформу Android, другие платформы в планы не входят, так что обладателям Aple боюсь поживиться тут будет нечем.

И уж совсем на последок добавлю видео процесса:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Проверка * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.