home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1992-06-19 | 3.6 KB | 138 lines |
- Global ANTAL,SC,LIV,A$
- '
- Procedure BEGIN
- Screen Open 0,320,200,4,Lowres : Flash Off : Curs Off : Paper 0 : Hide
- Palette 0,$A0F
- Pen 1
- Cls 0
- Locate 0,7 : Centre ">>> Blob Attack <<<"
- Locate 0,8 : Centre "-------------------"
- Locate 0,10 : Centre " Written By "
- Locate 0,12 : Centre "The Silly Game Writer"
- Locate 0,14 : Centre "Niklas Konstenius"
- Locate 0,17 : Centre "Press fire to begin the game...."
- Copper On
- While Not Fire(1) : Wend
- End Proc
- '
- Procedure SET_UP
- Screen Open 0,320,200,4,Lowres : Flash Off : Curs Off : Paper 0 : Hide
- Palette $0,$F00,$F0,$50F : Cls
- Screen Open 1,320,8,2,Lowres : Flash Off : Curs Off : Paper 0
- Palette $509,$A0F
- Cls 0 : Print " SCORE: LIVES: BLOBS: ";
- Screen Open 2,320,8,2,Lowres : Flash Off : Curs Off : Paper 0 : Cls
- Palette $800,$F00
- Screen 0
- Screen Display 1,,255-208,,
- Screen Display 2,,255,,
- Screen To Front 2
- Screen To Front 1
- Erase 1
- Ink 3 : Bar 1,0 To 30,9 : Get Bob 0,1,0,0 To 32,10
- Cls : Ink 2 : Circle 7,7,6 : Plot 5,5,2 : Plot 9,5,2 : Ink 1 : Draw 3,7 To 7,10 : Draw To 12,7 : Get Bob 0,2,0,0 To 16,16 : Hot Spot 2,7,7
- Cls : Ink 1
- Reserve Zone 10
- For I=0 To 3
- Bar 88*I,150 To 88*I+55,199
- Set Zone 1+I,88*I,150 To 88*I+55,199
- Next I
- Double Buffer
- Bob 1,56,150,1
- End Proc
- '
- Procedure SET_AMAL_STRINGS
- A$=""
- A$=A$+" Let R2=X*64;"
- A$=A$+" Let R3=Y*64;"
- A$=A$+" Let R1=0;"
- A$=A$+"Start:"
- A$=A$+" Let R1=R1+6;"
- A$=A$+" Let R3=R1+R3;"
- A$=A$+" Let R2=R0+R2;"
- A$=A$+" If X>-1 Jump B;"
- A$=A$+" Let R2=0;"
- A$=A$+" Let R0=0-R0;"
- A$=A$+"B: If X<321 Jump C;"
- A$=A$+" Let R2=320*64;"
- A$=A$+" Let R0=0-R0;"
- A$=A$+"C: Let X=R2/64;"
- A$=A$+" Let Y=R3/64;"
- A$=A$+" Pause;"
- A$=A$+" Jump Start;"
- End Proc
- '
- Procedure RELEASE_BLOB
- X=Rnd(300)+10
- Y=Rnd(40)
- Repeat
- XV=Rnd(600)-300
- Until Abs(XV)>100
- Inc ANTAL
- Channel 1+ANTAL To Bob 1+ANTAL
- Bob ANTAL+1,X,Y,2
- Amal ANTAL+1,A$
- Amal On 1+ANTAL
- Amreg(ANTAL+1,0)=XV
- HEADER
- End Proc
- '
- Procedure HEADER
- S=Screen
- Screen 1
- Locate 34,0 : Print ANTAL;
- Locate 7,0 : Print Using "###";SC;
- Locate 20,0 : Print LIV;
- Screen S
- End Proc
- '
- '
- Randomize Timer
- Amal Off
- BEGIN
- SET_UP
- SET_AMAL_STRINGS
- Bob 1,88*XB+56,150,1
- K$="Y"
- While K$="Y"
- LIV=3 : SC=0 : ANTAL=0
- Repeat
- ANTAL=0
- HEADER
- Screen 2 : Cline : Centre "*** PRESS FIRE ***"
- Repeat : Until Fire(1) : Cline : Centre "OK, LET'S KEEP THE BLOBS AWAY..." : Screen 0
- RELEASE_BLOB
- MISS=0
- STUDS=0
- Repeat
- If Jleft(1) and STICK>5 and XB>0 Then Dec XB : Bob 1,XB*88+56,, : STICK=0
- If Jright(1) and STICK>5 and XB<2 Then Inc XB : Bob 1,XB*88+56,, : STICK=0
- For I=2 To ANTAL+1
- X=X Bob(I) : Y=Y Bob(I)
- If Zone(X-7,Y)<>0 or Zone(X+7,Y)<>0 Then Amreg(I,0)=-Amreg(I,0)
- If(Zone(X,Y+7)<>0) and Sgn(Amreg(I,1))=1 Then Amreg(I,1)=-Abs(Amreg(I,1))-6 : Inc STUDS
- If Bob Col(I,1 To 1) and Sgn(Amreg(I,1))=1
- Amreg(I,1)=-Amreg(I,1)-6 : Add SC,ANTAL : Bell
- Inc STUDS
- HEADER
- End If
- If Y>200 Then MISS=I-1
- Next I
- Inc STICK
- If STUDS/ANTAL>15 Then RELEASE_BLOB : STUDS=0
- Wait Vbl
- Until MISS>0
- Dec LIV
- For I=1 To ANTAL : Bob Off 1+I : Next I
- Boom
- Wait Vbl
- Until LIV<=0
- HEADER
- Screen 2 : Cline : Centre "*** GAME OVER ***" : Wait 150
- Cline : Centre "PLAY AGAIN? (Y/N)"
- Repeat : K$=Upper$(Inkey$) : Until(K$="Y") or(K$="N")
- Wend
- Default
- Curs On
- Copper Off
- Run "AmoNER004:AutoExec.Amos"