Programmeren in TI-Basic/Een simpel spelletje
Voor dit spelletje moet je de volgende hoofdstukken hebben gelezen:
We gaan een spelletje maken waarbij je het getal moet raden. Als je het fout hebt zegt het programma of het getal dat je moest raden hoger of lager was dan jouw getal. We moeten hiervoor een random getal genereren. Hier is een speciale functie voor op de rekenmachine.
Random getallen
[bewerken]Om random getallen te genereren heb je 5 functies waar je er waarschijnlijk maar twee van zult gebruiken. Hier de belangrijkste.
rand
[bewerken]rand
genereert een random getal van 0 tot en met 1. Als je een hele lijst in een keer wilt genereren zet je er een haakje "(" en het aantal keer dat je een random getal wilt achter de rand
. Een voorbeeld:
:rand(200
Dit genereert 200 getallen van 0 tot en met 1 in een lijst. Om een random getal te generen van een bepaalde waarde en tot een bepaalde waarde maar je wilt niet dat het een afgerond getal is, dan kun je deze code gebruiken:
:rand*(tot-van)+van
Een andere mogelijkheid is de functie randNorm(
.
De syntax hiervan is:
:randNorm(van,tot[,lijstlengte]
Hiermee genereer je een getal van van
tot tot
. Als je lijstlengte
invult dan krijg je een lijst vol met random getallen.
Random getallen hebben een seed. Een seed is het getal dat bepaalt wat het volgende random getal wordt. Je kan deze bijvoorbeeld instellen om steeds dezelfde random reeks te krijgen. De syntax daarvoor is:
:seed→rand
randInt(
[bewerken]randInt(
genereert een afgerond random getal van en tot een getal dat je opgeeft. De syntax is:
:randInt(van,tot of :randInt(van,tot,lengte lijst
De uiteindelijke spelletjes
[bewerken]eenmalig
[bewerken]Nu we weten hoe we een random getal kunnen genereren kunnen we beginnen met ons programma. Programma's beginnen altijd met een ClrHome, zodat alle informatie die nog op het basischerm stond verwijderd wordt en het programma niet verstoort. Repeat B=C zorgt ervoor dat de lus (Repeat tot End) herhaald wordt tot B gelijk is aan C, de conditie. Variabele B zal het te raden getal zijn. Om het niet te moeilijk te maken zullen we een random getal genereren tussen de 0 en de 50. Het geraden getal zal worden gezet in variabele C.
PROGRAM:GUESS :ClrHome :randint(0,50→B :Repeat B=C :Input "GETAL=",C :If C<B :Disp "TE LAAG! :If C>B :Disp "TE HOOG! :End :Disp "GEFELICITEERD! :Disp "JE HEBT HET :Disp "GERADEN!
Dit is op zich een heel eenvoudig spelletje. Je kan het heel makkelijk verbeteren met bijvoorbeeld meerdere levels, steeds moeilijker of highscores. Zet de aangepaste spellen hieronder:
Een minuut (werkt alleen op de TI-84 Plus)
[bewerken]Op verzoek hierboven, een iets moeilijkere versie. Je moet hier binnen 60 seconden zo veel mogelijk getallen raden. Hiervoor leg ik eerst even de functies startTmr en CheckTmr.
- StartTmr
- Deze functie geeft een waarde terug. Met behulp van deze waarde kun je straks kijken hoeveel secondes er inmiddels verstreken zijn.
- CheckTmr( waarde
- Deze functie geeft aan hoeveel seconden er verstreken zijn voor de waarde die je invoerd. Dit is de waarde die je met StartTimer kreeg.
PROGRAM:GUESS :StartTmr→S :-1→T :Lbl S :1+T→T :RandInt(0,50→C :While CheckTmr(S)<60 :Input "Guess ?",A :If A=C:Then :Disp "Goed, volgende :Goto S:End :If A<C:Disp "Hoger :If A>C:Disp "Lager :End :Disp "Je had er",T,"goed!"
Eigenlijk is dit spelletje een beetje nep. Je kunt de tijd net zo lang rekken als je wilt. Zo kun je over het laatste antwoord een uur nadenken, zonder dat het programmatje iets onderneemt. Zodra er een getal is ingevoerd echter, checkt het programmatje nog eenmaal of het klopt, maar herhaalt niet meer.
Op jouw verzoek hier een aangepast programma:
PROGRAM:GUESS :StartTmr→S :-1→T :Lbl S :1+T→T :RandInt(0,50→C :While CheckTmr(S)<60 :Input "Guess ?",A :If CheckTmr(S)<60 :Then :If A=C:Then :Disp "Goed, volgende :Goto S:End :If A<C:Disp "Hoger :If A>C:Disp "Lager :End :End :Disp "Je had er",T,"goed!"