home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
526-550
/
apd529
/
subhunt
/
subhunt.amos
/
subhunt.amosSourceCode
< prev
Wrap
AMOS Source Code
|
1993-11-29
|
5KB
|
164 lines
'--------------------------------------
' SUB HUNT
'
' by
'
' TEX
'
' KWIK-GAME-3
'
' 05-10-90
'
'--------------------------------------
SUBHUNT
Procedure SUBHUNT
Make Mask
Dim NDC(2),SIU(5),LIU(5),M(2),SOS(5) : Randomize Timer
BEGIN:
Gosub TITLEPAGE
Gosub GAMESETUP
MAINL:
Gosub BIPLANE
Gosub HITMNE
If Chanan(14)=0 Then Bob Off 14
If SUBS>0 Then Gosub DROPMNS
Gosub SUBMARINES
Gosub MNEFIN
If NDCIU=1 Then Inc DCC
If Jleft(1)=-1 Then XX=XX-1 : SD=1 : If XX=<38 Then XX=38
If Jright(1)=-1 Then Add XX,1 : SD=2 : If XX>=314 Then XX=314
If Fire(1)=-1 and NDCIU<2 Then Gosub DROPDEPTHCHARGE
Bob 1,XX,,SD
If NDC(1)=1 and Chanmv(2)=0 Then DC=1 : Gosub HITFLOOR
If NDC(2)=1 and Chanmv(3)=0 Then DC=2 : Gosub HITFLOOR
Goto MAINL
DROPDEPTHCHARGE:
If NDCIU=1 and DCC<20 Then Return : If DCC=>20 Then DCC=0
If NDC(1)=0 Then NDC(1)=1 : DC=2 : Goto DDC
If NDC(2)=0 Then NDC(2)=1 : DC=3
DDC:
Bob DC,XX,77,11 : Channel DC To Bob DC : Amal DC,DC$ : Amal On DC
Inc NDCIU : Inc NDU :
Return
HITFLOOR:
Sam Play 1 : Bob Off DC+1
NDC(DC)=0 : Dec NDCIU
Return
GAMESETUP:
Unpack 6 To 0 : Flash Off : Hide On
Double Buffer
SM$="L: M 0,3,30; M 0,-3,30; J L "
A1$="M 450,0,"
A2$="M 0,-450,"
DC$="A 0,(9,5)(10,5)(11,5)(12,5); M 0,195,960"
M$="A 50,(13,8)(14,8)(15,8); M 0,-" : M2$="Loop: M 0,5,40; M 0,-5,40; Jump Loop"
DS$="A 1,(24,5)(25,5)(26,5)(27,5)(28,5)(29,5)(30,5)(31,5)(32,5)(33,5)(34,5)"
XX=175 : NDC(1)=0 : NDC(2)=0 : DCC=0 : NDCIU=0 : SC=0 : SUBS=0 : BOMB=0 : MN=0 : For X=1 To 5 : LIU(X)=0 : SIU(X)=0 : Next X
NDU=0 : NSH=0 :
Bob 1,175,77,1
Channel 1 To Bob 1 : Bob Update : Amal 1,SM$ : Amal On 1
Return
BIPLANE:
If Chanmv(15)=-1 Then Goto BOMB
BI=Rnd(1000) : DD=Rnd(1000) : If BI=DD Then Goto BP Else Return
BP:
BI=0
BI1$="A 0,(16,5)(17,5)(18,5)(19,5); M -380,0,380"
BI2$="A 0,(20,5)(21,5)(22,5)(23,5); M 380,0,380"
LRR=Rnd(1) : Inc LRR
On LRR Goto L,R
L:
Bob 15,350,10,16 : Channel 15 To Bob 15 : Amal 15,BI1$ : Amal On 15 : Return
R:
Bob 15,-20,10,16 : Channel 15 To Bob 15 : Amal 15,BI2$ : Amal On 15 : Return
BOMB:
If BOMB=1 Then Goto CHECKHIT
BX=X Bob(1)-15 : BBX=BX+30
If X Bob(15)<BX or X Bob(15)>BBX Then Return
On LRR Goto DL,DR
DL:
Bob 4,X Bob(15)+10,Y Bob(15)+10,36 : BOMB=1
Channel 4 To Bob 4 : Amal 4,"M -20,58,120" : Amal On 4 : Return
DR:
Bob 4,X Bob(15)+10,Y Bob(15)+10,35 : BOMB=1
Channel 4 To Bob 4 : Amal 4,"M 20,58,120" : Amal On 4 : Return
CHECKHIT:
If Y Bob(4)<65 Then Return
ZC=Bob Col(4) : If Col(1)=-1 Then MH=4 : Goto SHIPHIT
If Chanmv(4)=0 Then Bob Off 4 : Amal Off 4 : BOMB=0 : Return
SUBMARINES:
Gosub HITSUB
For X=1 To 5
If SIU(X)=1 and Chanmv(X+5)=0 Then Gosub SUBOK
Next X
If SUBS=5 Then Return
SB1=Rnd(100) : SB2=Rnd(100) : If SB1=SB2 Then Goto SUB Else Return
SUB:
For X=1 To 5 : If LIU(X)=0 Then SY=(X*40)+60 : LIU(X)=1 : Goto SUB1
Next X : Return
SUB1:
SI=Rnd(2) : Inc SI
SS=Rnd(3) : SS=SS*210
LR=Rnd(1) : Inc LR
For WS=1 To 5 : If SIU(WS)=0 Then Goto SC Else Next WS
Return
SC:
SIU(WS)=1
Add WS,5 : Inc SUBS
On LR Goto SL,SR
SL:
SUB$="M -420,0,"+Mid$(Str$(SS),2) : SOS(WS-5)=SS
Bob WS,380,SY,4 : Channel WS To Bob WS : Amal WS,SUB$ : Amal On WS : Return
SR:
SUB$="M 420,0,"+Mid$(Str$(SS),2)
Bob WS,-40,SY,3 : Channel WS To Bob WS : Amal WS,SUB$ : Amal On WS : Return
SUBOK:
LIU(X)=0 : SIU(X)=0 : Dec SUBS : Return
HITSUB:
M1=Bob Col(2) : DC=2
For X=6 To 11
If Col(X)=-1 Then Gosub BLOWUP : Goto HS
Next X
HS:
M2=Bob Col(3) : DC=3
For X=6 To 11
If Col(X)=-1 Then Gosub BLOWUP
Next X
Return
BLOWUP:
MX=X Bob(DC) : MY=Y Bob(DC) :
Bob Off DC : Bob 14,MX,MY,24 : Channel 14 To Bob 14 : Amal 14,DS$ : Amal On 14
Sam Play 1 : Bob Off X : LIU(X-5)=0 : SIU(X-5)=0 : Dec SUBS
Return
DROPMNS:
Z=Rnd(20) : If Z<>Rnd(20) Then Return
Z=Rnd(4)+1 : If Chanmv(Z+5)=0 Then Return
If X Bob(Z+5)<10 or X Bob(Z+5)>310 Then Return
If MN=2 Then Return
For X=1 To 2 : If M(X)=0 and Chanan(MN+12)=0 Then Goto M
Next X : Return
M:
Inc MN : M(X)=1 : MX=X Bob(Z+5) : MY=Y Bob(Z+5)
Bob MN+11,MX,MY,13 : DI=MY-77 : SS=DI*6 : SS$=Mid$(Str$(SS),2)
DI$=Mid$(Str$(DI),2) : M1$=M$+DI$+","+SS$+"; "+M2$
Channel MN+11 To Bob MN+11 : Amal MN+11,M1$ : Amal On MN+11
Return
HITMNE:
HS=Bob Col(12) : If Col(1)=-1 Then Pop : MH=12 : Goto SHIPHIT
HS=Bob Col(13) : If Col(1)=-1 Then Pop : MH=13 : Goto SHIPHIT
Return
SHIPHIT:
MX=X Bob(MH) : MY=Y Bob(MH) : Bob Off MH
Bob 14,MX,MY,19 : Channel 14 To Bob 14 : Amal 14,DS$ : Amal On 14
Sam Play 1 : Repeat : Until Chanan(14)=0 : Bob Off 14 : Amal 1,"M0, 220,440" : Channel 1 To Bob 1 : Amal On
Repeat : Until Y Bob(1)>180 : Fade 8 : Wait 8*15 : Goto BEGIN
MNEFIN:
If MN=0 Then Return
If M(1)=1 and Chanan(12)=0 Then M(1)=0 : Dec MN : Bob Off 12
If M(2)=1 and Chanan(13)=0 Then M(2)=0 : Dec MN : Bob Off 13
Return
TITLEPAGE:
Hide On
Fade 2 :
Load "subhunt-title.abk",7 : Unpack 7 To 1 : Erase 7 : Repeat : Until Fire(1)=-1 : Fade 5 : Wait 5*15 : Return
End Proc