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

Slides:



Advertisements
Verwante presentaties
zoeken met opponent-modellen
Advertisements

Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 5.
Algoritmen en Datastructuren (ALDAT)
Instructie Programmeren Task 8 5JJ70. PAGE 2 Task 8: Double Linked List Het doel van deze opdracht is: Het opbouwen van een tweetal klassen, die samen.
Klassen en objecten.
Introduction to gamedesign In 15 minutes (or more)
Greenfoot Workshop Bobby - Snake.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 5.
Processor Hart van de computer.
1 Datastructuren Lijstjes (Stacks & Queues) Onderwerp 7.
Flight Gear Multiplayer Engine Project Jeroen Boogaard & Leon Otte
Inleidend probleem Data structuur (hiërarchie van classes)
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Consoletoepassing Variabelen Klassen
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 3: Werken met numerieke gegevens.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Media en Creativiteit 6 - Identiteit Hogeschool – Media aan de Maas Jaar 2 – Periode 2 – Les 5 Ik, wij en de rest Jij in het grotere geheel.
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Representatie & Zoeken
Interfaces Hoofdstuk 23 Hoofdstuk 23.
Tircms03-p les 7 Standaardfuncties. In header opnemen bijv: using namespace std // C++ // oude C.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  Een (vaste) melodie spelen op de PC speaker 
Allard Kamphuisen Hado van Hasselt Wilco Broeders
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Welkom! maandag 16 November 2015 Les B-2.
Visuele test van 1 min. Bekijk volgende beelden aandachtig Bewegen ze ? Bewegen ze ? Of blijven ze onbeweeglijk ? Of blijven ze onbeweeglijk ?
Hoe maak je een goede educatieve game??? Van een educatieve game leer je iets!!!! Gebruik gamemaker.
Na de praktijk, de theorie.. Zoals een gehaktmolen 1.Je stopt er iets in. 2.Je hoeft niet te weten wat er binnenin gebeurt. 3.Het resultaat verschijnt.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Bespreking testpracticum.  Javaconventies! ◦ KlasseNamen beginnen met Hoofdletter ◦ objectNamen/methodeNamen met kleine letter  Aanspreken GUI ◦ Zie.
(de eenvoudige versie).   Teken een rechthoek voor het speelveld.  Maak 2 cirkels die je via de toetsen ASWD (voor speler 1) of de pijltjestoetsen.
Game Object Structuren
Objectgeoriënteerd Programmeren
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Char en String
Gameprogrammeren: Variabelen, declaraties en toekenningen
Gameprogrammeren: Animatie
Gameprogrammeren: Methoden
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Player input in Painter
Basis Gameprogrammeren
Gameprogrammeren: Willekeurigheid (Randomness)
Tinpro015b-les5 Invoer en Uitvoer.
Gameprogrammeren: Herhalingen
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Gameprogrammeren: Properties
Tinpro015b-les6 Templates.
Arjan Egges & Paul Bergervoet
Arjan Egges & Paul Bergervoet
Het 24 spel.
De Flexibele Club Competitie
Arjan Egges Paul Bergervoet Wouter van Toll
Gameprogrammeren: Klassen en objecten
Digimodes Ward De Ridder on8wr.
GAME MAKER ONLINE Les 2 / Breakout Michel Fiege.
Digitale beeldverwerking
Binaire getallen 1. binair → decimaal 2. decimaal → binair.
Leo Remco Speedy Don.
Gameprogrammeren: Enemies in Tick Tick
Leren programmeren met Scratch
Transcript van de presentatie:

Java Game Toolkit Jeroen Donkers

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

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

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

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

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

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)

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?

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);

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”

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);