home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / misc / amoner04.dms / amoner04.adf / Blobs.AMOS / Blobs.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1992-06-19  |  3.6 KB  |  138 lines

  1. Global ANTAL,SC,LIV,A$
  2. '
  3. Procedure BEGIN
  4.    Screen Open 0,320,200,4,Lowres : Flash Off : Curs Off : Paper 0 : Hide 
  5.    Palette 0,$A0F
  6.    Pen 1
  7.    Cls 0
  8.    Locate 0,7 : Centre ">>> Blob Attack <<<"
  9.    Locate 0,8 : Centre "-------------------"
  10.    Locate 0,10 : Centre "   Written By   "
  11.    Locate 0,12 : Centre "The Silly Game Writer"
  12.    Locate 0,14 : Centre "Niklas Konstenius"
  13.    Locate 0,17 : Centre "Press fire to begin the game...."
  14.    Copper On 
  15.    While Not Fire(1) : Wend 
  16. End Proc
  17. '
  18. Procedure SET_UP
  19.    Screen Open 0,320,200,4,Lowres : Flash Off : Curs Off : Paper 0 : Hide 
  20.    Palette $0,$F00,$F0,$50F : Cls 
  21.    Screen Open 1,320,8,2,Lowres : Flash Off : Curs Off : Paper 0
  22.    Palette $509,$A0F
  23.    Cls 0 : Print " SCORE:       LIVES:       BLOBS:  ";
  24.    Screen Open 2,320,8,2,Lowres : Flash Off : Curs Off : Paper 0 : Cls 
  25.    Palette $800,$F00
  26.    Screen 0
  27.    Screen Display 1,,255-208,,
  28.    Screen Display 2,,255,,
  29.    Screen To Front 2
  30.    Screen To Front 1
  31.    Erase 1
  32.    Ink 3 : Bar 1,0 To 30,9 : Get Bob 0,1,0,0 To 32,10
  33.    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
  34.    Cls : Ink 1
  35.    Reserve Zone 10
  36.    For I=0 To 3
  37.       Bar 88*I,150 To 88*I+55,199
  38.       Set Zone 1+I,88*I,150 To 88*I+55,199
  39.    Next I
  40.    Double Buffer 
  41.    Bob 1,56,150,1
  42. End Proc
  43. '
  44. Procedure SET_AMAL_STRINGS
  45.    A$=""
  46.    A$=A$+"   Let R2=X*64;"
  47.    A$=A$+"   Let R3=Y*64;"
  48.    A$=A$+"   Let R1=0;"
  49.    A$=A$+"Start:"
  50.    A$=A$+"   Let R1=R1+6;"
  51.    A$=A$+"   Let R3=R1+R3;"
  52.    A$=A$+"   Let R2=R0+R2;"
  53.    A$=A$+"   If X>-1 Jump B;"
  54.    A$=A$+"     Let R2=0;"
  55.    A$=A$+"     Let R0=0-R0;"
  56.    A$=A$+"B: If X<321 Jump C;"
  57.    A$=A$+"     Let R2=320*64;"
  58.    A$=A$+"     Let R0=0-R0;"
  59.    A$=A$+"C: Let X=R2/64;"
  60.    A$=A$+"   Let Y=R3/64;"
  61.    A$=A$+"   Pause;"
  62.    A$=A$+"   Jump Start;"
  63. End Proc
  64. '
  65. Procedure RELEASE_BLOB
  66.    X=Rnd(300)+10
  67.    Y=Rnd(40)
  68.    Repeat 
  69.       XV=Rnd(600)-300
  70.    Until Abs(XV)>100
  71.    Inc ANTAL
  72.    Channel 1+ANTAL To Bob 1+ANTAL
  73.    Bob ANTAL+1,X,Y,2
  74.    Amal ANTAL+1,A$
  75.    Amal On 1+ANTAL
  76.    Amreg(ANTAL+1,0)=XV
  77.    HEADER
  78. End Proc
  79. '
  80. Procedure HEADER
  81.    S=Screen
  82.    Screen 1
  83.    Locate 34,0 : Print ANTAL;
  84.    Locate 7,0 : Print Using "###";SC;
  85.    Locate 20,0 : Print LIV;
  86.    Screen S
  87. End Proc
  88. '
  89. '
  90. Randomize Timer
  91. Amal Off 
  92. BEGIN
  93. SET_UP
  94. SET_AMAL_STRINGS
  95. Bob 1,88*XB+56,150,1
  96. K$="Y"
  97. While K$="Y"
  98.    LIV=3 : SC=0 : ANTAL=0
  99.    Repeat 
  100.       ANTAL=0
  101.       HEADER
  102.       Screen 2 : Cline : Centre "***  PRESS FIRE  ***"
  103.       Repeat : Until Fire(1) : Cline : Centre "OK, LET'S KEEP THE BLOBS AWAY..." : Screen 0
  104.       RELEASE_BLOB
  105.       MISS=0
  106.       STUDS=0
  107.       Repeat 
  108.          If Jleft(1) and STICK>5 and XB>0 Then Dec XB : Bob 1,XB*88+56,, : STICK=0
  109.          If Jright(1) and STICK>5 and XB<2 Then Inc XB : Bob 1,XB*88+56,, : STICK=0
  110.          For I=2 To ANTAL+1
  111.             X=X Bob(I) : Y=Y Bob(I)
  112.             If Zone(X-7,Y)<>0 or Zone(X+7,Y)<>0 Then Amreg(I,0)=-Amreg(I,0)
  113.             If(Zone(X,Y+7)<>0) and Sgn(Amreg(I,1))=1 Then Amreg(I,1)=-Abs(Amreg(I,1))-6 : Inc STUDS
  114.             If Bob Col(I,1 To 1) and Sgn(Amreg(I,1))=1
  115.                Amreg(I,1)=-Amreg(I,1)-6 : Add SC,ANTAL : Bell 
  116.                Inc STUDS
  117.                HEADER
  118.             End If 
  119.             If Y>200 Then MISS=I-1
  120.          Next I
  121.          Inc STICK
  122.          If STUDS/ANTAL>15 Then RELEASE_BLOB : STUDS=0
  123.          Wait Vbl 
  124.       Until MISS>0
  125.       Dec LIV
  126.       For I=1 To ANTAL : Bob Off 1+I : Next I
  127.       Boom 
  128.       Wait Vbl 
  129.    Until LIV<=0
  130.    HEADER
  131.    Screen 2 : Cline : Centre "***  GAME OVER  ***" : Wait 150
  132.    Cline : Centre "PLAY AGAIN? (Y/N)"
  133.    Repeat : K$=Upper$(Inkey$) : Until(K$="Y") or(K$="N")
  134. Wend 
  135. Default 
  136. Curs On 
  137. Copper Off 
  138. Run "AmoNER004:AutoExec.Amos"