Java Game Toolkit Jeroen Donkers. Doelstelling Class Game –Chess –Kalah –FourRow –Loa Class Player –Minimax –AlphaBeta –MTD(f) –OM Search –PrOM Search.

Verwante presentaties


Presentatie over: "Java Game Toolkit Jeroen Donkers. Doelstelling Class Game –Chess –Kalah –FourRow –Loa Class Player –Minimax –AlphaBeta –MTD(f) –OM Search –PrOM Search."— Transcript van de presentatie:

1 Java Game Toolkit Jeroen Donkers

2 Doelstelling Class Game –Chess –Kalah –FourRow –Loa Class Player –Minimax –AlphaBeta –MTD(f) –OM Search –PrOM Search

3 Doelstelling Het ontwerpen en testen van zoekalgoritmen Stricte scheiding van spelafhankelijke en spelonafhankelijke aspecten van zoekalgoritmen Snelheid is geen doelstelling

4 Game (1) Interface Game –Zet-generator –Zet-executie (levert een positie op) doMove / undoMove –Evaluator –Opening positie –(History-Heuristic tabel) Class AbstractGame

5 Game (2) Per spel definieer: –Zet-representatie (1 short per zet) –Zet-generator (Move-enumerator) –Position (bord-representatie) Inner class Startpositie –Evaluator Inner class Meerdere evaluatoren mogelijk –Legale zetten

6 Game (3) Interface Position –isEnded: terminale positie? –getHashvalue: levert een double op –clonePosition: deep copy Interface Evaluator –Short Evaluate(Node n, int depth) Class Node: knoop in zoekboom

7 Game (4) Zetgenerator produceert een instantie van de interface MoveEnumerator –Short getMove() – eerste zet –Short nextMove() – volgende zet –Player.NOMOVE == geen zet meer Gebruik bijvoorbeeld: –Class MoveSet (gebaseerd op Vector)

8 Class Node Representeert een knoop in de zoekboom –getType(): MIN, MAX, NAT, UNKNOWN –getPosition(): spelpositie in die knoop –isTerminal(): terminale knoop? –flipType(): MAX->MIN, MIN->MAX –nextTurn(): is het type van de knoop verdanderd?

9 Player De abstracte class Player heeft veel voorzieningen: –Log-voorziening –Timer –Teller voor het aantal evaluaties –Pointer naar spel: getGame() Per speler verschilt de routine: –SearchResult NextMove(Position pos);

10 Transpositietabel Interface TTable – int putEntry(long hashvalue, short move, short score, byte flag, byte ply) Class SimpleTT - spelonafhankelijk –Geef het aantal bits voor de grootte van de key en de tabel, de rest van de hashcode wordt voor collision-detectie gebruikt. –Geheugengebruik: 6 short (12 bytes) per entry –Vervangingsschema: “replace”

11 Koppelen Om een spel te spelen heb je nodig: –FourRow k = new FourRow(); –AlphaBetaPlayer p = new AlphaBetaPlayer(k,depth); Dan de opening: –Position m = k.getStartPosition(); Vervolgens het spelen zelf: –SearchResult r = p.nextMove(m); –m = k.setMove(m,r.move);


Download ppt "Java Game Toolkit Jeroen Donkers. Doelstelling Class Game –Chess –Kalah –FourRow –Loa Class Player –Minimax –AlphaBeta –MTD(f) –OM Search –PrOM Search."

Verwante presentaties


Ads door Google