home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 67 / af067a.adf / SYSTEM.DMS / SYSTEM.adf / Examples / VirtualSprites.AMOS / VirtualSprites.amosSourceCode
AMOS Source Code  |  1994-09-08  |  2KB  |  85 lines

  1. Rem *** Virtual Sprites Demonstration
  2. Rem *** By Jason Holborn 
  3.  
  4. Rem *** Taken from the book 'ULTIMATE AMOS'
  5. Rem *** Available from Future Publishing on 0225 442244
  6.  
  7.  
  8. FRAME=1 : FRAMEDELAY=0
  9.  
  10. NUMROWS=7 : Rem *** Number of rows of sprites
  11. SPEED=2 : Rem *** Speed of sprite movement 
  12. POSITION=0 : Rem *** Number of movement steps counter 
  13. DROPOFFSET=0 : Rem *** Y offset of all sprites
  14. DROPRATE=10 : Rem *** How far the sprites drop down the screen 
  15.  
  16. Screen Open 0,320,256,16,Lowres
  17. Flash Off : Curs Off : Cls 0
  18.  
  19. Load "AMOSBOOK:ABKFiles/SpaceInvader.ABK"
  20. Get Sprite Palette 
  21. Sprite Update Off 
  22.  
  23. Rem *** Set up colour palette of all sprites 
  24. For C=0 To 3
  25.    Colour 17+(C*4),$F00
  26.    Colour 18+(C*4),$F
  27.    Colour 19+(C*4),$FF0
  28. Next C
  29.  
  30. Rem *** Turn off mouse pointer!
  31. Hide 
  32.  
  33. Rem *** Initialise Positions of 56 virtual sprites 
  34. Dim INVADER(NUMROWS*8,2)
  35. INVADERNUM=0
  36. For B=0 To NUMROWS-1
  37.    For C=0 To 7
  38.       INVADER(INVADERNUM,0)=C*25
  39.       INVADER(INVADERNUM,1)=B*20
  40.       INVADERNUM=INVADERNUM+1
  41.    Next C
  42. Next B
  43.  
  44. Repeat 
  45.    Rem *** Move all virtual sprites 
  46.    For ROW=0 To NUMROWS-1
  47.       OFFSET=ROW*8
  48.       For C=0 To 7
  49.          INVADER(C+OFFSET,0)=INVADER(C+OFFSET,0)+SPEED
  50.          X=X Hard(INVADER(C+OFFSET,0))
  51.          Y=Y Hard(INVADER(C+OFFSET,1)+DROPOFFSET)
  52.          Sprite C+OFFSET+8,X,Y,FRAME
  53.       Next C
  54.    Next ROW
  55.  
  56.    Rem *** Reverse direction of aliens if they
  57.    Rem *** reach edge of screen   
  58.  
  59.    POSITION=POSITION+SPEED
  60.    If POSITION>130 or POSITION<-130
  61.       SPEED=-SPEED
  62.       POSITION=0
  63.       DROPOFFSET=DROPOFFSET+DROPRATE
  64.       If DROPOFFSET>114
  65.          DROPOFFSET=0
  66.       End If 
  67.    End If 
  68.  
  69.    Rem *** Update animation frame number
  70.    
  71.    If FRAMEDELAY=5
  72.       FRAME=FRAME+1
  73.       If FRAME=3
  74.          FRAME=1
  75.       End If 
  76.       FRAMEDELAY=0
  77.    End If 
  78.    FRAMEDELAY=FRAMEDELAY+1
  79.  
  80.    Rem *** Draw all virtual sprites now 
  81.    Sprite Update 
  82.  
  83.    Rem *** Wait for vertical blank before proceeding
  84.    Wait Vbl 
  85. Until Inkey$<>""