schoettl / ScotlYard

Scotland Yard board game
0 stars 0 forks source link

Einfache MrX AI #19

Open schoettl opened 12 years ago

schoettl commented 12 years ago

Idee für Einfache MrX AI

Algorithmus

  1. Alle Stationen ermitteln, wo er hinfahren könnte (nicht vergessen: Tickets und DoubleMoves)
  2. Für alle diese Stationen:
    1. Shortest Path zu jedem Detektiv
    2. Distanzen gesammelt bewerten (muss noch ausgearbeitet werden)
  3. Station mit der günstigsten Bewertung wird ausgewählt

Daraus ergibt sich der Zug für MrX!

Sau einfach, oder??

Implementierung

Zum Zugriff auf Spiel und Graph stehen GameState und GameGraph zur Verfügung. JGraphT stellt garantiert einen Shortest Path-Algo bereit (nicht selbst implementieren!) Ansonsten dürfte alles trivial sein.

@korbinian90: Dass du mich nicht falsch verstehst, mir würd's auch sau spaß machen, das selbst zu implementieren, und wenn du's nicht rechtzeitig machst, mach ichs auch :-) Ich denk mir nur, das würde dir gefallen. Und ich hab so viel andere weniger tolle Sachen zu tun ^^

schoettl commented 12 years ago

Ein Beispiel für Shortest Path (gibt aber auch verschiede Algos bei JGraphT): https://github.com/jakob190590/ScotlYard/blob/gui/Board/src/kj/scotlyard/board/BoardPanel.java#L234

schoettl commented 12 years ago

Ok, gewisse Spezialfälle gibt's in meinem Algo doch noch

schoettl commented 12 years ago

eine überlegung wär vllt noch wann man die doppeltickets und blacktickets einsetzt, damit sie nicht zu früh unnötig und auch nicht erst wenns zu spät ist benutzt werden. aber dasist ja am anfang noch nicht dringend notwendig. und is auch die frage wo und in welcher form das einfließt, ob man einen bewertungsfaktor für jeden zug macht oder eine "gefahrschwelle" ab der solche tickets zum einsatz kommen.

schoettl commented 12 years ago

https://github.com/jakob190590/ScotlYard/blob/ai/ScotlYard/src/kj/scotlyard/game/ai/mrx/SimpleMrXAi.java#L60