Как реализовать AI для игры Puyo Puyo?

Оператор запятой имеет самый низкий приоритет всех операторов C/C++. Поэтому это всегда - последнее, которое свяжет с выражением, означая это:

a = b, c;

эквивалентно:

(a = b), c;

Другой интересный факт - то, что оператор запятой представляет точка последовательности . Это означает что выражение:

a+b, c(), d

, как гарантируют, будет иметь его три подвыражения ( a+b, c () и d) оцененный в порядке. Это значительно, если у них есть побочные эффекты. Обычно компиляторам позволяют оценить подвыражения в любом порядке, они находят соответствие; например, в вызове функции:

someFunc(arg1, arg2, arg3)

аргументы могут быть оценены в произвольном порядке. Обратите внимание, что запятые в вызове функции не операторы; они - разделители.

6
задан Matt Rajca 10 December 2009 в 00:38
поделиться

3 ответа

Вы также можете разработать довольно простую экспертную систему для низкого уровня сложности. Что-то вроде:

1) Place the pieces anywhere that would result in clearing blocks
2) Otherwise, place the pieces adjacent to same-color pieces.
3) Otherwise, place the pieces anywhere.

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

3
ответ дан 17 December 2019 в 04:47
поделиться

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

0
ответ дан 17 December 2019 в 04:47
поделиться

Лучшая стратегия - не убивать каждую цепочку как можно скорее, а собрать так, чтобы, когда вы тормозите что-то сверху, все рушилось, и вы получали много комбо. Проблема в том, чтобы собрать эту комбинированную стратегию. Также важно, что, вероятно, лучше сделать 4 комбинации с 5 мирами, чем 5 комбинаций с 4 мирами (но я не уверен, проверьте подсчет очков)

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

Это очень интересная проблема.

Вы можете подать заявку:

Динамическое программирование для проверки текущего счета.
Монте-Карло для вероятностных нужд.
Небольшая эвристика (эвристика всегда решает проблему быстрее)

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

Одним из параметров того, насколько хороша ваша куча, может быть "энтропия" - количество одиночных / закопанных миров после совершения комбо.

2
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: