Dag 3

Op dag 2 is het gelukt om de zombie te laten bewegen. Voor dag 3 hebben wij de volgende doelstellingen gemaakt:

In eerste instantie was het de bedoeling om de mens alleen vooruit te laten bewegen. Een probleem wat we ondervonden met deze benadering is dat de mens dan altijd naar de rand van de wereld gaat en deze rand dan volgt. Hierdoor ontstaat er een opeenstapeling rechts beneden in de wereld aangezien dit gebied als laatste wordt geüpdatet.

Opeenstapeling van objecten rechstonderin van het scherm

Uiteindelijk hebben wij besloten om de mens willekeurig te laten bewegen in een richting om zo verdere problemen te voorkomen. De eerste doelstelling voor deze dag is daarmee behaald. Daarnaast hebben we het update systeem van de wereld aangepast. De update functie werkt nu door de eerste keer links boven te beginnen met updaten en de volgende keer rechts beneden te beginnen, dit voorkomt het probleem van de ophoping van mensen of zombies in een hoek. De eerste doelstelling voor deze dag is hiermee behaald.

De implementatie van het kunnen infecteren van een mens door een zombie werkt door wanneer er een zombie op het vakje van de mens komt te staan, deze ook veranderd in een zombie vakje. Dit systeem werkt echter nog niet optimaal want een zombie is alleen nog in staat op een mensen vakje te gaan staan wanneer de betrefende mens is ingesloten door andere mensen. We zoeken dus nog naar een betere soort manier om de infectie methode te implementeren. Dit zullen we de volgende dag worden gaan proberen.

Wat vandaag ook toegevoegd is, is de Menu.java class in de datastructuur. Hierin wordt de interface aangemaakt waarme de gebruiker zelf de parameters kan veranderen.

Nu het mogelijk is dat zombies mensen kunnen infecteren willen wij een strategie bedenken voor de mensen om toch iets tegen de zombie te kunnen doen. Anders wint de zombie immers altijd en dit is niet realistisch. De bedoeling is dus om de mens slimmer te maken. Een realistische strategie daarvoor is om andere mensen te zoeken en samen een sterkere groep te vormen welke wel een zombie kan verslaan. We zijn dus van plan om een algoritme te creëren voor een mens zodat het andere mensen zoekt in de omgeving.Een tweede andere strategie om mensen slimmer te maken is om mensen weg te laten lopen van een zombie wanneer deze in de buurt is.

De eerste strategie is dat mensen zoeken naar andere mensen om zo een sterke groep te vormen. Het basis principe is dat als een mens een ander mens tegenkomt dat hij dan kijkt of er nog meer mensen zijn in de buurt. Als dit aantal van omringende mensen groter is dan de door ons ingestelde parameter dan stopt deze groep met bewegen en wacht de groep op andere mensen. De volgende stap die wij willen implementeren is dat als een zombie een grote groep tegenkomt dat deze zombie dan doodgaat. Dit zullen wij morgen proberen te implementeren.

De tweede strategie voor de mensen is de strategie om te vluchten. Hiervoor moet er dus een functie geschreven worden waar de mens mee kan weten wanneer er een zombie in de buurt is. Deze functie noemen we objectSpotted, deze functie wordt ook gebruikt om andere mensen waar te nemen. Als het object dat wordt gespot gelijk staat aan een zombie dan moet een mens deze ontwijken door een andere richting op te gaan. Deze implementatie is gelukt en hiermee is er een strategie ontwikkelt zodat mensen kunnen vluchten.

Om voor de zombie een intelligentie te creëren willen we dat de zombie altijd het pad van een mens probeert te volgen als deze dichtbij is. Het principe is dat een zombie op een bepaalde range van zichzelf zoekt naar mensen. Dit wordt gedaan door relatief van zichzelf een tile grid af te zoeken. Vervolgens wordt de dichtstbijzijnde tile bepaald, waarna hieruit de beste richting voor een move wordt afgeleid.

De doelstellingen voor dag 3 zijn min of meer behaald. Een van de verbeterpunten is de infecteer methode, hier willen we een andere methode voor vinden. Ook willen we implementeren dat een groep mensen een zombie kan doden. Dit hopen we de volgende dagen te kunnen bewerkstelligen.