Я уже некоторое время пытаюсь создать алгоритм для той же программы.
Вы, конечно, правы в том, что первое, что ваша программа должна сделать, это проверить, есть ли способ сформировать5 и победа.А если нет, то следует проверить, может ли ваш оппонент сделать это, и если да, то защита.
Сколько Вы играли в гомоку?Насколько хорошо вы понимаете основы?
Хорошо, следующий шаг - подумать: как мы можем добраться до позиций, где мы можем победить?Очевидно, что для победы у нас должно быть четыре подряд.Но мы просто формируем четыре в ряд, как это:
__________
____XOOOO_
__________
Тогда противник может закрыть его.
Но если мы сформируем «открытую четверку», вот так:
__________
____OOOO__
__________
Тогда противник не может закрыть обе стороны, и Вы можете выиграть.Таким образом, формирование открытой четверки - это один из способов выиграть.Теперь возникает вопрос: как мы можем сформировать открытую четверку?Конечно, если мы сформируем «открытую тройку», как это:
__________
____OOO___
__________
Тогда противник может заблокировать нас:
___________
____XOOO___
___________
и мы вернемся к началу.
Чтобы выиграть, мы можем сформировать две открытые тройки одновременно:
____________
____OOO_____
_____O______
____O_______
Теперь, если противник блокирует одну из них, мы можем использовать другую, чтобы сформировать открытую четверку:
____________
_______O____
___XOOO_____
_____O______
____O_______
____________
и выигрыш:
________O___
_______O____
___XOOO_____
_____O______
____O_______
___X________
В терминах гомоку это называется 3x3, если Вы делаете две открытые тройки одновременно.
Обратите внимание, что обе тройки должны быть открыты: можете ли ВыВы понимаете, почему?
Есть и другие способы выиграть:
4x3: Видите ли вы выигрышный ход и почему он выигрывает?
____________
__XOOO______
__XXXO______
____OX______
____________
4x4: Смотритевыигрышный ход?
____________
__XOOO______
__XXXO______
__OXOX______
___O________
__X_________
Это только основы игры.Знание тактики помогает вам думать, как построить ИИ, и вы можете жестко программировать принципы.
Естественно, это только начало.Буду признателен, если Вы попытаетесь реализовать это, а затем дать мне обратную связь.
Я пытался написать программу на Java.Хотели бы вы увидеть код, который я сделал, чтобы Вы могли играть?Это не очень хорошо, но Вы можете получить новые идеи оттуда.Хотя комментарии и имена переменных написаны на эстонском языке ... это может быть очень трудно понять.(