&&
------------------------------------------------------------------------------
            EEN SPEL MAKEN MET AMIGABASIC - BEWEGEN RUIMTESTATION
------------------------------------------------------------------------------

De eerste van de drie overgebleven subroutines is diegene die het ruimte-
station beweegt en op het scherm zet.
We moeten daarvoor een aantal coordinaten uitrekenen. Dat kunnen we doen door
het hele scherm uit te tekenen, of door natte vinger werk, ofwel zet maar
ergens neer en pas dat eventueel aan.

Ik heb de coordinaten op die laatste manier berekend. Met behulp van het
animatie-programmatje uit de blitter-tekst heb ik een positie gekozen midden
op het scherm.
Omdat het ruimtestation kan draaien moeten we bepalen welke van de 16 ver-
schillende plaatjes op het scherm moet komen te staan.
We gebruiken daar een kleine berekening voor :

   x1%=(Schip-INT(Schip/4)*4)*64
   y1%=INT(Schip/4)*64
&&
De vier plaatjes naast elkaar liggen precies 64 puntjes uit elkaar. De
plaatjes liggen in het volgende patroon :

   00  01  02  03

   04  05  06  07

   08  09  10  11

   12  13  14  15

Willen we ruimtestation 11 gebruiken dan is dat in de X-richting het 4e
plaatje en in de Y-richting het 3e plaatje.

Door de formule SCHIP-INT(SCHIP/4)*4 bepalen we welk plaatje we in X-richting
willen gebruiken. Vul 11 voor de variabele SCHIP in en de formule wordt :
11-INT(11/4)*4 = 11-(2)*4 = 11-8 = 3.
Drie is het juiste antwoord omdat we bij 0 beginnen te tellen.
Om de juiste plaats op de tekening te vinden moeten we de uitkomst met 64
(pixels) vermenigvuldigen.

Met de formule INT(SCHIP/4) bepalen we de Y-positie. Nemen we weer 11 dan
wordt dat : INT(11/4) = 2. Twee omdat we ook hier beginnen met 0. En we ver-
menigvuldigen weer met 64.
&&
Nu wordt de routine ZetSchip de volgende :

   ZetSchip:
   x1%=(Schip-INT(Schip/4)*4)*64
   y1%=INT(Schip/4)*64
   sx%=62
   sy%=62
   x2%=128
   y2%=96
   GOSUB Blitter
   RETURN

Hierbij zijn x1 en y1 de coordinaten van het ruimtestation op de tekening met
alle plaatjes.
X2 en y2 zijn de coordinaten waar het ruimtestation moet verschijnen in het
speelveld.
Als laatste zijn sx en sy de breedte en hoogte van het plaatje dat verplaatst
moet worden. Deze is 2 kleiner dan 64 omdat om elk plaatje een rand getekend
is.

Nu moet de variabele SCHIP veranderen als we de joystick bewegen. Dit kunnen
we het beste doen VOOR de ZetSchip-routine omdat we die steeds moeten aan-
roepen om het ruimtestation op het scherm te zetten :
&&
   BeweegSchip:
   z=STICK(2)
   IF z=0 THEN RETURN
   IF z= 1 THEN Schip=Schip+1:IF Schip=16 THEN Schip=0
   IF z=-1 THEN Schip=Schip-1:IF Schip=-1 THEN Schip=15

Met het kommando STICK(2) wordt de joystickpoort gelezen. Is de waarde 0 dan
wordt de joystick niet bewogen. Er hoeft niets te gebeuren. We keren met een
RETURN terug.

Heeft STICK(2) de waarde 1 dan beweegt de joystick naar rechts. We moeten
rechtsom draaien. We doen dat door bij de variabele SCHIP 1 op te tellen.
Dan moeten we testen of de waarde van SCHIP niet groter is dan 15 omdat we dan
te ver zijn. Is de waarde 16 geworden dan moet het 0 worden.

Heeft STICK(2) de waarde -1 dan beweegt de joystick naar links. Het verhaal is
gelijk, alleen moet er nu 1 af en moeten we testen of de waarde niet kleiner
wordt dan 0.
&&
Alles in de juiste volgorde wordt dat dan :

   BeweegSchip:
   z=STICK(2)
   IF z=0 THEN RETURN
   IF z= 1 THEN Schip=Schip+1:IF Schip=16 THEN Schip=0
   IF z=-1 THEN Schip=Schip-1:IF Schip=-1 THEN Schip=15

   ZetSchip:
   x1%=(Schip-INT(Schip/4)*4)*64
   y1%=INT(Schip/4)*64
   sx%=62
   sy%=62
   x2%=128
   y2%=96
   GOSUB Blitter
   RETURN









- EINDE ----------------------------------------------------------------------
&&
