Alle vragen op een rij
Totaal: 26 vragen
Gegenereerd op: 31-03-2026 15:09
Vraag 1 (Nr: 01)
Werken met sessies
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Start een sessie en toon of er al een spel in de sessie staat. Gebruik isset functie van php om eerst te controleren of de variabele bestaat.
Startcode
<?php
// TODO: start de sessie en initiele waarde voor $_SESSION['spel']
echo "<h1>Mens erger je niet</h1>";
// TODO: controleer of $_SESSION['spel'] bestaat en toon een passende tekst
Vraag 2 (Nr: 02)
Werken met array (enkelvoudig)
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Maak een eenvoudige array met de vier kleuren van het Mens Erger Je Niet spel en toon ze onder elkaar.
Startcode
<?php
$kleuren = []; // TODO
// TODO: toon elke kleur op een nieuwe regel
Vraag 3 (Nr: 03)
Werken met multi-dimensionale array
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Maak een array spel met daarin start (startposities) en stappen (gezette stappen per kleur).
Startcode
<?php
$spel = [
// TODO: start
// TODO: stappen
];
echo "<pre>";
print_r($spel);
echo "</pre>";
Vraag 4 (Nr: 04)
Werken met array keys
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Toon alleen de keys van $spel['start'] (dus: blauw, geel, groen, rood).
Startcode
<?php
$start = [
'blauw' => 0,
'geel' => 10,
'groen' => 20,
'rood' => 30,
];
// TODO: toon de keys
Vraag 5 (Nr: 05)
Werken met array values
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Toon alleen de values van $start (dus: 0, 10, 20, 30).
Startcode
<?php
$start = [
'blauw' => 0,
'geel' => 10,
'groen' => 20,
'rood' => 30,
];
// TODO: toon de values
Vraag 6 (Nr: 06)
Werken met array functions
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Gebruik array-functies om:
het aantal kleuren te tonen te checken of geel bestaat als key in $start te checken of 20 bestaat als value in $start
Kijk hier voor alle array functies: PHP alle array functies
Startcode
<?php
$start = [
'blauw' => 0,
'geel' => 10,
'groen' => 20,
'rood' => 30,
];
// TODO: count
// TODO: array_key_exists
// TODO: in_array
Vraag 7 (Nr: 07)
Sessie starten met formulier
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Maak een knop Nieuw spel. Als erop geklikt wordt:
zet je $_SESSION['spel'] met startposities en stappen zet een melding “Nieuw spel gestart”
Startcode
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// TODO: nieuw spel
}
?>
<form method="post">
<button type="submit" name="actie" value="nieuw">Nieuw spel</button>
</form>
Vraag 8 (Nr: 08)
Sessie stoppen met formulier
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Maak een knop Stop sessie. Als erop geklikt wordt:
maak de sessie leeg stop de sessie
Startcode
<?php
session_start();
Vraag 9 (Nr: 09)
Vragen over initiele sessie
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Bekijk de code goed. Je ziet een voorbeeld van het starten en resetten van het spel. Geef antwoord op de volgende vragen:
Leg uit wat de startwaardes inhouden (blauw 0, geeld 10, groen 20 en rood 30). Waarvoor zullen de stappen zijn? Waarom is het nodig om ook meldingen op te nemen in de sessie? Leg beknopt uit hoe de code werkt.
Startcode
<?php
session_start();
function nieuwSpel(): array
{
return [
'start' => [
'blauw' => 0,
'geel' => 10,
'groen' => 20,
'rood' => 30,
],
'stappen' => [
'blauw' => 0,
'geel' => 0,
'groen' => 0,
'rood' => 0,
],
'melding' => 'Nieuw spel gestart',
];
}
// Acties verwerken
$actie = $_POST['actie'] ?? '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($actie === 'nieuw') {
$_SESSION['spel'] = nieuwSpel();
}
if ($actie === 'stop') {
$_SESSION = [];
if (session_status() === PHP_SESSION_ACTIVE) {
session_destroy();
}
}
}
// Spel ophalen (als het bestaat)
$spel = $_SESSION['spel'] ?? null;
?>
Vraag 10 (Nr: 10)
Toon huidige spelstand
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 7
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Toon de spelstand netjes op de pagina:
melding (als die er is) startposities stappen
Startcode
<?php
session_start();
/**
* Maak een nieuwe (lege) spelstaat
*/
function nieuwSpel(): array
{
return [
'start' => [
'blauw' => 0,
'geel' => 10,
'groen' => 20,
'rood' => 30,
],
'stappen' => [
'blauw' => 0,
'geel' => 0,
'groen' => 0,
'rood' => 0,
],
'melding' => 'Nieuw spel gestart',
];
}
$_SESSION['spel'] = nieuwSpel();
// TODO
Vraag 11 (Nr: 11)
Dobbelsteen rollen
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 14
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Maak een knop Gooi dobbelsteen. Als de knop wordt ingedrukt:
wordt een getal tussen 1 en 6 gegooid sla het resultaat op in de sessie toon het resultaat op de pagina
Gebruik de PHP functie random_int().
Startcode
<?php
Vraag 12 (Nr: 12)
Gooien, plaatsen en lopen
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 14
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
In Mens erger je niet mag een pion pas op het bord als je 6 gooit. We gebruiken deze regels:
pion staat nog niet op bord → stappen = -1 als je 6 gooit → pion komt op het bord als pion nog niet op bord staat en je gooit geen 6 → er gebeurt niets als pion wel op bord staat dan verplaatst deze volgens de waarde van de worp van de dobbelsteen
In deze opdracht gaan we ervan uit dat speler blauw aan de beurt is. Beantwoord ook deze vragen:
Hoe kan je alle regels goed testen? Geef een overzicht van de testen en de resultaten Leg uit waarom stappen nu niet meer op 0 staat, maar op -1
Startcode
<?php
session_start();
function nieuwSpel(): array
{
return [
'start' => [
'blauw' => 0,
'geel' => 10,
'groen' => 20,
'rood' => 30,
],
'stappen' => [
'blauw' => -1,
'geel' => -1,
'groen' => -1,
'rood' => -1,
],
'melding' => 'Nieuw spel gestart',
'dobbelsteen' => 6
];
}
$_SESSION['spel'] = nieuwSpel();
// TODO Maak een algrotime op basis van bovenstaande regels
Vraag 13 (Nr: 13)
Beurten
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 14
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Zorg dat er in de sessie een waarde bestaat: $_SESSION['spel']['beurt']. Begin met blauw als er nog niets is. Maak een knop Volgende beurt. Als je op de knop klikt, wordt de beurt de volgende kleur in deze volgorde: blauw → geel → groen → rood → blauw Toon daarna op de pagina: “Beurt is: …”
Klik hier voor voorbeeld resultaat
Startcode
<?php
session_start();
function nieuwSpel(): array
{
return [
'start' => [
'blauw' => 0,
'geel' => 10,
'groen' => 20,
'rood' => 30,
],
'stappen' => [
'blauw' => -1,
'geel' => -1,
'groen' => -1,
'rood' => -1,
],
'melding' => 'Nieuw spel gestart',
'dobbelsteen' => 6,
'beurt' => 'blauw',
];
}
// Alleen nieuw spel maken als er nog geen spel is
if (!isset($_SESSION['spel'])) {
$_SESSION['spel'] = nieuwSpel();
}
// Beurtvolgorde
$volgorde = ['blauw', 'geel', 'groen', 'rood'];
// Volgende beurt algoritme
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['actie'] ?? '') === 'volgende_beurt') {
$huidig = $_SESSION['spel']['beurt'] ?? 'blauw';
$index = array_search($huidig, $volgorde, true);
if ($index === false) {
$_SESSION['spel']['beurt'] = 'blauw';
} else {
$volgendeIndex = ($index + 1) % count($volgorde);
$_SESSION['spel']['beurt'] = $volgorde[$volgendeIndex];
}
$_SESSION['spel']['melding'] = 'Beurt is nu: ' . $_SESSION['spel']['beurt'];
}
// Handige knop om echt opnieuw te beginnen
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['actie'] ?? '') === 'nieuw_spel') {
$_SESSION['spel'] = nieuwSpel();
}
$spel = $_SESSION['spel'];
?>
<!doctype html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Beurt rouleren</title>
</head>
<body>
<h1>Beurt rouleren</h1>
<form method="post">
<button name="actie" value="volgende_beurt">Volgende beurt</button>
<button name="actie" value="nieuw_spel">Nieuw spel</button>
</form>
<p><strong>Melding:</strong> <?= htmlspecialchars($spel['melding'], ENT_QUOTES, 'UTF-8') ?></p>
<p><strong>Beurt:</strong> <?= htmlspecialchars($spel['beurt'], ENT_QUOTES, 'UTF-8') ?></p>
<pre><?php print_r($_SESSION['spel']); ?></pre>
</body>
</html>
Vraag 14 (Nr: 14)
Validatie van verplaatsing
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 21
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Er gelden een aantal voorwaarden voordat een plaatsing of verplaatsing is toegestaan.
Alleen als je 6 gooit mag je een pion op het spel plaatsen Je mag alleen pionen verplaatsen die zich in het speelveld bevinden Als je aan het einde van het spelbord bent moet je de pion weer terugplaatsen. Let op we rekenen met 40 velden, daarna 4 velden voor de thuispositie. Je mag dus doorlopen tot veld 44 en daarna moet je weer terug. Als een pion in veld 41-44 staat dan mag deze niet meer verplaatst worden in de volgende beurt (is thuis). PS. Er mogen geen 2 pion tegelijk op veld 41-44 komen. Dus verplaatsing is niet toegestaan als er zich daar al een pion bevindt. Omdat we nog met 1 pion per kleur werken kunnen we dat nu nog niet controleren.
Startcode
<?php
function kanVerplaatsen(int $stappen, int $worp): bool
{
// TODO Maak een algrotime op basis van bovenstaande regels
}
echo kanVerplaatsen(-1, 6); //false
echo kanVerplaatsen(0, 6); //...(true of false?)
echo kanVerplaatsen(42, 4); //...(true of false?)
//... verzin er nog wat testen bij
Vraag 15 (Nr: 15)
Keuze bij gooien 6
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 21
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
In de code zie je nu dat er 2 buttons zijn: gooien en plaats pion. We werken alleen met speler blauw. Maak het algoritme af voor het plaatsen van de pion en het gooien met de dobbelsteen. Bedenk ook hoe je dit algoritme het beste kan testen. Beschrijf wat je daarvoor hebt gedaan in het tekstantwoord.
Startcode
<?php
session_start();
function nieuwSpel(): array
{
return [
'stappen' => [
'blauw' => -1,
],
'dobbelsteen' => 6
];
}
if(isset(!$_SESSION['spel'])) {
$_SESSION['spel'] = nieuwSpel();
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$actie = $_POST['actie'] ?? '';
// Maak algoritme voor gooien en plaatsen volgens de opdracht
}
?>
<html>
<body>
<form method="post">
<button type="submit" name="actie" value="plaats">Plaats pion (bij 6)</button>
</form>
<form method="post">
<button type="submit" name="actie" value="gooi">Gooi dobbelsteen</button>
</form>
<p><!-- Geef hier de output van de dobbelsteen --></p>
</body>
</html>
Vraag 16 (Nr: 16)
Terugtellen aan het einde
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 21
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
We hebbben al bepaald of verplaatsing is toegestaan. Is dat waar dan gaan we de nieuwe positie berekenen. Als je aan het einde van het spelbord bent moet je de pion weer terugplaatsen. Let op we rekenen met 40 velden, daarna 4 velden voor de thuispositie. Je mag dus doorlopen tot veld 44 en daarna moet je weer terug.
Startcode
<?php
function berekenNieuwePositie(int $stappen, int $worp): int
{
// TODO Maak een algrotime op basis van bovenstaande regels
}
// Maak hier testscenario's
Vraag 17 (Nr: 17)
Sessie naar 4x4 pionnen
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 28
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
De sessie moet nu aangepast worden om met 4x4 pionnen te werken. Pas de gegeven functie daarop aan.
Startcode
<?php
function nieuwSpel(): array
{
return [
'start' => [
'blauw' => 0,
'geel' => 10,
'groen' => 20,
'rood' => 30,
],
'stappen' => [
'blauw' => -1,
'geel' => -1,
'groen' => -1,
'rood' => -1,
],
'dobbelsteen' => null,
'melding' => 'Nieuw spel gestart',
'beurt' => 'blauw',
];
}
Vraag 18 (Nr: 18)
Help functies 4 pionnen
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 28
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Het is wel handig om functies te maken die helpen om te kijken of de speler nog pionnen heeft die in de wachtrij staan en een functie die kijkt of de speler nog pionnen in het spel heeft. Maak daarvoor onderstaande code af. Test de functies.
Startcode
<?php
function heeftPionInWacht(array $pionnen): bool
{
// Maak functie af
}
function heeftBeweegbarePion(array $pionnen): bool
{
// Maak functie af
}
// Test hier de functies
Vraag 19 (Nr: 19)
Het button en status spel
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 28
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
We gaan alleen de buttons maken van het spel mens erger je niet. De vraag is wat mag je bij welke actie zien? Dat sla je op in een status. De status bepaalt vervolgens welke buttons je laat zien. We doen dat hier zonder sessie. We maken ons ook nog niet druk om de welke pionnen in de wachtrij staan of al in het spel zijn of al thuis zijn. Dat is voor de volgende opdracht. Bedenk bij welke acties welke buttons logisch zijn. Het resultaat moet gelijk zijn aan dit voorbeeld: https://voorbeeld.mijn-in.nl/programmeren/mensergerjeniet/vraag19.php
Startcode
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$actie = $_POST['actie'] ?? '';
// hier moet de logica van de statussen
}
?>
<html>
<body>
<div class="row">
<form method="post">
<button type="submit" name="actie" value="nieuw">Nieuw spel</button>
</form>
<form method="post">
<button type="submit" name="actie" value="gooi">Gooi dobbelsteen</button>
</form>
<form method="post">
<button type="submit" name="actie" value="volgende">Volgende beurt</button>
</form>
<!-- Je gooide 6, plaats pion -->
<form method="post">
<div class="pion-selector">
<?php for ($i = 0; $i < 4; $i++): ?>
<button class="pion-btn" type="submit" name="pion" value="<?= $i ?>">Pion <?= $i ?></button>
<?php endfor; ?>
</div>
<input type="hidden" name="actie" value="plaats">
</form>
<!-- Kies pion om te verplaatsen -->
<form method="post">
<div class="pion-selector">
<?php for ($i = 0; $i < 4; $i++): ?>
<button class="pion-btn" type="submit" name="pion" value="<?= $i ?>">Pion <?= $i ?></button>
<?php endfor; ?>
</div>
<input type="hidden" name="actie" value="verplaats">
</form>
</div>
</body>
</html>
Vraag 20 (Nr: 20)
Posities berekenen
Thema: MensErgerJeNietWeb | Taal: php | Dagen: 35
info "Server Upload Opdracht"
Dit is een opdracht waarbij bestanden naar de server geüpload moeten worden.
Vraagstelling
Maak een functie waarmee je de posities berekend. Voeg ook een testscript toe. Hier alleen de werkende functie met testcode inleveren. In tegenstelling tot de vorige weken is er nu geen voorzet gegeven. Het is dus nu aan jou om de goede code te maken.
Vraag 21 (Nr: 21)
Eigen opdracht
Thema: MensErgerJeNietWeb | Taal: auto | Dagen: 42
Vraagstelling
Geef een eigen beschrijving van een functionaliteit en voeg dit toe aan je eindresultaat. Let op dat de docent bepaalt of de beschrijving en uitvoering goed is.
Vraag 22 (Nr: 22)
Eigen opdracht
Thema: MensErgerJeNietWeb | Taal: auto | Dagen: 42
Vraagstelling
Geef een eigen beschrijving van een functionaliteit en voeg dit toe aan je eindresultaat. Let op dat de docent bepaalt of de beschrijving en uitvoering goed is.
Vraag 23 (Nr: 23)
Eigen opdracht
Thema: MensErgerJeNietWeb | Taal: auto | Dagen: 42
Vraagstelling
Geef een eigen beschrijving van een functionaliteit en voeg dit toe aan je eindresultaat. Let op dat de docent bepaalt of de beschrijving en uitvoering goed is.
Vraag 24 (Nr: 24)
Eigen opdracht
Thema: MensErgerJeNietWeb | Taal: auto | Dagen: 42
Vraagstelling
Geef een eigen beschrijving van een functionaliteit en voeg dit toe aan je eindresultaat. Let op dat de docent bepaalt of de beschrijving en uitvoering goed is.
Vraag 25 (Nr: 25)
Eigen opdracht
Thema: MensErgerJeNietWeb | Taal: auto | Dagen: 42
Vraagstelling
Geef een eigen beschrijving van een functionaliteit en voeg dit toe aan je eindresultaat. Let op dat de docent bepaalt of de beschrijving en uitvoering goed is.
Vraag 26 (Nr: 26)
Eigen opdracht
Thema: MensErgerJeNietWeb | Taal: auto | Dagen: 42
Vraagstelling
Geef een eigen beschrijving van een functionaliteit en voeg dit toe aan je eindresultaat. Let op dat de docent bepaalt of de beschrijving en uitvoering goed is.