Dag 1
22 Jun 2015Op 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 |