Opdracht 8 De andere kleuren – efficiënter

Begin alleen aan deze opdracht als je zeker weet dat je code uit opdracht 7 goed werkt. Zoals je nu in je code kan zien herhaal je in de loop telkens deze regels:

  1. speelBeurt() en verhoog de waarde van het aantal gezette stappen van kleur
  2. Bereken de huidige positie van kleur
  3. Toon het spelbord gebruik de juiste variabelen
  4. wacht 1 seconde en maak daarna de cli leeg
  5. … en doe dit ook voor de kleuren groen en geel

Regel 3-5 zullen telkens gelijk zijn, maar dat geldt niet voor de regels 1 en 2. Daarin gebruik je immers telkens een andere kleur.

Oplossing 1

Er is een optie om in PHP een variabele te gebruiken voor een variabele naam. Je hebt bijvoorbeeld de volgende variabele:

$startBlauw = 0;

Je kan voor de kleurnaam ook een variabele gebruiken door de naam van de variabele tussen {} (accolades) te zetten:

$kleur = 'Blauw';
${'start' . $kleur} = 0;

Dit geeft de mogelijkheid om door lijstje met alle kleuren heen te gaan met foreach:

foreach(['Blauw', ' Rood', 'Groen', 'Geel'] as $kleur) {
    // hier wordt de code voor elke kleur uitgevoerd
}

Oplossing 2 (eigenlijk een betere oplossing)

Er is nog een betere oplossing door niet met losse variabelen te werken voor de startposities en het aantal gezette stappen, maar met een lijst waarin je in plaats van getallen de kleurnamen als indexen gebruikt.

$startPosities = ['blauw' => 0, 'rood' => 10, 'groen' => 20, 'geel' => 30];

Je kan nu de startPositie van blauw op de volgende manier vinden:

echo $startPositie['blauw'];

Of in plaats van de letterlijke naam kan je ook een variabele gebruiken:

echo $startPositie[$kleur];

En dat geeft weer de mogelijkheid om de foreach te gebruiken uit oplossing 1.

Opdracht A

Maak een keuze uit bovenstaande oplossingen en voer die uit. Lever de nieuwe mainloop in.

Inleveren

                                                                                                                                                                                                                                             |

Opdracht 7 De andere kleuren Opdracht 9 De wachtrij en de eindrij