home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / authors / ds_christian / suicide_mission.amos / suicide_mission.amosSourceCode < prev   
AMOS Source Code  |  1986-08-03  |  8KB  |  373 lines

  1. '
  2. ' -- Suicide Mission  -- 
  3. '
  4. ' Another Simple Shoot Em Up From The Programming Genius That Is ... 
  5. '
  6. ' ( Wait For It .... ) 
  7. '
  8. ' David Christian .......
  9. '
  10. ' HURRAH !!
  11. '
  12. ' This Program Was Started Wednesday 28th Of October 
  13. ' And Finished Saturday 30th Of October  at Exactly 12 Noon ( Im Writing This Now )
  14. ' ( Look It Took So Long ~Cos I Was Busy , OK ? )    
  15. ' Full Instructions On Playing The Game Are Built Into The Game .  
  16. ' I Know Its Simple , But Hey ! Its Only My Second Game . Gimme A Break .
  17. ' Anyway , On With The Slaughter , Happy Blasting !! 
  18. ' David Christian , 5  Gelliwastad Grove , Pontypridd , Mid Glamorgan ,  
  19. ' Wales, CF37-2BS , Uk   
  20. ' If You're An Amos Freak Like Me And Enjoy This Game Then Please Drop 
  21. ' Me A Line At The Above Adress .  
  22. '
  23. ' Let The Fun Commence !!
  24. ' Arrays ... 
  25. Dim BAD_X(4),BAD_Y(4),BAD_TYPE(4),BAD_SPEED(4),BAD_MODE(4),BAD_ACTIVE(4),BAD_COLOUR(4),BAD_TIMER(4)
  26.  
  27. ' ** Main Game Loop .... **    
  28. Do 
  29.    
  30.    ' Title Screen ....
  31.    Gosub TITLE_SCREEN
  32.  
  33.    ' Set Fixed Variables
  34.    HSCORE=10000
  35.    SCORE=0
  36.    
  37.    ' Main Loop ...
  38.  
  39.    ' Main Screen  
  40.    Screen Open 0,320,200,16,Lowres
  41.    Curs Off : Flash Off : Cls 0
  42.    Get Sprite Palette 
  43.    Hide : Synchro Off : Autoback OFF : Bob Update Off 
  44.    
  45.    ' Draw Starfield ..... 
  46.    Randomize Rnd(1024)+Timer
  47.    For LOP=1 To 30
  48.       Ink Rnd(2)+1
  49.       Plot Rnd(320),Rnd(200)
  50.    Next LOP
  51.    Double Buffer 
  52.    
  53.    ' Scrolling Backdrop 
  54.    Unpack 10 To 1
  55.    
  56.    ' Reset Variables .... 
  57.    Screen 0
  58.    SX=0 : Rem ** Backdrop Screen Offset  
  59.    _SCROLL_SPEED=2 : Rem ** Scrolling Speed 
  60.    HX=20 : HY=100 : HS=2 : Rem ** Players 'Copter  X & Y 's (etc.)  
  61.    HBX=0 : HBY=0 : HBACTIVE=0 : HBS=10 : HBF=26 : Rem ** Missile Variables 
  62.    BOMB_ACTIVE=0 : BOMB_LAUNCH=0
  63.    Bob Off 
  64.    Bob 1,HX,HY,1
  65.    Channel 1 To Bob 1
  66.    Amal 1,"Animate 0,(1,2)(2,2)(3,2)"
  67.    Amal On 1
  68.    
  69.    ' Initiate Baddies ..
  70.    Gosub INIT_BADDIES
  71.    
  72.    ' Main Game Control Loop 
  73.    Repeat 
  74.       
  75.       Screen 0
  76.       Bob Clear 
  77.       ' Control Goodie Heccolopter (Hellicopter?)
  78.       ' Note That The Hellicopter Is Only Redrawn When Needed  
  79.       ' Move Left ?
  80.       If Jleft(1) and HX>0
  81.          Add HX,-HS
  82.          Bob 1,HX,HY,
  83.       End If 
  84.       ' Move Right ? 
  85.       If Jright(1) and HX<270
  86.          Add HX,HS
  87.          Bob 1,HX,HY,
  88.       End If 
  89.       ' Move Up ?
  90.       If Jup(1) and HY>0
  91.          Add HY,-HS
  92.          Bob 1,HX,HY,
  93.       End If 
  94.       ' Move Down ?
  95.       If Jdown(1) and HY<143
  96.          Add HY,HS
  97.          Bob 1,HX,HY,
  98.       End If 
  99.       ' Fire ? 
  100.       If HBACTIVE=0 and Fire(1)
  101.          Sam Play 2,3
  102.          HBACTIVE=1
  103.          HBX=HX+16
  104.          HBY=HY
  105.       End If 
  106.       ' Update Missile ? 
  107.       If HBACTIVE=1
  108.          Add HBX,HBS
  109.          Add HBF,1,26 To 27
  110.          Bob 2,HBX,HBY,HBF
  111.          If HBX>320
  112.             HBX=0
  113.             HBACTIVE=0
  114.             HBF=25
  115.             Bob 2,HBX,HBY,HBF
  116.          End If 
  117.       End If 
  118.       
  119.       ' Scroll Screen
  120.       Add SX,_SCROLL_SPEED,0 To 319
  121.       Screen Offset 1,SX,0
  122.       
  123.       ' Baddies .... 
  124.       For LOP=1 To 3
  125.          If BAD_ACTIVE(LOP)=True
  126.             If BAD_TYPE(LOP)=0
  127.                ' Stupid Baddie .... 
  128.                Add BAD_X(LOP),-BAD_SPEED(LOP)
  129.                ' Edge Of Screen ? 
  130.                If BAD_X(LOP)<0
  131.                   BAD_ACTIVE(LOP)=0
  132.                   BAD_TIMER(LOP)=51
  133.                End If 
  134.             Else 
  135.                ' Chaser Baddie .... 
  136.                ' Move Right ?   
  137.                If BAD_X(LOP)<HX
  138.                   Add BAD_X(LOP),2
  139.                End If 
  140.                ' Move Left ?    
  141.                If BAD_X(LOP)>HX
  142.                   Add BAD_X(LOP),-2
  143.                End If 
  144.                ' Move Up ?    
  145.                If BAD_Y(LOP)>HY
  146.                   Add BAD_Y(LOP),-2
  147.                End If 
  148.                ' Move Down ?    
  149.                If BAD_Y(LOP)<HY
  150.                   Add BAD_Y(LOP),2
  151.                End If 
  152.                
  153.             End If 
  154.             Bob LOP+2,BAD_X(LOP),BAD_Y(LOP),
  155.          End If 
  156.          If BAD_ACTIVE(LOP)=0
  157.             Add BAD_TIMER(LOP),1
  158.             If BAD_TIMER(LOP)>50
  159.                BAD_TIMER(LOP)=0
  160.                ' Regenerate Baddie ...
  161.                N=LOP
  162.                BAD_X(LOP)=360
  163.                BAD_Y(LOP)=Rnd(140)+10
  164.                BAD_SPEED(LOP)=3
  165.                BAD_COLOUR(LOP)=Rnd(1)
  166.                BAD_ACTIVE(LOP)=True
  167.                BAD_TYPE(LOP)=Rnd(1)
  168.                If BAD_COLOUR(LOP)=0
  169.                   Amal LOP+2,"A0,(4,2)(5,2)(6,2)"
  170.                   Amal On LOP+2
  171.                End If 
  172.                If BAD_COLOUR(LOP)=1
  173.                   Amal LOP+2,"A0,(7,2)(8,2)(9,2)"
  174.                   Amal On LOP+2
  175.                End If 
  176.                Bob LOP+2,BAD_X(LOP),BAD_Y(LOP),
  177.             End If 
  178.          End If 
  179.       Next LOP
  180.       
  181.       ' Shooting At You ?
  182.       ' Move Bomb ...
  183.       If BOMB_ACTIVE=1
  184.          Add BOMB_FRAME,1
  185.          If BOMB_FRAME>25
  186.             BOMB_FRAME=10
  187.             Bob Off 6
  188.             BOMB_ACTIVE=0
  189.             BOMB_LAUNCH=0
  190.          End If 
  191.          Bob 6,BOMB_X,BOMB_Y,BOMB_FRAME
  192.       End If 
  193.       ' Launch Bomb ?
  194.       Add BOMB_COUNT,1
  195.       If BOMB_LAUNCH=0 and BOMB_COUNT>100 and BOMB_ACTIVE=0
  196.          Sam Play 1
  197.          BOMB_LAUNCH=1
  198.          BOMB_X=X Bob(1)
  199.          BOMB_Y=Y Bob(1)
  200.          BOMB_FRAME=10
  201.       End If 
  202.       If BOMB_LAUNCH>0
  203.          Add BOMB_LAUNCH,1
  204.          If BOMB_LAUNCH>50
  205.             Sam Play 1,2
  206.             BOMB_ACTIVE=1
  207.             BOMB_LAUNCH=0
  208.          End If 
  209.       End If 
  210.       ' ** Collision Detection  ** 
  211.       ' Bullet 2 Baddie .... 
  212.       If Bob Col(2,3 To 5)
  213.          Gosub BULLET_COLLIDE
  214.       End If 
  215.       
  216.       ' Update Everything .... 
  217.       Synchro 
  218.       Bob Draw 
  219.       Screen Swap 0
  220.       Wait Vbl 
  221.       
  222.    Until Bob Col(1,3 To 6)
  223.    Gosub GAME_OVER
  224. Loop 
  225.  
  226. ' Set Up The Baddies ....  
  227. INIT_BADDIES:
  228.  
  229. Y=32
  230. For LOP=1 To 3
  231.    
  232.    ' Baddie Variables ....
  233.    BAD_ACTIVE(LOP)=True
  234.    BAD_X(LOP)=360
  235.    BAD_Y(LOP)=Y
  236.    Add Y,38
  237.    
  238.    ' Pick A Baddie Type ... ( 0 - Stupid , 1 - Intelligent) 
  239.    BAD_TYPE(LOP)=Rnd(1)
  240.    ' Baddie Colour ...
  241.    BAD_COLOUR(LOP)=Rnd(1)
  242.    If BAD_COLOUR(LOP)=0
  243.       Bob LOP+2,BAD_X(LOP),BAD_Y(LOP),4
  244.       Channel LOP+2 To Bob LOP+2
  245.       Amal LOP+2,"A0,(4,2)(5,2)(6,2)"
  246.       Amal On LOP+2
  247.    End If 
  248.    If BAD_COLOUR(LOP)=1
  249.       Bob LOP+2,BAD_X(LOP),BAD_Y(LOP),7
  250.       Channel LOP+2 To Bob LOP+2
  251.       Amal LOP+2,"A0,(7,2)(8,2)(9,2)"
  252.       Amal On LOP+2
  253.    End If 
  254.    BAD_SPEED(LOP)=2
  255.    
  256. Next LOP
  257. Return 
  258.  
  259. ' Blow Up Baddies ...
  260. BULLET_COLLIDE:
  261. HBX=0
  262. HBACTIVE=0
  263. HBF=25
  264. Bob 2,HBX,HBY,HBF
  265. N=Col(-1)
  266. If BAD_ACTIVE(N-2)=True
  267.    ' Score Points ....
  268.    If BAD_TYPE(N-2)=1
  269.       Add SCORE,75
  270.    Else 
  271.       Add SCORE,50
  272.    End If 
  273.    BAD_ACTIVE(N-2)=0
  274.    Sam Play 3,2
  275.    Amal N,"A1,(10,1)(11,1)(12,1)(13,1)(14,1)(15,1)(16,1)(17,1)(18,1)(19,1)(20,1)(21,1)(22,1)(23,1)(24,1)(25,1)"
  276.    Amal On N
  277. End If 
  278. Return 
  279.  
  280. ' Bring Baddies Back To Life ....
  281. REGENERATE_BADDIE:
  282. N=LOP
  283. BAD_X(N)=360
  284. BAD_SPEED(N)=3
  285. BAD_COLOUR(N)=Rnd(1)
  286. BAD_ACTIVE(N)=1
  287. If BAD_COLOUR(N)=0
  288.    Amal N+2,"A0,(4,2)(5,2)(6,2)"
  289.    Amal On N+2
  290. End If 
  291. If BAD_COLOUR(N)=1
  292.    Amal N+2,"A0,(7,2)(8,2)(9,2)"
  293.    Amal On N+2
  294. End If 
  295. Return 
  296.  
  297. ' You Died !!!! But How Well Did You Do ?
  298. GAME_OVER:
  299. Screen 0 : Fade 2 : Wait 3*16
  300. Screen 1 : Fade 2 : Wait 3*16
  301. Unpack 11 To 0
  302. Sprite Off 
  303. Bob Off 
  304. ' Convert Score Variable Into String & Then Print It ....
  305. C=96
  306. S$=Str$(SCORE)
  307. For LOP=1 To Len(S$)
  308.    D$=Mid$(S$,LOP,1)
  309.    D=Val(D$)
  310.    If D=0 Then D=10
  311.    Paste Icon C,120,D
  312.    Add C,16
  313. Next LOP
  314.  
  315. ' ** Dive Bomb **
  316.  
  317. ' Stage 1 ( Going Down ? ) 
  318. Double Buffer : Autoback OFF : Bob Update Off 
  319. XP=13
  320. X=0
  321. Sam Play 1
  322. For Y=1 To 320 Step 2
  323.    Bob Clear 
  324.    ' Hellicopter .... 
  325.    Bob 5,X,Y,1
  326.    ' Explosions 
  327.    Bob 1,X-16,Y-16,XP-3
  328.    Bob 2,X-24,Y-24,XP-2
  329.    Bob 3,X-32,Y-32,XP-1
  330.    Bob 4,X-48,Y-48,XP
  331.    Add XD,1
  332.    If XD>1
  333.       Add XP,1,13 To 24
  334.       XD=0
  335.    End If 
  336.    Add X,1
  337.    Bob Draw 
  338.    Screen Swap 
  339.    Wait Vbl 
  340. Next Y
  341. Repeat 
  342. Until Fire(1)
  343. Fade 2 : Wait 4*16
  344. Return 
  345.  
  346.  
  347. ' Can Anyone Guess What This Bit Does .....
  348. ' Yup ... Its The Title Screen   
  349. ' ( We Know A Song About That , Don't We Boys And Girls ....)
  350.  
  351. TITLE_SCREEN:
  352. ' Title
  353. Unpack 13 To 0
  354. Hide 
  355. Shift Up 2,2,15,1
  356. Repeat 
  357. Until Fire(1)
  358. Fade 3 : Wait 3*16
  359. Shift Off 
  360. ' Mission Briefing ... 
  361. Unpack 12 To 0
  362. Hide 
  363. Shift Up 2,2,15,1
  364. Repeat 
  365. Until Fire(1)
  366. Fade 3 : Wait 3*16
  367. Sam Play 4
  368. Shift Off 
  369. Screen Close 0
  370.  
  371. Return 
  372.  
  373. ' Well , Thats All Folks ....