Frage

Ich versuche zu entwickeln Pentago-Game in C#.

Im Moment habe ich 2 Spielermodus, was gut funktioniert.

Das Problem ist, dass ich will Ein Spieler Modus (gegen Computer), aber leider sind alle Geräte von minimax / negamax für eines Für jede "Bewegung" berechnet (Marmor platzieren, bewegtes Spielstück).

aber in Pentago, Jeder Spieler muss tun zwei Dinge (Platzieren Sie Marmor und drehen Sie einen der inneren Boards)

Ich habe nicht herausgefunden, wie ich beide Drehsteile implementieren und den Marmor platziert habe, und ich würde es lieben, wenn ich mich dabei führte.

Wenn Sie mit dem Spiel nicht vertraut sind, hier ist ein Verknüpfung zum Spiel.

Wenn jemand möchte, kann ich meinen Code irgendwo hochladen, wenn dies relevant ist.

Vielen Dank im Voraus

War es hilfreich?

Lösung

Wenn ein einzelner rechtlicher Moves aus zwei Unterbewegungen besteht, ist Ihr "Umzug" für Spielalgorithmus Zweck einfach ein Tupel, bei dem das erste Element die Marmorplatzierung ist und der zweite Element die Board-Rotation zB ist:

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

Normalerweise erfordert ein Spiel, das Algorithmus spielt, alle möglichen Bewegungen für eine bestimmte Position aufzählen. In diesem Fall müssen Sie aufgezählt alle möglichen Paare von Untermoven. Mit dieser Liste in der Hand können Sie Ansätze für das Spielen von Standing -Computer -Spielen verwenden.

Andere Tipps

Rick schlug Tupel oben vor, aber vielleicht möchten Sie tatsächlich nur jeden Spieler zwei unabhängige Bewegungen ausführen lassen, so dass es zweimal hintereinander an der Reihe bleibt. Dies kann die Bewegungsbestellung erleichtern, kann jedoch Ihren Suchalgorithmus komplizieren, je nachdem, welches Sie verwenden.

In einem Algorithmus wie UCT (der für einfache Implementierungen wahrscheinlich Minimax übertreffen kann) kann ein, dass in zwei Bewegungen ein Brechen effizienter sein, da der Algorithmus zuerst herausfinden kann, welche Bewegungen die Platzierungen gut sind, und dann herausfinden, welche Rotation am besten ist. (Googling UCT gibt nicht viel. Das Originalforschungspapier ist nicht sehr aufschlussreich, aber diese Seite könnte besser sein: http://senses.xmp.net/?Uct)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top