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.


Uitleg sessies Extra uitleg