Programmeren in TI-Basic/Een simpel spelletje (getkey)

Uit Wikibooks

Ga naar: navigatie, zoek

Voor dat je hier aan begint is het handig om over de volgende onderwerpen iets af te weten:

  • controlestructuren
  • variabelen
  • getkey

In dit artikel zal ik alles stap voor stap uitleggen.

Allereerst beginnen met de eingelijke 'engine'. We hebben de functie getKey nodig. Ook het eindigen zetten we er alvast in.

PROGRAM:GUESS
:
:Repeat G=22 or   (G=22, mode = variabele voor afsluiten)
:getKey→G
:
:(G=22)→A         (Als toets 22 = quit wordt ingedrukt, dan wordt A 1)
:End              (herhaalt totdat G=22 (mode))

Het getal bestaat altijd uit twee toetsen. We maken dus een lijst aan met twee ruimtes. We maken meteen ook een stuk waarmee we random toetsen = getallen maakten. Hiervoor is de functie randInt( erg handig. Noot: Het probleem zit erin dat we een onderbroken reeks hebben

PROGRAM:GUESS
:
:2→dim(L1
:Repeat G=22 or 
:If D:Then
:randInt(7,10)→B
:B*10+randInt(2,4)(B≠10)+2(B=10)→L1(1)
:randInt(7,10)→C                          Herhaling omdat er twee toetsen worden ingedrukt
:C*10+randInt(2,4)(B≠10)+2(B=10)→L1(2)   Ga na: Alle getallen van 00 tot 99 kunnen worden gevormd
:Delvar D
:End
:getKey→G
:
:End

De gebruiker gaat straks twee toetsen indrukken. Deze moeten we opslaan voor later gebruik. Hier hebben we lijst 2 voor nodig.

PROGRAM:GUESS
:StartTmr→T                           (We voegen de tijd alvast toe)
:2→dim(L1
:2→dim(L2
:Delvar D                             (D mag niet meteen worden uitgevoerd. Deze wordt uitgevoerd)
:Repeat G=22 or                       (als de speler een getal GOED heeft                        )
:If D:Then
:randInt(7,10)→B
:B*10+randInt(2,4)(B≠10)+2(B=10)→L1(1)
:randInt(7,10)→C                          
:C*10+randInt(2,4)(B≠10)+2(B=10)→L1(2)  
:Delvar D
:Delvar L2                            (invoer voor gebruiker mag niet blijven staan)
:1→E
:End
:getKey→G
:If G≠22:Then
:G→L2(E)
:(E=3)→D                              (Als E=3, dan wordt de loop met D uitgevoerd)
:End
:End

We gaan de toetsen interpreteren, 92 betekent bijvoorbeeld '1', 92 betekent '2' en 74 bijvoorbeeld '9'. Dit doen we door een aantal if's te gebruiken. De tijd zullen we verder afmaken en de 'gewonnen'-loop (loop met D), maken we even af. We veranderen het programmatje toch nog even. Met een beetje denken blijkt het werken met toetsen in lijst 2 onmogelijk. Geen probleem, we maken er een getal van dat het in werkelijkheid zou zijn.

PROGRAM:GUESS
:StartTmr→T
:0→S
:2→dim(L1
:2→dim(L2
:Delvar D
:Repeat G=22 or CheckTmr(T)=60         (Na 60 seconde moet het programma stoppen)
:If D:Then
:Delvar D
:1→E
:L2(1)*10+L2(2)→Z                      (Het getal wat de speler heeft ingetoetst)
:Delvar L2
:ClrDraw
:Text(0,0,Z
:If Z<B:Text(0,10,"Lager
:If Z>B:Text(0,10,"Hoger
:If Z=B:Then
:1+S→S
:Text(0,10,"Geraden!
:randInt(0,99)→B                       (geen nut om meer met toetsen te werken. Gewoon een getal)
:End
:End
:getKey→G
:If G=92:1→Z
:If G=93:2→Z
:If G=94:3→Z
:If G=82:4→Z
:If G=83:5→Z
:If G=84:6→Z
:If G=72:7→Z
:If G=73:8→Z
:If G=74:9→Z
:If G=102:0→Z
:Z→L2(E
:E+1→E
:Text(10,0,"Getal:
:Text(10,15+5E,Z
:(E=3)→D
:End
Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.
Persoonlijke instellingen