Skip to main content

9 Corona simulatie in PHP

In deze les gaan we code van een ander lezen en aanpassen. In het kader van Covid-19, (Corona) heb ik een virus-simulatie gemaakt. Dit is een zeer vereenvoudigde weergave van de werkelijkheid en je moet dit niet zien als een simulate van de echte wereld. Dus alle getallen die je zien moet je niet betrekken op hetgeen er nu in de echte wereld afspeelt.

De simulatie ziet er in de bowserbrowser als volgt uit.

In het 'grid' (het grote gedeelte bovenin) zie je de bevolking. Elke karakter is een persoon. Een - is een gewond persoon, een oranje s is een ziek persoon, een groene o is een immuun persoon en een rode X is een overleden persoon. Met de knoppen kun je één, drie of zeven dage vooruit springen. In de grafiek zie je het aantal zieke personen.

Installeer de simulatie

Zet de twee php files in één directory in je document root en test de simulatie uit.

MVC

MVC is een principe waarin je bepaalde zaken scheidt. M staat voor Model, dat is de database of eigenlijk de opslag en toegang tot data. De V staat voor View, dat is eenvoudig gezegd de GUI, wat de gebruiker ziet: daar zit dus vaak veel HTML en JavaScript bij. Later zullen we ook libraries als bootstrap gaan gebruiken voor de GUI. De C tenslotte, staat voor Control en dat is alle logica, zeg maar de 'brains' van het systeem. 

Opdracht 1

Beschrijf van de hieronder genoemde onderdelen van de software of ze bij M, V of C horen.

(a) Regel 141 t/m 145

(b) De functie printPopulation (regel 57-77)

(c) De functie passTime (regel 41-55)

(d) Regel 214 t/m 230 (de table)

Opdracht 2

De knop "Next 7 >>>" die je in de screen afdruk ziet springt een week vooruit in de simulatie. Deze knop is nog niet geïmplementeerd. Pas de code aan zodat je deze knop wel hebt en zorg ervoor dat de knop ook werkt.

Opdracht 3

In de 'grid' staat elke oranje s voor een ziek persoon, een groene o staat voor iemand die immuun is geworden, - staat voor iemand die nog niet besmet is en ene rode X staat voor iemand die is overleden.

Verander de code zodat iemand die niet is besmet niet wordt weergegeven, zie voorbeeld hierboven.

Opdracht 4

We gaan functionaliteit uitbreiden zodat de simulatie-parameters kunnen worden aangepast.

Op regel 3 t/m 8 worden de parameters van de simulatie gedefinieerd.

(a) Zet deze definities in een aparte file, parameters.php en include 'parameters.php' in de corona.php file.

(b) Maak een form (editparams.php) om de parameters aan te passen. In dit form worden de waardes uit de parameters.php ingelezen (met een include). Deze parameters worden gebruikt als default values voor het form. Als je het form post dan wordt er een nieuwe parameters.php file geschreven. Hierin staan de aangepaste waarden. Na het aanpassen van de waarden wordt de simulatie (corona.php) vanzelf aangeroepen.

(c) Maak een extra knop op de corona.php pagina die je kunt gebruiken om naar de editparams.php pagina te gaan.

(d) Maak een extra knop op de editparams.php. Indien je deze knop indrukt worden alle waarden in het form weer op de standaard waarden ingesteld. De standaard waarden zijn de waarde zoals ze in de code staan:

population=4200;
$popWidth=120;
$contactPerPerson=10; // number of contacts per person
$changeToGetSick=5;   // when you contact someone change to get infected
$changeToDie=3;       // when you are infected, change to die
$daysSick=10;         // days sick

Opdracht 5

Pas de code aan, zodat de simulatie begint met 100 mensen die immune zijn.

Pas de editparams.php aan zodat dit aantal immune personen kan worden aangepast.

--