Алгоритм для стратегической игры

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

Вообразите игру играемой на 36x36 сетка. Цель игры состоит в том, чтобы создать четыре угла квадрата любого размера (например, 2x2, 3x3, 4x4, и так далее). Первый плеер помещает игровую часть куда угодно кроме центра четыре пробелов сетки. После первого шага плееры могут поместить свою игровую часть куда угодно на сетку. Игровые части не могут быть перемещены после того, как они будут размещены. И вот именно; игра проста и забавна.

Я пытался придумать алгоритм, чтобы победить, или по крайней мере преуспеть в этой игре. Какие-либо предложения?

6
задан Gideon 30 January 2010 в 04:37
поделиться

4 ответа

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

7
ответ дан 9 December 2019 в 20:43
поделиться

Как и Foglebird, написал MiniMax Algorithm, будет работать лучше всего. Проблема заключается в том, как оценить счет нынешней платы. Игра довольно сложна, что начнется более тысячи областей. В небольшой игре, такой как Tic Tac Toe, вы можете вычислить все возможные перемещения до конца дерева поиска в MiniMax, вы даете 1 указать на выигрышную плееру и A -1 к проигрыше и возврату дерева, чтобы найти ваш лучший ход. В этой игре вам нужен какой-то эвристический , чтобы рассчитать оценку для доски после спускания трех 10 ходов.

У меня нет много информации о игре, чтобы я мог только догадываться только хорошей эвристики:

  • точки из-за завершенных квадратов (если вы можете получить больше, чем один квадрат) Это было бы самым простым способом, потому что ваш эвристический Связанные с точками игры
  • минус точек из-за завершенных квадратов вашего врага
  • Количество возможных квадратов
  • Количество собственных областей на сторонах платы
  • Количество собственных областей в небольших районах

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

3
ответ дан 9 December 2019 в 20:43
поделиться

Хорошо, я читаю мусор в игру .. как его неоднозначный .. Я предполагаю, что эта игра похожа на «точки и линии», где пространство перемещения состоит в том, чтобы соединить 2 соседних точка с линией. Таким образом, 2x2 Grid будет иметь 9 вершин, 4-х 1х1 выигрышных позиций и 1 2x2 Win Position. С игрой, заканчивающейся победой для человека, который завершает квадрат, и галстук, когда оба игрока исчерпали заверенные решения.

Так как ваши рабочие квадраты некоторые из логики приятно. Вы можете рассчитать членство в любой строке на все возможные коробки. Таким образом, в 2X2 примере пример радиала будет иметь членство в 2 ящиках 1x1, а сторона будет иметь членство в одном 1x1 и один 2x2. Это членство становится важным.

При начале игры вы генерируете все члены для всех слоев сегментов. Сделайте 2 экземпляра .. (например, играть в линкоре), копия противника будет инициаторирована на количество поворотов, он оставил, чтобы закончить каждую коробку .. так что на 36x36 будет оставаться 144 хода, чтобы закончить большую коробку 4 набора 140-мэвей, чтобы закончить 4 35x35 коробки

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

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

Для данного движения .. Сначала проверьте на победу. Если вы можете двигаться и выиграть. (Антиемые с квадратом в одном) Затем проверьте, необходим ли блок. (Доска противника с любым квадратом в одном)

Теперь добавьте функцию типа MiniMax, если настолько наклонены ..

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

0
ответ дан 9 December 2019 в 20:43
поделиться

Вам нужно заполнить квадрат или просто поместить его в углами?

, например, является следующим выигрышем?

.......................
.X..X..................
.......................
.......................
.X..X..................
.......................

или следующее?

.......................
.XXXX..................
.X..X..................
.X..X..................
.XXXX..................
.......................

или следующее?

.......................
.XXXX..................
.XXXX..................
.XXXX..................
.XXXX..................
.......................
2
ответ дан 9 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

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