&&
------------------------------------------------------------------------------
         EEN SPEL MAKEN MET AMIGABASIC - BEWEGEN VIJANDIGE SCHEPEN
------------------------------------------------------------------------------

Het bewegen van de vijandige schepen bestaat net als het schieten uit 4 bijna
dezelfde routines. Er is slechts 1 verschil die wordt bepaald door de maat van
het scherm. De afstand van links naar rechts is groter dan die van boven naar
beneden. Een schip dat van boven of onder komt is dus korter onderweg.
We zagen in de vorige tekst al dat we een variabele OMLAAG gebruiken om de
afstand aan te geven. Voor de andere richtingen zijn dat natuurlijk OMHOOG,
LINKS en RECHTS.

We hogen OMLAAG steeds met 1 op tot dat de waarde 60 wordt berijkt. Dan botst
het schip tegen ons ruimtestation. Het gevolg is natuurlijk de ontploffing van
het station :

   Vijanden:
   Omlaag=Omlaag+1
   IF Omlaag=60 THEN GOSUB GroteBoem:Omlaag=0
   x1%=256:y1%=38:sx%=23:sy%=37:x2%=148:y2%=Omlaag
   GOSUB Blitter
&&
Nu nog de ontploffing. We gebruiken daar dezelfde ontploffing voor die we al
gebruikten voor de vijandige schepen :

   GroteBoem:
   x2%=142
   y2%=113
   LINE (x2%-19,y2%-19)-(x2%+43,y2%+43),0,bf
   FOR BB=0 TO 5
       x1%=289:y1%=BB*33:sx%=32:sy%=32:GOSUB Blitter
       GOSUB Wacht
   NEXT
   LINE (x2%-19,y2%-19)-(x2%+43,y2%+43),0,bf

Nadat het station ontploft is moeten we het kleine schip ook weg halen. We
bepalen daarvoor de coordinaten door te kijken welk schip botste. Dan pakken
we de coordinaten en maken we dat stukje scherm leeg met een LINE-kommando.

   IF Omlaag=60 THEN sx%=23:sy%=37:x2%=148:y2%=Omlaag
   IF Omhoog=60 THEN sx%=23:sy%=37:x2%=148:y2%=218-Omhoog
   IF Links=90  THEN sx%=37:sy%=23:x2%=1+Links:y2%=116
   IF Rechts=90 THEN sx%=37:sy%=23:x2%=280-Rechts:y2%=116
   LINE (x2%-4,y2%-4)-(x2%+sx%,y2%+sy%),0,bf
&&
Wat we nu nog moeten doen is het ruimtestation terug zetten in het midden van
het scherm en het aantal schepen op het scherm met 1 verminderen :

   GOSUB ZetSchip
   LOCATE 1,27
   Aantal=Aantal-1
   PRINT "Schepen : ";RIGHT$("000"+RIGHT$(STR$(Aantal),LEN(STR$(Aantal))-1),3)
   RETURN
&&
Nu alles op een rijtje :

   Vijanden:
   Omlaag=Omlaag+1
   IF Omlaag=60 THEN GOSUB GroteBoem:Omlaag=0
   x1%=256:y1%=38:sx%=23:sy%=37:x2%=148:y2%=Omlaag
   GOSUB Blitter

   Omhoog=Omhoog+1
   IF Omhoog=60 THEN GOSUB GroteBoem:Omhoog=0
   x1%=256:y1%=0:sx%=23:sy%=37:x2%=148:y2%=218-Omhoog
   GOSUB Blitter

   Links=Links+1
   IF Links=90 THEN GOSUB GroteBoem:Links=0
   x1%=256:y1%=208:sx%=37:sy%=23:x2%=1+Links:y2%=116
   GOSUB Blitter

   Rechts=Rechts+1
   IF Rechts=90 THEN GOSUB GroteBoem:Rechts=0
   x1%=256:y1%=232:sx%=37:sy%=23:x2%=280-Rechts:y2%=116
   GOSUB Blitter
   RETURN
&&
   GroteBoem:
   x2%=142
   y2%=113
   LINE (x2%-19,y2%-19)-(x2%+43,y2%+43),0,bf
   FOR BB=0 TO 5
       x1%=289:y1%=BB*33:sx%=32:sy%=32:GOSUB Blitter
       GOSUB Wacht
   NEXT
   LINE (x2%-19,y2%-19)-(x2%+43,y2%+43),0,bf

   IF Omlaag=60 THEN sx%=23:sy%=37:x2%=148:y2%=Omlaag
   IF Omhoog=60 THEN sx%=23:sy%=37:x2%=148:y2%=218-Omhoog
   IF Links=90  THEN sx%=37:sy%=23:x2%=1+Links:y2%=116
   IF Rechts=90 THEN sx%=37:sy%=23:x2%=280-Rechts:y2%=116

   LINE (x2%-4,y2%-4)-(x2%+sx%,y2%+sy%),0,bf
   GOSUB ZetSchip
   LOCATE 1,27
   Aantal=Aantal-1
   PRINT "Schepen : ";RIGHT$("000"+RIGHT$(STR$(Aantal),LEN(STR$(Aantal))-1),3)
   RETURN


De totale listing kunt u bekijken als u het programma Zapp in de Basic-direc-
tory bekijkt vanuit AmigaBasic.

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