home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 601-625 / apd602 / sky_blitz.amos / sky_blitz.amosSourceCode < prev    next >
AMOS Source Code  |  1993-02-25  |  9KB  |  300 lines

  1. Rem====================25/12===5AUTOEXEC_S=========================          
  2. Rem ---------------------------screen title------------------------------- 
  3. Screen Open 0,320,320,16,Lowres
  4. Curs Off : Hide : Flash Off 
  5. Palette 40,$8
  6. Locate 0,7
  7. Centre "****************************"
  8. Cmove ,1 : Centre "*                          *"
  9. Cmove ,1 : Centre "*   SKYBLITZ II            *"
  10. Cmove ,1 : Centre "*           by             *"
  11. Cmove ,1 : Centre "*              TOM & KEV   *"
  12. Cmove ,1 : Centre "*     USING AMOS BASIC     *"
  13. Cmove ,1 : Centre "*                          *"
  14. Cmove ,1 : Centre "*     *      *      *      *"
  15. Cmove ,1 : Centre "*   thanks to Mr.Unknown   *"
  16. Cmove ,1 : Centre "*    for original idea     *"
  17. Cmove ,1 : Centre "*                          *"
  18. Cmove ,1 : Centre "****************************"
  19. Wait 150
  20. Rem
  21. Rem------------------------------scroll the title screen-------------------  
  22. Rem
  23. Def Scroll 1,0,0 To 630,88,0,6
  24. Def Scroll 2,0,100 To 630,180,0,-6
  25. For X=1 To 16
  26.    Scroll 1
  27.    Scroll 2
  28.    Wait 2
  29. Next X
  30. '  
  31. NUT:
  32. Global S
  33. Locate 7,5
  34. Print " PICK JUNIOR OR SENIOR "
  35. Locate 8,7
  36. Print "    PRESS  J  or S "
  37. Wait Key 
  38. If Key State(33)=True Then S=False : Bell 
  39. If Key State(38)=True Then S=True : Bell 
  40. If Key State(33)=False and Key State(38)=False
  41.    Boom : Cls : Goto NUT
  42. End If 
  43. '
  44. Cls 
  45. NUT_2:
  46. Locate 3,5
  47. Print "INSERT YOUR ENTRY LEVEL(1 TO 5)"
  48. Wait Key 
  49. If Key State(1)=True Then PICK=1 : Bell 
  50. If Key State(2)=True Then PICK=2 : Bell 
  51. If Key State(3)=True Then PICK=3 : Bell 
  52. If Key State(4)=True Then PICK=4 : Bell 
  53. If Key State(5)=True Then PICK=5 : Bell 
  54. If PICK<1 or PICK>5 Then Boom : Cls : Goto NUT_2
  55. LEVEL=PICK
  56. '
  57. SCORE=0 : LIVES=3
  58. Dim XBLOCK(50),YBLOCK(50)
  59. Rem-----------------------------**Initalise screen etc.------------- 
  60. Double Buffer 
  61. Screen Open 1,320,320,16,Lowres
  62. Hide : Curs Off : Flash Off 
  63. Rem-----------------------------**Load bank & get sprite palette---- 
  64. Load "BLITZ.abk"
  65. Get Sprite Palette 
  66. Screen Close 0
  67. Rem--------------------Next sheet from here--------------------------
  68. AGAIN:
  69. If LIVES=0
  70.    SCORE=0 : LIVES=3
  71. End If 
  72. Cls 
  73. Rem------------------------Make a green surface area----------------         
  74. Ink 25
  75. Bar 0,230 To 320,270
  76. '
  77. If LEVEL=1 Then SCORE=0
  78. Locate 0,1 : Print "SCORE";SCORE
  79. Locate 32,30 : Print "LEVEL";LEVEL
  80. If LEVEL>1 Then Locate 1,30 : Print "LIVES";LIVES
  81. EXTRA=10
  82. Locate 32,1 : Print "EXTRA";EXTRA
  83. '
  84. Rem---------------------- State starting value of variables----------      
  85. A=0 : B=1 : C=2 : D=3 : E=4 : J=5 : H=6 : F=20 : K=0 : G=0
  86. L=0 : M=0 : N=0 : O=0 : P=0 : Q=0 : R=0 : X=48 : Y=214 : Z=0
  87. PLANEOFFSCREEN=False : CRASH=False : PLODE=True : WIDTH=16 : HEIGHT=16
  88. BLOCKS=50 : BOMBS=60 : TIP=True
  89. '  
  90. Rem-----------------------State global variables 
  91. Global MISSILE,PLODE,XBLOCK(),YBLOCK(),BLOCKS,CRASH,WIDTH,HEIGHT,HOLE,TIP
  92. Global LEVEL,BOMBS,EXTRA,DROP,SCORE,LIVES,Z,X,X1,Y,Y1,G,V,T,PLANEOFFSCREEN
  93. '
  94. Rem---------------------- Define positions of the columns of blocks---       
  95. Rem----------------------- in random order and paste on screen--------           
  96. Rem----------------------- then set zones around them-----------------   
  97. Reserve Zone 50
  98. Reset Zone 
  99. While Z<50
  100.    V=Rnd(6)
  101.    If V=A : G=1 : BUILD : Inc L
  102.       If L=2 : A=F : End If 
  103.    End If 
  104.    If V=B : G=2 : BUILD : Inc M
  105.       If M=2 : B=F : End If 
  106.    End If 
  107.    If V=C : G=3 : BUILD : Inc N
  108.       If N=2 : C=F : End If 
  109.    End If 
  110.    If V=D : G=4 : BUILD : Inc O
  111.       If O=2 : D=F : End If 
  112.    End If 
  113.    If V=E : G=5 : BUILD : Inc P
  114.       If P=2 : E=F : End If 
  115.    End If 
  116.    If V=J : G=6 : BUILD : Inc Q
  117.       If Q=2 : J=F : End If 
  118.    End If 
  119.    If V=H : YN=Rnd(1)
  120.       If YN=1 : G=8 : BUILD : Inc R
  121.          If R=1 : H=F : End If 
  122.       End If 
  123.    End If 
  124. Procedure BUILD
  125.    T=0
  126.    Repeat 
  127.       Inc Z : X1=X : Y1=Y
  128.       XBLOCK(Z)=X1 : YBLOCK(Z)=Y1
  129.       Paste Bob X,Y,3
  130.       Set Zone Z,X1,Y1 To X1+WIDTH-1,Y1+HEIGHT-1
  131.       Y=Y-16
  132.       Inc T
  133.    Until T=G
  134.    X=X+16
  135.    If X=160 Then X=176
  136. End Proc
  137. Y=214
  138. Wend 
  139. '  
  140. '
  141. Rem-----------------------Call plane from bank and define flight path  
  142. Sprite 0,20,67,1
  143. If S=True Then JUNIOR
  144. If S=False Then SENIOR
  145. Procedure JUNIOR
  146.    A$="Loop : For RB=1 To 500; Let X=X+1; Next RB"
  147.    If LEVEL=1 Then A$=A$+" Let X=20; Let Y=Y+10;Jump Loop"
  148.    If LEVEL=2 Then A$=A$+" Let X=20; Let Y=Y+11;Jump Loop"
  149.    If LEVEL=3 Then A$=A$+" Let X=20; Let Y=Y+12;Jump Loop"
  150.    If LEVEL=4 Then A$=A$+" Let X=20; Let Y=Y+13;Jump Loop"
  151.    If LEVEL=5 Then A$=A$+" Let X=20; Let Y=Y+14;Jump Loop"
  152.    If LEVEL>5 Then A$=A$+" Let X=20; Let Y=Y+15;Jump Loop"
  153.    If LEVEL>8 Then A$=A$+" Let X=20; Let Y=Y+18;Jump Loop"
  154.    If LEVEL>10 Then A$=A$+" Let X=20; Let Y=Y+20;Jump Loop"
  155.    If LEVEL>12 Then A$=A$+" Let X=20; Let Y=Y+22;Jump Loop"
  156. Amal 0,A$
  157.    Amal On 0
  158. End Proc
  159. '
  160. Procedure SENIOR
  161.    A$="Loop : For RB=1 To 250; Let X=X+2; Next RB"
  162.    If LEVEL=1 Then A$=A$+" Let X=20; Let Y=Y+8;Jump Loop"
  163.    If LEVEL=2 Then A$=A$+" Let X=20; Let Y=Y+9;Jump Loop"
  164.    If LEVEL=3 Then A$=A$+" Let X=20; Let Y=Y+10;Jump Loop"
  165.    If LEVEL=4 Then A$=A$+" Let X=20; Let Y=Y+11;Jump Loop"
  166.    If LEVEL=5 Then A$=A$+" Let X=20; Let Y=Y+12;Jump Loop"
  167.    If LEVEL>5 Then A$=A$+" Let X=20; Let Y=Y+14;Jump Loop"
  168.    Amal 0,A$
  169.    Amal On 0
  170. End Proc
  171. '
  172. Rem---------------------This repeat loop keeps plane moving while testing  
  173. Rem----------------------for bomb release,or any collisions by plane or    
  174. Rem-----------------------bomb on block or ground, and End of blocks       
  175. '
  176. Rem====MAIN LOOP==============MAIN LOOP=============MAIN LOOP============  
  177. '
  178. Repeat 
  179.    If Fire(1)=0 Then F=1 Else F=F+1
  180.    If F=2 and TIP=True Then RELEASE
  181.    If Y Sprite(6)>=272 and MISSILE=True Then GROUND_BANG
  182.    '
  183.    CHECK_ZONES
  184.    '
  185.    If X Sprite(0)>=500 and BLOCKS=0 Then PLANEOFFSCREEN=True
  186. Until CRASH=True or EXTRA=-1 or PLANEOFFSCREEN=True
  187. '
  188. If PLANEOFFSCREEN=True Then DIDIT
  189. '
  190. If EXTRA=-1
  191.    Amal Off 6 : Dec LIVES
  192.    Locate 0,3 : Centre "YOU HAVE LESS BOMBS THAN BUILDINGS"
  193. End If 
  194. '
  195. Rem---------------------SHEET FINISHES WITH THE NEXT LINES-----  
  196. '
  197. Wait 150
  198. Sprite Off : Amal Off : Bob Off : MISSILE=False
  199. Goto AGAIN
  200. '
  201. '
  202. Procedure RELEASE
  203.    '...................releases bomb and sets counter...... 
  204.    B$="For RC=Y To 272; Let Y=Y+2; Next RC"
  205.    Sprite 6,X Sprite(0),Y Sprite(0)+8,2
  206.    Amal 6,B$
  207.    Amal On 6
  208.    TIP=False
  209.    MISSILE=True
  210.    PLODE=True
  211.    EXTRA=BOMBS-BLOCKS
  212.    Locate 32,1 : Print "EXTRA";EXTRA
  213.    If EXTRA=9 Then Cls 1,312,6 To 320,16 : Rem---blank out the zero on extra
  214.    If EXTRA=-1 Then Sprite Off 6
  215.    Dec BOMBS
  216. End Proc
  217. '
  218. Procedure GROUND_BANG
  219.    '...................bomb has hit the ground (not block)
  220.    MISSILE=False
  221.    TIP=True
  222.    PLODE=True : Rem ......................  counter for explosion
  223.    Sprite Off 6
  224.    Amal Off 6
  225.    Boom 
  226.    Wait Vbl 
  227.    Channel 10 To Bob 10
  228.    Bob 10,X Sprite(6)-129,Y Sprite(6)-47,6
  229.    Amal 10,"Anim 3,(6,2)(7,2);"
  230.    Amal On 10
  231.    Wait 4
  232.    Rem..................make hole in the ground where bomb dropped.......   
  233.    Bob HOLE,X Bob(10),230,19 : Inc HOLE : Wait Vbl 
  234.    Bob Off 10
  235.    Amal Off 10
  236.    Locate 0,1 : Centre " YOU MISSED "
  237.    Wait 20
  238.    Cls 1,112,4 To 200,20
  239. End Proc
  240. '
  241. Procedure XPLODING
  242.    Rem........................animated explosion .. 
  243.    If PLODE
  244.       Channel 11 To Bob 11
  245.       Bob 11,X Sprite(6)-129,Y Sprite(6)-37,6
  246.       Amal 11,"Anim 1,(6,1)(7,3);"
  247.       Amal On 11
  248.       Wait 4
  249.       Bob Off 11
  250.       Amal Off 11
  251.       TIP=True
  252.    End If 
  253.    SCORE=SCORE+10*LEVEL
  254.    Locate 0,1 : Print "SCORE";SCORE
  255. End Proc
  256. '
  257. Procedure CHECK_ZONES
  258.    '.............................. has plane or bomb hit zone ?.......  
  259.    If Hzone(X Sprite(0)+22,Y Sprite(0))>0 Then PLANE_HIT
  260.    If MISSILE
  261.       If Hzone(X Sprite(6),Y Sprite(6)-3)>0
  262.          T=Hzone(X Sprite(6),Y Sprite(6)-3)
  263.          Boom : Amal Off 6 : Sprite Off 6
  264.          Z=T
  265.          Paste Bob XBLOCK(Z),YBLOCK(Z),9
  266.          Reset Zone T : Dec BLOCKS
  267.          XPLODING
  268.       End If 
  269.    End If 
  270. End Proc
  271. '
  272. Procedure PLANE_HIT
  273.    Boom : Amal Off : Sprite Off 
  274.    Channel 14 To Bob 14
  275.    Bob 14,X Sprite(0)-115,Y Sprite(0)-45,4
  276.    Amal 14,"Anim 1,(4,2)(5,2)(6,2)(7,2)(11,4)(14,6);"
  277.    Amal On 14
  278.    Wait 18
  279.    Amal Off 14
  280.    Bob Off 
  281.    Wait Vbl 
  282.    Cls 
  283.    CRASH=True
  284.    Dec LIVES
  285.    If LIVES=0 Then LEVEL=1
  286.    Locate 0,3 : Centre "I THINK YOU BUMPED INTO A BUILDING"
  287. End Proc
  288. Rem--------------------------Increase levels           
  289. '
  290. Procedure DIDIT
  291.    Sprite Off : Bob Off : Amal Off 
  292.    Bar 0,230 To 320,240
  293.    If LEVEL=1 Then Locate 0,3 : Centre "O.K.  BUT WHAT ABOUT THE NEXT ONE"
  294.    If LEVEL=2 Then Locate 0,3 : Centre "GOOD, BUT THE NEXT ONE'S HARDER"
  295.    If LEVEL=3 Then Locate 0,3 : Centre "WOW -----YOU ARE BUZZING NOW "
  296.    If LEVEL=4 Then Locate 0,3 : Centre "IF YOU THINK THAT ONE WAS HARD"
  297.    If LEVEL>4 Then Locate 0,3 : Centre "YOU HAVE EARNED AN EXTRA LIFE"
  298.    Inc LEVEL
  299.    If LEVEL>5 Then Inc LIVES
  300. End Proc