Demo snake
Transcript of Demo snake
Snake
Demonstratie requirements eindresultaat implementatie
Auteur: Maarten ZuurDatum: 22 Oktober 2015
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
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
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).
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
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.
Sequence diagramProgramma flow voor use case ‘NieuwSpel’
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
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
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
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)
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