Pong was een van de eerste computerspellen. Met een paar aanpassingen kunnen we deze game makkelijk programmeren in TI-Basic. Hiervoor is wel enige voorkennis vereist op volgende gebieden:

  • variabelen
  • de while loop (controlestructuren)
  • if en then (controlestructuren)
  • getkey
  • output en clrhome
  • menu's (optioneel)
  • lijsten (optioneel)
  • randint (optioneel, maar wel aangeraden)

We gaan dit natuurlijk stap voor stap, gestructureerd aanpakken. We beginnen met wat achtergrond- informatie, daarna maken we de engine voor het spel aan en voegen we steeds meer functies toe.

Achtergrondinformatie

bewerken

Pong is een erg simpel spelletje, gebaseerd op tafeltennis. Het kan tegen de computer of met twee spelers gespeeld worden. Om praktische redenen laat ik hier de multiplayer-modus weg.

De engine is het hart van het spel, hier zal onze engine input afhandelen (met getkey) en graphics tekenen (met output en clrhome). Dit doet hij de hele tijd (via een while loop), tot het spel wordt verloren of afgesloten.

De engine

bewerken

De variabelen

bewerken

Vooraleer we kunnen beginnen met het schrijven van de echte code, hebben we onze variabelen nodig. Uitleg hierbij volgt later, voer dit al maar in:

PROGRAM:PONG
:3→A
:3→B
:8→C
:4→D
:0→K
:0→L
:1→X
:1→Y

Het skelet van de engine

bewerken

het skelet van de engine is een while loop, dit zorgt ervoor dat alle handelingen steeds herhaald worden. De loop ziet er zo uit:

PROGRAM:PONG
: // VARIABELEN HIER
:While L=0
: // CODE HIER
:End

De variabele L bepaalt hier of de loop doorgaat of onderbroken wordt. Later gaan we de loop ook onderbreken door L in te stellen op 1.

Werking van de engine

bewerken

Onze engine gaat een paar simpele taken in volgorde afhandelen. Een kort overzicht:

  1. Invoer ontvangen en verwerken
  2. Variabelen updaten
  3. Computertegenstander laten bewegen
  4. Collision detection uitvoeren
  5. Scherm leegmaken *
  6. Alles tekenen

*noot: hierdoor kan het scherm gaan flikkeren, dit is normaal.

Pong zal bediend worden via de pijltjestoetsen rechtsboven op de TI-83(+)/84+ (SE). Dit gaan we verwerken met behulp van getkey. Hieronder de code:

PROGRAM:PONG
:While L=0
:getKey→K
:End

Deze code zorgt ervoor dat de variabele K nu het nummer van de laatst ingedrukte toets bevat. Aangezien onze "racket" horizontaal gaat bewegen, hebben we hier enkel interesse voor toets 24 (←) en toets 26 (→). Dit levert volgende uitbreiding op:

Afhandeling van invoer

bewerken
PROGRAM:PONG
:While L=0
:getKey→K
:If K=24
:Then
:A-1→A
:0→K
:End
:If K=26
:Then
:A+1→A
:0→K
:End
:End

Variabele A is hier de X-coördinaat van onze racket. Door A met 1 te verminderen of te vermeerderen, verplaatsen we de racket. Nadat A geüpdatet is, stellen we K opnieuw op 0 in, zodat het programma niet denkt dat steeds dezelfde toetsaanslag herhaald wordt.

Dit is eigenlijk de enige invoer die onze engine moet afhandelen.

Variabelen updaten

bewerken

Hierboven hebben we de variabele A (die de horizontale positie van onze racket bepaalt) al geüpdatet. Maar er zijn natuurlijk veel meer variabelen die onze aandacht nodig hebben, daarom verklaar ik hier eerst de functie van elke nog onbesproken variabele.

Variabele B

bewerken

De variabele B is de horizontale positie van de racket van de computergestuurde speler, de tegenstander.

Variabelen C en D

bewerken

De variabelen C en D zijn respectievelijk de X- en Y-coördinaten van de bal.

Variabelen X en Y

bewerken

Deze variabelen zorgen voor het bewegen, de richting van de bal. Zij hebben maar 2 mogelijke waarden: 1 en -1. Een overzicht:

  • Variabele X: indien gelijk aan 1, gaat de bal naar rechts. Indien gelijk aan -1, gaat de bal naar links.
  • Variabele Y: indien gelijk aan 1, gaat de bal naar onder. Indien gelijk aan -1, gaat de bal naar boven.

Het eigenlijke updaten

bewerken

Dit is het moeilijkste deel van de bouw van onze engine.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.