Getal onder de 10

Introductie

Je bent in een donkere kamer.
>Loop Noord
Je ziet een deur.
>Open deur
Je kan de deur niet openen.
>Loop Oost
Er ligt een sleutel
>Raap de sleutel op
Sleutel in voorraad geplaatst
>Ga West
Je ziet een deur
>Open deur
De deur gaat open
Je bent in een bos

Dit is een voorbeeld van een tekstgebaseerd adventure game, een van de vroegste games. Die games kunnen zeer complex worden, maar in de basis van het spel ligt een simpele lus

HERHAAL
LEES OPDRACHT
VOER OPDRACHT UIT
TOON HINT
EINDE HERHAAL

Het 'VOER OPDRACHT UIT' is het meest complexe in het programma. Het moet je huidige lokatie bepalen en wat je daar kunt doen. Er kunnen natuurlijk arrays worden gebruikt.

In games

Een spel dat leuk is om te spelen, heeft altijd het volgende:
  • Willekeurige elementen
  • Lussen
  • Berekeningen (zoals een score of health)
  • Invoer
  • Uitvoer

Opdracht

Laten we ons eerste spel maken. Het is het eenvoudigste spel mogelijk. Raad een getal tussen 1 en 10. Je krijgt 3 kansen. We zullen de RND-functie gebruiken om ons te helpen.

Kijk maar even mee naar de pseudocode.
MAAK EEN WILLEKEURIG GETAL (1..10)
ZET GEWONNEN OP FALSE
ZET TELLER OP 0
HERHAAL TOTDAT GEWONNEN OF TELLER >= 3
VRAAG OM EEN GETAL
ALS CORRECT
ZET GEWONNEN OP TRUE
TEL 1 OP BIJ TELLER
EINDE HERHAAL
ALS GEWONNEN
AFDRUKKEN "JE HEBT GEWONNEN"
ANDERS
AFDRUKKEN "JE HEBT VERLOREN"

Wat interessant is aan de pseudocode is dat de controle voor GEWONNEN in de lus staat, maar er is geen controle op VERLOREN. Dat komt doordat we de booleanwaarde standaard op FALSE zetten, dus als we niets doen, is het spel verloren. Dus we moeten het alleen veranderen in GEWONNEN als het nummer juist is.

Pas op met

  • het openen en sluiten van haakjes. Bedenk dat je RND() altijd met haakjes schrijft
  • de preciese schrijfwijze van WHILE, IF, etc. Zoek het op als je er niet meer zeker van bent

Verwacht resultaat

voorbeeld:
WELKOM BIJ HET RAADSPEL
KIES EEN GETAL (1-10) 7
KIES EEN GETAL (1-10)
3
KIES EEN GETAL (1-10)
4
JE HEBT HET GERADEN IN 3 KEER!

Veelgemaakte fouten

  • Omdraaien van een Boolean (Gewonnen / Verloren)
  • Er 1 naast zitten, laat de gebruiker bijv. 2 of 4 keer raden
  • Booleaanse waarden worden niet gedefinieerd (onthoud 0 = False en -1 = True)

Extra uitdaging

  1. Vertel de gebruiker of het getal warm of koud is. Een verschil van 5 of meer is KOUD. Een verschil van minder dan 5 is WARM.
  2. Vertel de gebruiker om hoger of lager te gaan.

Bronnen

  1. https://nl.wikipedia.org/wiki/Toevalsgenerator

(Er zijn nog geen discussies in dit forum)