Demo snake

12
Snake Demonstratie requirements eindresultaat implementatie Auteur: Maarten Zuur Datum: 22 Oktober 2015

Transcript of Demo snake

Page 1: Demo snake

Snake

Demonstratie requirements eindresultaat implementatie

Auteur: Maarten ZuurDatum: 22 Oktober 2015

Page 2: Demo snake

Introductie

Snake is een behendigheidsspel.Een slangvormig object moet door een speelveld worden bestuurd. Door het verzamelen van kleine onderdelen wordt de slang steeds langer.

Het is gebouwd als training van:– projectmatig werken– toepassing van model-view-control patroon– solide software bouwen

Page 3: Demo snake

RequirementsRequirements bij aanvang project– Het spel bestaat uit een veld, slang, brok en rand– Op het scherm staan een veld, informatie en menu– Besturing met toetsenbord– De speler verdient punten– Als een level voltooid is, start een nieuw spel– Bewaren & laden kan op elk moment tijdens het spel– Het spel kan gepauseerd en weer hervat worden

Page 4: Demo snake

Kenmerken

Deze afbeelding toont het eindresultaat.

De slang schuift automatisch, de speler bestuurt de slang. Wanneer een brok wordt ‘gegeten’ worden punten verdiend.Als de slang een bepaalde lengte bereikt wordt het volgende level gestart.De speler kan het spel bewaren (en weer laden).

Page 5: Demo snake

Kenmerken

De kleuren van het scherm (veld, informatie, menu en knoppen) staan bij elkaar in de klasse nl.maz.snake.view.Kleuren

De parameters voor het spelverloop (level en score) zijn final waarden

Page 6: Demo snake

Class diagramDe applicatie is opgebouwd uit Podium, Control, het model en Opslag. Deze 4 onderdelen werken samen.Bij de pijlen staan de datatypes die worden doorgegeven.

Page 7: Demo snake

Sequence diagramProgramma flow voor use case ‘NieuwSpel’

Page 8: Demo snake

Data model

Het model bestaat uit:– klasse Veld houdt bij wat er op iedere positie staat (rand, brok, kop, lichaam, staart of vrij)– klasse Slang houdt bij wat de positie van elk ‘segment’ is en in welke richting het volgende ‘segment’ staat

Page 9: Demo snake

OpslagKlasse Opslag schrijft en leest in flatfile formaat

2015/09/16 15:35:21Veld20,123,6Slang617,916,915,914,913,912,9WLevel5420294

In dit flatfile (Spel.txt) staan alle gegevens om een spel te bewaren:– afmeting veld– positie van brok– slang lengte en posities– slang richting– level en score– spel snelheid

Page 10: Demo snake

Java klassenKorte beschrijving van alle klassen

control ControlSpelTimerAanroepSpelUpdateCommando

Stuurt het Spel en de SpelTimer aan Start en stopt het bewegen van de slangHulpklasseEnums voor VeldCommando en MenuCommando

model SpelVeldSlangLevelPositie

Klasse die het spelverloop coördineertRepresentatie van het veldGegevens van de slangHoudt het level, score en speelsnelheid bijHulpklasse

view PodiumVeldWeergaveInfoMenuRandSlangWeergaveBrokSnakeAppKleuren

Alle diensten voor het bouwen en wijzigen van de UIOnderdeel van UI dat veld toontOnderdeel van UI dat spel informatie toontOnderdeel van UI dat menu knoppen bevatLevert de rand voor de UILevert en wijzigt de slang voor de UILevert een brok voor de UIKlasse met main() methode die de UI startHulpklasse

opslag Opslag Bewaart en laad de gegevens van een spel

Page 11: Demo snake

Techniek

De applicatie is gebouwd met:Java, NetBeansJavaFX frameworkJava Timer (java.util.Timer en java.util.TimerTask)Flatfile invoer en uitvoer (eigen library nl.maz.bestand)Testcases met JUnit (voor model en Opslag)

Design goals tijdens bouw:structuur rondom een spel aanpasbaar (regels voor level en score)weergave gemakkelijk aanpasbaar/vervangbaarmanier van opslaan en laden (persistentie) flexibelminder prio voor grafische aspecten (opmaak van veld en slang)

Page 12: Demo snake

Samenvatting

De applicatie is gebouwd als oefening met projectmatig ontwikkelen en toepassing van MVC patroon.

4 onderdelen (Podium, Control, model en Opslag) voor solide structuurGebouwd met Java (oa JavaFX framework)Bewaren & laden met flatfileKleuren en spelverloop gemakkelijk aanpasbaarLeuk spel, draait soepel en foutloos

Maarten Zuur

www.linkedin.com/in/maartenzuur