Крестики нолики v0.2. ИИ: МиниМакс, Альфа-Бета отсечение.

Apr 29, 2013 02:19

Сел вчера писать сюда отчёт по ИИ. Писать просто так не интересно - решил кое-какие моменты кода осветить, прокомментировать. Начал катать схему работы и понял, что код написан неправильно. Нет, ИИ, конечно, работал и не проигрывал, и даже выигрывал, если невнимательно ходить. И интересные ходы какие-то делал. Но играл неправильно и жрал слишком много ресурсов, как оказалось при проверке. Так что, начав в ночи писать пост, я закончил это дело переписыванием пары блоков кода вместо того, чтобы что-то постить сюда.
Наконец правильный код. И знаете что? Мой ИИ стал играть скучно, потому что поумнел. Ведь, вообще, "крестики-нолики" при внимательной игре обоих игроков всегда сводятся к ничье. И мой ИИ стал это видеть. Потому как просчёт идёт на пять ходов вглубь, и ИИ видит, что любые его попытки улучшить своё положение будут тут же нивелироваться противником. ИИ, ставя отметку в свободный ряд, просто старается захватить все доступные направления выигрыша (сначала столбцы, так как обход поля идёт слева направо, сверху вниз), блокируя противника, если возможно.
Как-то так. Попробовал простимулировать ИИ доп. коэффициентами, если он собирает несколько символов в ряд. На умный ИИ (с глубиной 5) это почти не влияет. ИИ поглупее играет и так пободрее старшего брата, а с поощрениями ещё немного "наглеет".

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

Тем не менее, хочу допилить графический интерфейс и вариант сетевой игры.

coding

Previous post Next post
Up