home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
authors
/
ds_christian
/
suicide_mission.amos
/
suicide_mission.amosSourceCode
< prev
Wrap
AMOS Source Code
|
1986-08-03
|
8KB
|
373 lines
'
' -- Suicide Mission --
'
' Another Simple Shoot Em Up From The Programming Genius That Is ...
'
' ( Wait For It .... )
'
' David Christian .......
'
' HURRAH !!
'
' This Program Was Started Wednesday 28th Of October
' And Finished Saturday 30th Of October at Exactly 12 Noon ( Im Writing This Now )
' ( Look It Took So Long ~Cos I Was Busy , OK ? )
' Full Instructions On Playing The Game Are Built Into The Game .
' I Know Its Simple , But Hey ! Its Only My Second Game . Gimme A Break .
' Anyway , On With The Slaughter , Happy Blasting !!
' David Christian , 5 Gelliwastad Grove , Pontypridd , Mid Glamorgan ,
' Wales, CF37-2BS , Uk
' If You're An Amos Freak Like Me And Enjoy This Game Then Please Drop
' Me A Line At The Above Adress .
'
' Let The Fun Commence !!
' Arrays ...
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)
' ** Main Game Loop .... **
Do
' Title Screen ....
Gosub TITLE_SCREEN
' Set Fixed Variables
HSCORE=10000
SCORE=0
' Main Loop ...
' Main Screen
Screen Open 0,320,200,16,Lowres
Curs Off : Flash Off : Cls 0
Get Sprite Palette
Hide : Synchro Off : Autoback OFF : Bob Update Off
' Draw Starfield .....
Randomize Rnd(1024)+Timer
For LOP=1 To 30
Ink Rnd(2)+1
Plot Rnd(320),Rnd(200)
Next LOP
Double Buffer
' Scrolling Backdrop
Unpack 10 To 1
' Reset Variables ....
Screen 0
SX=0 : Rem ** Backdrop Screen Offset
_SCROLL_SPEED=2 : Rem ** Scrolling Speed
HX=20 : HY=100 : HS=2 : Rem ** Players 'Copter X & Y 's (etc.)
HBX=0 : HBY=0 : HBACTIVE=0 : HBS=10 : HBF=26 : Rem ** Missile Variables
BOMB_ACTIVE=0 : BOMB_LAUNCH=0
Bob Off
Bob 1,HX,HY,1
Channel 1 To Bob 1
Amal 1,"Animate 0,(1,2)(2,2)(3,2)"
Amal On 1
' Initiate Baddies ..
Gosub INIT_BADDIES
' Main Game Control Loop
Repeat
Screen 0
Bob Clear
' Control Goodie Heccolopter (Hellicopter?)
' Note That The Hellicopter Is Only Redrawn When Needed
' Move Left ?
If Jleft(1) and HX>0
Add HX,-HS
Bob 1,HX,HY,
End If
' Move Right ?
If Jright(1) and HX<270
Add HX,HS
Bob 1,HX,HY,
End If
' Move Up ?
If Jup(1) and HY>0
Add HY,-HS
Bob 1,HX,HY,
End If
' Move Down ?
If Jdown(1) and HY<143
Add HY,HS
Bob 1,HX,HY,
End If
' Fire ?
If HBACTIVE=0 and Fire(1)
Sam Play 2,3
HBACTIVE=1
HBX=HX+16
HBY=HY
End If
' Update Missile ?
If HBACTIVE=1
Add HBX,HBS
Add HBF,1,26 To 27
Bob 2,HBX,HBY,HBF
If HBX>320
HBX=0
HBACTIVE=0
HBF=25
Bob 2,HBX,HBY,HBF
End If
End If
' Scroll Screen
Add SX,_SCROLL_SPEED,0 To 319
Screen Offset 1,SX,0
' Baddies ....
For LOP=1 To 3
If BAD_ACTIVE(LOP)=True
If BAD_TYPE(LOP)=0
' Stupid Baddie ....
Add BAD_X(LOP),-BAD_SPEED(LOP)
' Edge Of Screen ?
If BAD_X(LOP)<0
BAD_ACTIVE(LOP)=0
BAD_TIMER(LOP)=51
End If
Else
' Chaser Baddie ....
' Move Right ?
If BAD_X(LOP)<HX
Add BAD_X(LOP),2
End If
' Move Left ?
If BAD_X(LOP)>HX
Add BAD_X(LOP),-2
End If
' Move Up ?
If BAD_Y(LOP)>HY
Add BAD_Y(LOP),-2
End If
' Move Down ?
If BAD_Y(LOP)<HY
Add BAD_Y(LOP),2
End If
End If
Bob LOP+2,BAD_X(LOP),BAD_Y(LOP),
End If
If BAD_ACTIVE(LOP)=0
Add BAD_TIMER(LOP),1
If BAD_TIMER(LOP)>50
BAD_TIMER(LOP)=0
' Regenerate Baddie ...
N=LOP
BAD_X(LOP)=360
BAD_Y(LOP)=Rnd(140)+10
BAD_SPEED(LOP)=3
BAD_COLOUR(LOP)=Rnd(1)
BAD_ACTIVE(LOP)=True
BAD_TYPE(LOP)=Rnd(1)
If BAD_COLOUR(LOP)=0
Amal LOP+2,"A0,(4,2)(5,2)(6,2)"
Amal On LOP+2
End If
If BAD_COLOUR(LOP)=1
Amal LOP+2,"A0,(7,2)(8,2)(9,2)"
Amal On LOP+2
End If
Bob LOP+2,BAD_X(LOP),BAD_Y(LOP),
End If
End If
Next LOP
' Shooting At You ?
' Move Bomb ...
If BOMB_ACTIVE=1
Add BOMB_FRAME,1
If BOMB_FRAME>25
BOMB_FRAME=10
Bob Off 6
BOMB_ACTIVE=0
BOMB_LAUNCH=0
End If
Bob 6,BOMB_X,BOMB_Y,BOMB_FRAME
End If
' Launch Bomb ?
Add BOMB_COUNT,1
If BOMB_LAUNCH=0 and BOMB_COUNT>100 and BOMB_ACTIVE=0
Sam Play 1
BOMB_LAUNCH=1
BOMB_X=X Bob(1)
BOMB_Y=Y Bob(1)
BOMB_FRAME=10
End If
If BOMB_LAUNCH>0
Add BOMB_LAUNCH,1
If BOMB_LAUNCH>50
Sam Play 1,2
BOMB_ACTIVE=1
BOMB_LAUNCH=0
End If
End If
' ** Collision Detection **
' Bullet 2 Baddie ....
If Bob Col(2,3 To 5)
Gosub BULLET_COLLIDE
End If
' Update Everything ....
Synchro
Bob Draw
Screen Swap 0
Wait Vbl
Until Bob Col(1,3 To 6)
Gosub GAME_OVER
Loop
' Set Up The Baddies ....
INIT_BADDIES:
Y=32
For LOP=1 To 3
' Baddie Variables ....
BAD_ACTIVE(LOP)=True
BAD_X(LOP)=360
BAD_Y(LOP)=Y
Add Y,38
' Pick A Baddie Type ... ( 0 - Stupid , 1 - Intelligent)
BAD_TYPE(LOP)=Rnd(1)
' Baddie Colour ...
BAD_COLOUR(LOP)=Rnd(1)
If BAD_COLOUR(LOP)=0
Bob LOP+2,BAD_X(LOP),BAD_Y(LOP),4
Channel LOP+2 To Bob LOP+2
Amal LOP+2,"A0,(4,2)(5,2)(6,2)"
Amal On LOP+2
End If
If BAD_COLOUR(LOP)=1
Bob LOP+2,BAD_X(LOP),BAD_Y(LOP),7
Channel LOP+2 To Bob LOP+2
Amal LOP+2,"A0,(7,2)(8,2)(9,2)"
Amal On LOP+2
End If
BAD_SPEED(LOP)=2
Next LOP
Return
' Blow Up Baddies ...
BULLET_COLLIDE:
HBX=0
HBACTIVE=0
HBF=25
Bob 2,HBX,HBY,HBF
N=Col(-1)
If BAD_ACTIVE(N-2)=True
' Score Points ....
If BAD_TYPE(N-2)=1
Add SCORE,75
Else
Add SCORE,50
End If
BAD_ACTIVE(N-2)=0
Sam Play 3,2
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)"
Amal On N
End If
Return
' Bring Baddies Back To Life ....
REGENERATE_BADDIE:
N=LOP
BAD_X(N)=360
BAD_SPEED(N)=3
BAD_COLOUR(N)=Rnd(1)
BAD_ACTIVE(N)=1
If BAD_COLOUR(N)=0
Amal N+2,"A0,(4,2)(5,2)(6,2)"
Amal On N+2
End If
If BAD_COLOUR(N)=1
Amal N+2,"A0,(7,2)(8,2)(9,2)"
Amal On N+2
End If
Return
' You Died !!!! But How Well Did You Do ?
GAME_OVER:
Screen 0 : Fade 2 : Wait 3*16
Screen 1 : Fade 2 : Wait 3*16
Unpack 11 To 0
Sprite Off
Bob Off
' Convert Score Variable Into String & Then Print It ....
C=96
S$=Str$(SCORE)
For LOP=1 To Len(S$)
D$=Mid$(S$,LOP,1)
D=Val(D$)
If D=0 Then D=10
Paste Icon C,120,D
Add C,16
Next LOP
' ** Dive Bomb **
' Stage 1 ( Going Down ? )
Double Buffer : Autoback OFF : Bob Update Off
XP=13
X=0
Sam Play 1
For Y=1 To 320 Step 2
Bob Clear
' Hellicopter ....
Bob 5,X,Y,1
' Explosions
Bob 1,X-16,Y-16,XP-3
Bob 2,X-24,Y-24,XP-2
Bob 3,X-32,Y-32,XP-1
Bob 4,X-48,Y-48,XP
Add XD,1
If XD>1
Add XP,1,13 To 24
XD=0
End If
Add X,1
Bob Draw
Screen Swap
Wait Vbl
Next Y
Repeat
Until Fire(1)
Fade 2 : Wait 4*16
Return
' Can Anyone Guess What This Bit Does .....
' Yup ... Its The Title Screen
' ( We Know A Song About That , Don't We Boys And Girls ....)
TITLE_SCREEN:
' Title
Unpack 13 To 0
Hide
Shift Up 2,2,15,1
Repeat
Until Fire(1)
Fade 3 : Wait 3*16
Shift Off
' Mission Briefing ...
Unpack 12 To 0
Hide
Shift Up 2,2,15,1
Repeat
Until Fire(1)
Fade 3 : Wait 3*16
Sam Play 4
Shift Off
Screen Close 0
Return
' Well , Thats All Folks ....