Dag 1

Op dag 1 was het voornaamste doel om een geschikt onderwerp voor het project te vinden. Geïnspireerd door het spel Game of Life kwamen we op het idee om een simulator te maken van een situatie in een gesloten wereld. Verschillende ideeën passeerden de revue. Uiteindelijk hadden we vijf hoofdonderwerpen: dieren, planten, genen, bestuursvormen en ziektes. Ieder mocht 6 stemmen verdelen over de onderwerpen en uiteindelijk kreeg de simulatie over ziekte verspreiding de meeste stemmen. Mede doordat het een actueel onderwerp is met betrekking tot het MERS virus dat onlangs is uitgebroken in Zuid-Korea.

Gezien het thema van het het vak waar dit onderzoek bij hoort, is het van belang dat robotica in de simulatie betrokken wordt. Dit wordt gedaan door de ziekte een sensor range te geven. Aangezien de meeste normale ziekten niet zo'n eigenschap bezitten werd er voor gekozen een zombie uitbraak te simuleren. Hierin kunnen zowel mensen als zombies een bepaalde range bezitten. Daarnaast willen we proberen om de mensen een soort intelligentie mee te geven waarome bepaalde strategieën uitgevoerd kunnen worden waarmee er aan gevaarlijke zombies ontkomen kan worden.

Voordat wij beginnen met het opbouwen van een datastructuur hebben we een voorwaardelijke lijst gemaakt waar ons simulatie aan moet voldoen, deze zijn opgesteld in het programma van eisen. Hierna zijn we verder begonnen met opstellen van de data structuur van het te programmeren programma welke in Java zal worden geschreven. Het idee is dat we een wereld die bestaat uit tegels (“Tiles”) in een rooster. Elk tile moet een mens, zombie, water of land voorstellen. Het basis principe is dat wanneer een zombie in contact komt met de mens dat deze geïnfecteerd raakt en dus ook een zombie wordt.

Door telkens elke zombie en mens te laten bewegen creëren wij dus simulatie. Bij elke beweging moet de mens en de zombie een bepaald doel hebben. Een mogelijk doel van de zombie zou bijvoorbeeld kunnen zijn om een mens te volgen zodra deze in de buurt is. Deze zombie heeft dus een soort sensor voor mensen.

Nu het basis idee is uitgewerkt hebben wij als doel gesteld om vandaag de wereld met de tiles erin te maken. Uiteindelijk is het gelukt om een wereld te creëren met mensen en zombies erin. De structuur voor deze wereld is hieronder gegeven.

Ons programma is tot nu toe opgebouwd in 5 classes: World, Zombiesimulator, Tile, Human en Zombie.

In zombie simulator world het programma opgestart, hier world de class world.java aangeroepen om een nieuwe wereld te maken.

In de world wordt de gesimuleerde wereld opgebouwd. Alle tiles wordt geplaatst en ook wordt er aan elke tile een object, human of zombie meegeven. Voor het grafisch opbouwen van de wereld gebruiken we de Java package swing.

In de tile class definiëren we wat een tile is en ook of het een human of zombie moet worden. Daarnaast zal hierin aangegen worden of een tile zee of land is. Om te bepalen hoeveel zombies en hoeveel mensen in de wereld moeten komen gebruiken we parameters die uiteindelijk de gebruiker zelf kan aanpassen. Het verschil in human, zombie, zee of land is de kleur van de tile. Dit wordt ook hier in de class tile bepaald.

Voor de class human en zombie extenden wij de class tile. Hierdoor kunnen wij aanpassingen maken aan de tile die gemaakt wordt.

We kunnen dus zeggen dat voor dag 1 ons doel behaald is. Het onderwerp voor het project is bepaald en de basis voor de gesimuleerde wereld is opgezet.


Programma van eisen

Aan de hand van het programma van eisen wordt het resultaat controleerbaar gemaakt.

Wereld Voldaan?
Wereld bevat mensen
Wereld bevat zombies
Wereld bevat land
Wereld bevat zee
Eigenschappen Zombie
Moet kunnen bewegen
Moet mensen kunnen infecteren
Moet kunnen doodgaan
Moet een sensor range hebben
Heeft een beperkt zicht
Eigenschappen Mens
Moet kunnen bewegen
Moet een zombie kunnen worden
Moet slimmer zijn dan zombie
Moet een directie hebben
Eigenschappen land
Mens en zombie kunnen over land
Eigenschappen Zee
Mens en zombie kunnen niet over zee
Collision
Groepen hebben andere acties dan individuen
Extra
Interface waarin parameters kunnen worden veranderd