Блог пользователя rus100

Автор rus100, история, 10 лет назад, По-русски
 Не сочтите это сообщение за наглость.Пришла мне весной в голову идея написать логическую игру.Я рассудил так: шашки-это больно сложно для меня, шахматы-тем более, решил написать для начала крестики-нолики с полем 3*3.Погуглив информацию в интернете, решил, что использую алгоритм оценочных функций.Вроде бы написал, но играла она слабо.Я нашел следующий выход:прописать первый ход за компьютер прямо в программе в зависимости от того кто первым ходит.Получилось более менее, теперь с компьютером можно сыграть в основном в ничью.
 Я решил не останавливаться на этом и написать что-либо сложнее.Не долго думал я, выбор пал на гомоку, во-первых потому что похожа на крестики-нолики, во-вторых из-за сравнительной легкости в написании программы.Передо мною не стояла задача создать супер-сложный AI, я решил просто попробывать написать что-то такое интересное, а не, например, калькулятор.Снова погуглив, я решил опять писать алгоритм оценочной функции, но тут было все интереснее и сложнее.Основная идея оценочной функции состоит в том, что для любой пустой клетки в 8 направлениях(вверх,вниз,вправо,влево,по диагонали вправо-вверх,вправо-вниз, влево-вверх, влево-вниз) на расстояние 4 клетки от нее считается количество крестиков и ноликов, назначается балл и суммируется баллы.Уделяется внимание группам из 3, 4 подряд идущих крестиков и ноликов, для них назначается повышенный балл, особенно для открытых троек и четверок с обеих сторон.Учитываются и другие ситуации приводящие к построению открытых четверок.
 На этапе написания кода периодически отправлял своему брату exe-шники для тестирования и, попутно послушав о недостатках, усложнял оценочную функцию.Сначала у меня ничего не получалось, AI допускал глупые ошибки, но потом начало что-то выходить.
Прошу не судить меня строго, по специальности являюсь инженером-электриком(проектирую электрические сети).Программирование-просто хобби.Да и особо звезд с неба не хватаю в области спортивного программирования.Кроме того написал пятнашки.    

В итоге получил следующее: Гомоку. А вот и крестики-нолики: Крестики-нолики.

  • Проголосовать: нравится
  • +51
  • Проголосовать: не нравится

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Привет)

Комп играет неплохо, почти все игры сводит к ничье (в крестики). Сообщение о том, кто ходит первым, кажется излишним. Кнопка "Игра", наверно, лишняя. Иногда после вывода сообщения о результате матча компьюбтер делает еще один ход. Еще иногда "ты победил" выводится 2-3 раза.

Нашлась такая комбинация ходов при первом ходе человека, которая гарантирует победу (5 9 3 7)

А в гомоку я не умею играть :)

Ну и было бы неплохо поделить пост на абзацы, а то сложно воспринимать

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Даже у ПК не получается выиграть:( Ненавижу ету игру((

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Какую именно из игр имел ввиду?Крестики-нолики или гомоку?

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Гомоку — я всегда однокласснику в школе проигрывал=) Сейчас еще попытаюсь с ПК.

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Кстати, в крестиках-ноликах новая игра идет на том же поле, что и предыдущая (ничего не стирается) — наверное это какая-то бага)

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    Там надо нажимать "играть снова", а не "игра"

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

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

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Автокомментарий: текст был обновлен пользователем rus100 (предыдущая версия, новая версия, сравнить).

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Хорошее и короткое введение в программирование ИИ для логических игр есть в первой главе пособия Дьяконова "Анализ данных, обучение по прецедентам, логические игры, системы WEKA, RapidMiner и MatLab".

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

1-8-7-9 выигрышная стратегия если комп ходит первым.