home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
601-625
/
apd619
/
fantasy
/
fantasy.amos
/
fantasy.amosSourceCode
< prev
next >
Wrap
AMOS Source Code
|
1992-12-27
|
9KB
|
441 lines
Rem new
Dim MOV(4)
Global MOV(),_INTER,USATI,LEVEL,RESTANO,OVER,ENERGIA,PUNTI,BOMBE,_COLPI
Global SCHERMO,PROSSIMO,_COLPITI,BOMBEUSATE,_COLPIUSATI
Global FAT,NECESSARI,_TEMPOFISSI,VELOCITASLI
INIZIO:
Default
RESET
_INTRO
'
'
LOOOP:
RESETLEVEL
SCHERMO
_BOBSOTTO
PUNTEGGIO
CARICHE
PRESENTALIVELLO
'
Do
CONTROLLOARRIVO
If Key State(69) Then End
If Key State(25) Then PAUSE
If RESTANO=3 and FAT=0 Then _3MORE : FAT=1
If RESTANO=<0 Then FINELIVELLO
If PROSSIMO=1 Then Goto LOOOP
If OVER=1 Then Goto FINE
If Mouse Key=1 and Timer>_INTER Then Timer=0 : SPARO
If Mouse Click=2 Then BOMBA
K=Rnd(2600)
If K=7 or K=8 or K=9 Then METTIMOVIMENTO
If K<5 Then METTIFISSO
If K=5 or K=6 Then RISERVA
Loop
'
'
'
'
Procedure PUNTEGGIO
Inc _COLPITI
Dim S(9)
R$=Str$(PUNTI)-" "
V=Len(R$)
For T=1 To V
S(T)=Val(Mid$(R$,V-T+1,1))
Next
L=60
For T=20 To 25
Bob T,L,0,S(T-19)+30
L=L-10
Next
End Proc
Procedure CARICHE
Screen 1
If BOMBE>9 Then BOMBE=9
If _COLPI>999 Then _COLPI=999
Bob 28,40,24,BOMBE+30
If _COLPI<1 Then _COLPI=1 : _INTER=50
S=_COLPI/100
Bob 26,140,24,S+30
Bob 27,150,24,30+(_COLPI/10)-(S*10)
Screen 0
End Proc
Procedure ENERGIA
Screen 1
ENERGIA=ENERGIA-2
Ink 7
F=(ENERGIA)+251
Box F,31 To F+1,41
If ENERGIA=<0 Then OVER=1
Screen 0
End Proc
Procedure SPARO
Inc _COLPIUSATI
Dec _COLPI
Shoot
If Y Mouse>218 Then Pop Proc
If Not(_COLPI+1)/10=_COLPI/10 Then CARICHE
If Spritebob Col(8,1 To 14)
For T=1 To 8
If Col(T)
Dec RESTANO
Amal Off T
Bob T,,190,
Inc PUNTI : PUNTEGGIO
Exit
End If
Next
If Col(9)
Sam Play 1
Amal Off 9
Bob 9,,190,
Add _COLPI,10 : CARICHE
_INTER=3
End If
If Col(10)
Sam Play 2
Amal Off 10
Bob 10,,190,
Inc BOMBE
CARICHE
End If
For T=11 To 14
If Col(T)
Sam Play 14
Dec MOV(T-10)
If MOV(T-10)=0
Amal Off T
Bob T,340,,1
Add PUNTI,5 : PUNTEGGIO : Dec RESTANO
End If
End If
Next
End If
End Proc
Procedure BOMBA
Bob Off 29
If BOMBE=0 Then Pop Proc
Inc BOMBEUSATE
Channel 15 To Screen Display 0
Amal 15,"For R4=1 To 30; M 2,0,1;M 0,2,1;M -2,0,1;M 0,-2,1 ; NR4"
Amal On 15
Fade 2,$F00
Dec BOMBE
For T=1 To 20
Boom
Next
For T=1 To 8
If Y Bob(T)<190
Inc PUNTI : Dec RESTANO
Amal Off T
Bob T,,190,
End If
Next
If Y Bob(9)<190
Amal Off 9
Bob 9,,190,
Add _COLPI,10
End If
If Y Bob(10)<190
Amal Off 10
Bob 10,,190,
Inc BOMBE
End If
For T=11 To 14
If X Bob(T)<340
Add PUNTI,5 : Dec RESTANO
Amal Off T
Bob T,340,,1
End If
Next
CARICHE
PUNTEGGIO
Wait 20
Fade 3,$0
For T=1 To 3
Wait 25
Fade 3,$F00
Wait 30
Fade 3,$0
Next
Amal Off 15
End Proc
Procedure RESET
_INTER=3
LEVEL=0
OVER=0
PUNTI=0
_COLPI=130
BOMBE=2
ENERGIA=50
End Proc
Procedure SCHERMO
Unpack 6+SCHERMO To 0
Paste Bob 10,215,11
Paste Bob 110,215,12
Ink 31 : Bar 250,220 To 300,230
Ink 0 : Box 249,219 To 301,231
Screen Open 1,320,60,32,Lowres
Screen Display 1,,233,,
Flash Off
Screen 0
Dim R(32)
For T=0 To 31
R(T)=Colour(T)
Next
Screen 1
For T=0 To 31
Colour T,R(T)
Next
Screen Copy 0,0,189,320,245 To 1,0,0
Screen 1
Get Icon 1,39,23 To 71,44
Get Icon 2,135,22 To 167,43
Double Buffer
Screen 0
Double Buffer
Limit Mouse 124,39 To 424,273
Hide On
Make Mask
Channel 0 To Sprite 8
Sprite 8,X Mouse,Y Mouse,20
Amal 0,"L: LX=XM ; LY=YM ; JL "
Amal On 0
Screen 1
If ENERGIA<50
Ink 7
F=(ENERGIA)+251
Bar F,31 To 300,41
End If
Screen 0
End Proc
Procedure _3MORE
Bell 60
Channel 15 To Bob 29
Bob 29,100,-10,13
Amal 15,"Move 0,270,80"
Amal On 15
End Proc
Procedure _BOBSOTTO
'1-8 nemici fermi
'9-10 munizioni proiettili-bombe
'11-14 alieno che cammina
For T=1 To 14
Channel T To Bob T
Next
For T=1 To 8
Bob T,100,190,6
Next
Bob 9,100,190,12
Bob 10,100,190,11
For T=11 To 14
Bob T,340,141,1
Next
End Proc
Procedure METTIFISSO
W=0
For T=1 To 8
If Y Bob(T)=190 Then W=T : Exit
Next
If W=0 Then Pop Proc
Bob W,Rnd(270)+10,,Rnd(4)+6
ER$=Str$(_TEMPOFISSI)
Amal W,"Move 0,-31,15 ; F R1=1 To "+ER$+" ; N R1 ; Move 0,31,15 ; Let RB=1"
Amal On W
End Proc
Procedure RISERVA
T=Rnd(12)
If T<1 Then Pop Proc
If T>4 Then E=9 Else E=10
If Y Bob(E)<190 Then Pop Proc
Bob E,Rnd(280)+10,-15,
Amal E,"Move 0,206,150"
Amal On E
End Proc
Procedure METTIMOVIMENTO
W=0
For T=11 To 14
If X Bob(T)=340 Then W=T : Exit
Next
If W=0 Then Pop Proc
ER$=Str$(VELOCITASLI)
If Rnd(3)>1
ERFD$="Anim 0,(1,5)(2,5)(3,5)(4,5)(5,5) ; Move -370,0,"+ER$+" ; Let X=340"
ERFD$=ERFD$+"; Let RA=1"
Else
ERFD$="Let X=0 ; A 0,($8001,5)($8002,5)($8003,5)($8004,5)($8005,5) ; "
ERFD$=ERFD$+"Move 370,0,"+ER$+" ; Anim 1,(1,1) ; Let X=340 ; Let RA=1"
End If
MOV(W-10)=NECESSARI
Amal W,ERFD$
Amal On W
End Proc
Procedure CONTROLLOARRIVO
If Amreg(0)=1
Amreg(0)=0
ENERGIA
End If
If Amreg(1)=1
Amreg(1)=0
ENERGIA
End If
End Proc
Procedure FINELIVELLO
_COLPITI2=_COLPITI
For T=1 To 19
Bob Off T
Next
For L=59 To 0 Step -1
Play 96-(20+(L/2)),0
Wait 1
Next L
Colour 29,$EEE
Screen 1
Colour 29,$0
Screen 0
Fade 15 To 1
Ink 29
Y=50
For T=50 To 125
Inc Y
Box T,Y To 300-T,210-Y
Next
Ink 5,29
Text 100,39,"LEVEL"+Str$(LEVEL) : Sam Play 10 : Wait 20
_TOS=LEVEL*10 : Gosub _TOS
Wait 10
Sam Play 10 : Text 60,69,"COLPITI:"+Str$(_COLPITI2) : Wait 20
_TOS=_COLPITI2 : Gosub _TOS
Wait 20
Sam Play 10 : Text 60,89,"BOMBE USATE:"+Str$(BOMBEUSATE)
Wait 20
Sam Play 10 : Text 60,109,"COLPI USATI:"+Str$(_COLPIUSATI)
Wait 20
Sam Play 10
If _COLPIUSATI>0
MED=(_COLPITI2*100)/_COLPIUSATI
Text 60,129,"MEDIA:"+Str$(MED)+"%"
_TOS=MED : Gosub _TOS
End If
Repeat
Until Mouse Click
PROSSIMO=1
Pop Proc
_TOS:
For T=1 To 100+MED
Inc PUNTI
Bell 80
PUNTEGGIO
Wait Vbl
Next
Return
End Proc
Procedure RESETLEVEL
Add _COLPI,10
Clear Key
PROSSIMO=0
Inc LEVEL
VELOCITASLI=200-(LEVEL*4)
_TEMPOFISSI=100-((LEVEL/2)*4)
If _TEMPOFISSI<30 Then Tempo FISSI=30
NECESSARI=4+(LEVEL/4)
SCHERMO=(LEVEL-1)/3
If SCHERMO>3 Then SCHERMO=3
RESTANO=10+(10*LEVEL) : FAT=0
_COLPIUSATI=0 : BOMBEUSATE=0 : _COLPITI=0
For T=1 To 4
MOV(T)=0
Next
End Proc
Procedure PAUSE
X=X Mouse
Y=Y Mouse
Amal Freeze
Dim C(31)
For T=0 To 31
C(T)=Colour(T)
Next
Fade 10
Clear Key
Wait Key
X Mouse=X : Y Mouse=Y
Fade 6 To 1
Wait 100
Amal On
End Proc
Procedure PRESENTALIVELLO
Screen Open 3,320,104,4,Lowres
Screen Open 2,320,104,4,Lowres
Screen 2
Channel 15 To Screen Display 2
Amal 15,"Loop: Move 0,130,70 ; Move 0,-130,70 ; JL"
For T=2 To 3
Screen T
Colour 0,0
Colour 1,$CC
Colour 2,$C00
Next
Screen 2
Cls 1
Ink 2
For T=4 To 320 Step 4
Draw T,0 To T,104
Next
Screen 3
Ink 2,0
LUP$="LEVEL:"+Str$(LEVEL)
If LEVEL>9 Then LUP$=LUP$-" "
Text 100,50,LUP$
Zoom 3,100,44,163,51 To 2,20,20,300,80
Screen Close 3
Screen 2
Amal On 15
Repeat : Play 55,5 : Exit If Mouse Click : Play 65,5 : Until Mouse Click
Amal Off 15
Screen Close 2
Screen 0
Wait 20
End Proc
Procedure _INTRO
Unpack 10 To 0
Unpack 13 To 1
Screen Display 1,,270,,
Wait Vbl
Channel 15 To Screen Offset 1
Amal 15,"Loop: Let X=0 ; Move 600,0,250 ; Move -600,0,250 ; J Loop"
Amal On 15
Repeat : Until Mouse Click
Amal Off
Screen Close 1
End Proc
'
'
'
FINE:
Autoback 1
Ink 5,0
Text 100,100,"GAME OVER"
For T=1 To 4
Bell 20
Wait 10
Next
For T=100 To 10 Step -2
Text 100,T,"GAME OVER"
If Mouse Click Then Goto INIZIO
Wait Vbl
Next
REP:
For T=10 To 187 Step 2
Text 100,T,"GAME OVER"
If Mouse Click Then Goto INIZIO
Wait Vbl
Next
For T=187 To 10 Step -2
Text 100,T,"GAME OVER"
If Mouse Click Then Goto INIZIO
Wait Vbl
Next
Goto REP
Repeat : Until Mouse Click
Goto INIZIO