Как реализовать алгоритм AI Пентаго - PullRequest
3 голосов
/ 30 декабря 2010

Я пытаюсь разработать Pentago -игру в c #.

сейчас у меня режим 2 игрока, который работает просто отлично.

проблема в том, что я хочу режим одного игрока (против компьютера), но, к сожалению, все орудия минимакса / negamax предназначены для одной вещи, рассчитанной для каждого "перемещения" ( размещение мрамора, движущаяся часть игры).

butin Pentago, каждый игрок должен сделать две вещи (поместить мрамор и повернуть одну из внутренних досок)

Я не придумал, как реализовать вращающуюся деталь и разместить мрамор, и я хотел бы, чтобы кто-нибудь помог мне с этим.

Если вы не знакомы с игрой, вот ссылка на игру.

если кто-то захочет, я могу загрузить свой код куда-нибудь, если это актуально.

большое спасибо заранее

Ответы [ 2 ]

1 голос
/ 31 декабря 2010

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

В алгоритме, подобном UCT (который, вероятно, превосходит минимакс в простых реализациях), можно разбить на два ходаболее эффективный, потому что алгоритм может сначала определить, какие ходы хороши, а затем выяснить, какой поворот лучше.(Googling UCT мало что дает. Оригинальная исследовательская работа не очень проницательна, но эта страница может быть лучше: http://senseis.xmp.net/?UCT)

1 голос
/ 31 декабря 2010

Если один законный ход состоит из двух вспомогательных ходов, то ваш «ход» для целей игрового алгоритма - это просто кортеж, где первый элемент - это мраморное размещение, а второй - вращение доски, например:

var marbleMove = new MarbleMove(fromRow, fromCol, toRow, toCol);
var boardRotation = new BoardRotation(subBoard, rotationDirection);
var move = new Tuple<MarblMove, BoardRotation>(marbleMove, boardRotation);

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

...