De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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