home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 551-575 / apd558 / amoner2 / gunner.amos / gunner.amosSourceCode
AMOS Source Code  |  1993-11-29  |  7KB  |  307 lines

  1. On Error Goto ERR_HANDLE
  2. If Length(10)=0 Then Load "gunner.abk"
  3. Global _STARTGAME
  4. Dim TABLE(10),TABLE$(10)
  5. For I=0 To 3
  6.    Read TABLE(I),TABLE$(I)
  7. Next 
  8. Data 1000,"PAD",90,"HTD",80,"PHD",70,"SHM"
  9. 'HISCORE[200]
  10. Screen Close 0
  11. Unpack 6 To 1
  12. Led Off 
  13. Music 1
  14. Do 
  15.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  16.    CHECKKEY
  17.    Fade 3,0,0,0,0,0,0,0,0,0,0,0,0,$FFF,0,0,0
  18.    CHECKKEY
  19.    Fade 3,0,0,0,0,0,0,0,0,0,0,0,0,$F00,$FFF,0,0
  20.    CHECKKEY
  21.    Fade 3,0,0,0,0,0,0,0,0,0,0,0,0,$F00,$F00,$FFF,0
  22.    CHECKKEY
  23.    Fade 3,0,0,0,0,0,0,0,0,0,0,0,0,$F00,$F00,$F00,$FFF
  24.    CHECKKEY
  25.    Fade 5,0,$111,$222,$333,$444,$555,$666,$777,$888,$999,$AAA,$BBB,$F00,$F00,$F00,$FFF
  26.    CHECKKEY
  27.    _SHISCORE
  28.    DY=-10 : Y=2*Y Hard(0)
  29.    Do 
  30.       Screen Display 1,,Y/2,,
  31.       Add Y,DY : Add DY,1
  32.       Exit If Y>700
  33.       Wait Vbl 
  34.    Loop 
  35.    Screen Close 1
  36.    GAME[1]
  37.    If _STARTGAME
  38.       Music Off 
  39.       GAME[0] : P=Param : HISCORE[P]
  40.       Music 1
  41.       Screen Close 1
  42.       Unpack 6 To 1
  43.    End If 
  44. Loop 
  45. Procedure GAME[DEMO]
  46.    _STARTGAME=0
  47.    Shared SCORE,NPLANES
  48.    '
  49.    If DEMO Then DEMOFUSE=200
  50.    '
  51.    Make Mask 
  52.    NSHOTS=40
  53.    Screen Open 1,320,50,8,Lowres
  54.    Flash Off 
  55.    Screen Display 1,,222,,
  56.    Curs Off 
  57.    Screen Open 0,320,171,4,Lowres
  58.    Colour Back $5
  59.    Paper 0 : Pen 1 : Ink 1 : Flash Off : Curs Off : Cls 0
  60.    Get Sprite Palette 
  61.    Dim X(NSHOTS),Y(NSHOTS),DX(NSHOTS),DY(NSHOTS),FUZ(NSHOTS)
  62.    Dim S(256),C(256)
  63.    Limit Mouse 0,0 To 255,0
  64.    '
  65.    Degree 
  66.    For I=0 To 256
  67.       S(I)=220*Sin(I/1.42222)
  68.       C(I)=-220*Cos(I/1.42222)
  69.    Next 
  70.    '
  71.    X=X Mouse
  72.    SCORE=0 : HP=5 : Ink 2
  73.    Draw 160,170 To 160+C(X)/40,170-S(X)/40
  74.    Plot 160+C(X)/4,170-S(X)/4
  75.    X(0)=0 : Y(0)=0
  76.    Set Bob 1,1,,
  77.    Bob Update Off 
  78.    '
  79.    PLANEX=9999 : NPLANES=0
  80.    Do 
  81.       If DEMO
  82.          Dec DEMOFUSE
  83.          If DEMOFUSE=0
  84.             Unpack 6 To 1
  85.             'Fade 5,0,$111,$222,$333,$444,$555,$666,$777,$888,$999,$AAA,$BBB,$F00,$F00,$F00,$FFF 
  86.             Pop Proc
  87.          End If 
  88.       End If 
  89.       '
  90.       Exit If NPLANES>20
  91.       If PLANEX=9999
  92.          BM=0 : HP=5
  93.          If Rnd(5)=0
  94.             Inc NPLANES
  95.             SCOREUP
  96.             PLANEY=Rnd(120)
  97.             DPLANEX=Rnd(1)*6-3
  98.             If DPLANEX<0
  99.                ABASE=12
  100.                PLANEX=360
  101.             Else 
  102.                ABASE=0
  103.                PLANEX=-100
  104.             End If 
  105.          End If 
  106.       Else 
  107.          Add PLANEX,DPLANEX
  108.          If(PLANEX>400) or(PLANEX<-100)
  109.             PLANEX=9999 : DPLANEX=0
  110.          End If 
  111.       End If 
  112.       '
  113.       Add DI,1,0 To 1
  114.       If BM
  115.          Add IMAGE,DI
  116.          If IMAGE=13
  117.             IMAGE=9
  118.          End If 
  119.       Else 
  120.          Add IMAGE,DI,1 To 3
  121.       End If 
  122.       Bob 1,PLANEX,PLANEY,ABASE+IMAGE
  123.       Bob Update 
  124.       '
  125.       If DEMO=0
  126.          XM=X Mouse
  127.          MK=Mouse Key
  128.       Else 
  129.          XM=Peek(DEMOFUSE+Start(10))
  130.          MK=-1
  131.          If Mouse Key
  132.             _STARTGAME=True
  133.             Pop Proc
  134.          End If 
  135.       End If 
  136.       If X<>XM
  137.          Ink 0
  138.          Draw 160,170 To 160+C(X)/40,170-S(X)/40
  139.          Plot 160+C(X)/4,170-S(X)/4
  140.          X=XM
  141.          Ink 2
  142.          Draw 160,170 To 160+C(X)/40,170-S(X)/40
  143.          Plot 160+C(X)/4,170-S(X)/4
  144.       End If 
  145.       Add J,1,0 To 1
  146.       YN$=Inkey$ : 
  147.       If YN$=Chr$(27)
  148.         Screen Close 1
  149.         Change Mouse 1
  150.         Show On 
  151.         Limit Mouse 
  152.         Default 
  153.         Run "Autoexec.Amos"
  154.       End If 
  155.       If MK
  156.          If DEMO=0
  157.             Shoot 
  158.          End If 
  159.          If J
  160.             Add II,1,0 To NSHOTS
  161.             Dec SCORE
  162.             SCOREUP
  163.             FUZ(II)=NSHOTS*2
  164.             X(II)=10240 : Y(II)=1
  165.             DX(II)=C(X+Rnd(1))
  166.             DY(II)=S(X+Rnd(1))
  167.          End If 
  168.       End If 
  169.       For I=0 To NSHOTS
  170.          Ink 0
  171.          X1=X(I) : Y1=Y(I) : Ror.l 6,X1 : Ror.l 6,Y1
  172.          If FUZ(I)
  173.             Plot X1 and 511,170-(Y1 and 511)
  174.          End If 
  175.          Add X(I),DX(I)
  176.          Add Y(I),DY(I)
  177.          Add DY(I),-2
  178.          If FUZ(I)
  179.             Dec FUZ(I)
  180.          End If 
  181.          Ink 3
  182.          X1=X(I) : Y1=Y(I) : Ror.l 6,X1 : Ror.l 6,Y1
  183.          If FUZ(I)
  184.             If(BM=0) and(Point(X1 and 511,170-(Y1 and 511))=1)
  185.                Dec HP
  186.                Add SCORE,20
  187.                SCOREUP
  188.                FUZ(I)=0
  189.                If HP=0
  190.                   If DEMO=0
  191.                      Boom 
  192.                   End If 
  193.                   BM=1 : IMAGE=3
  194.                   Add SCORE,200
  195.                   SCOREUP
  196.                End If 
  197.             End If 
  198.             Plot X1 and 511,170-(Y1 and 511)
  199.          End If 
  200.       Next 
  201.       '
  202.       Wait Vbl 
  203.    Loop 
  204.    Screen 1
  205.    Curs Off : Cls 0
  206.    Home : Print : Centre Border$("FINAL SCORE:"+Str$(SCORE),2)
  207.    Do 
  208.       Exit If Inkey$<>""
  209.       Exit If Mouse Click
  210.       Exit If Fire(1)
  211.    Loop 
  212. End Proc[SCORE]
  213. Procedure SCOREUP
  214.    Shared SCORE,NPLANES
  215.    Screen 1 : Home : Print 
  216.    Centre "   "+Str$(SCORE)+"/"+Str$(NPLANES)+"   "
  217.    Screen 0
  218. End Proc
  219. Procedure CHECKKEY
  220.    For I=1 To 15
  221.       YN$=Inkey$
  222.       If YN$=Chr$(27)
  223.         Default 
  224.         Run "Autoexec.Amos"
  225.       End If 
  226.       If Mouse Key
  227.          Music Off 
  228.          GAME[0] : P=Param : HISCORE[P]
  229.          Music 1
  230.          Screen Close 1
  231.          Unpack 6 To 1
  232.          'Fade 1,0,$111,$222,$333,$444,$555,$666,$777,$888,$999,$AAA,$BBB,$F00,$F00,$F00,$FFF 
  233.          Pop Proc
  234.       End If 
  235.       Wait 10
  236.    Next 
  237. End Proc
  238. Procedure HISCORE[S]
  239.    Shared TABLE(),TABLE$()
  240.    If S<TABLE(9) Then Pop Proc
  241.    For I=0 To 9
  242.       Exit If TABLE(I)<S
  243.    Next 
  244.    For J=9 To I+1 Step -1
  245.       TABLE(J)=TABLE(J-1)
  246.       TABLE$(J)=TABLE$(J-1)
  247.    Next 
  248.    TABLE(I)=S
  249.    Screen Open 0,320,200,8,Lowres : Paper 0 : Pen 1 : Cls 
  250.    Flash Off 
  251.    Palette 0,0,0,0,0,0,0,0
  252.    Fade 10,0,$FFF,$F00,$F80,$FF0,$F0,$33F,$A0A
  253.    Data 1,2,3,3,4,4,5,5,6,7
  254.    Paper 6
  255.    Print : Centre Border$("Top Iraqis",2) : Paper 0
  256.    For J=0 To 9
  257.       Read P : Pen P
  258.       If J<>I
  259.          Locate 13,J*2+4
  260.          Print Using "######";TABLE(J);"   ";TABLE$(J)
  261.       Else 
  262.          PP=P
  263.       End If 
  264.    Next 
  265.    Locate 13,I*2+4 : Pen PP
  266.    Print Using "######";TABLE(I);"   ";
  267.    Repeat : A$=Inkey$ : Until A$>" " : Print Upper$(A$);
  268.    Repeat : B$=Inkey$ : Until B$>" " : Print Upper$(B$);
  269.    Repeat : C$=Inkey$ : Until C$>" " : Print Upper$(C$);
  270.    TABLE$(I)=A$+B$+C$
  271.    DY=-10 : Y=2*Y Hard(0)
  272.    Do 
  273.       Screen Display 0,,Y/2,,
  274.       Add Y,DY : Add DY,1
  275.       Exit If Y>700
  276.       Wait Vbl 
  277.    Loop 
  278.    Screen Close 0
  279. End Proc
  280. '
  281. Procedure _SHISCORE
  282.    Shared TABLE(),TABLE$()
  283.    Screen Open 0,320,200,8,Lowres : Paper 0 : Pen 1 : Cls : Flash Off 
  284.    Palette 0,0,0,0,0,0,0,0
  285.    Fade 10,0,$FFF,$F00,$F80,$FF0,$F0,$33F,$A0A
  286.    Data 1,2,3,3,4,4,5,5,6,7
  287.    Paper 6
  288.    Print : Centre Border$("Top Iraqis",2) : Paper 0
  289.    For J=0 To 9
  290.       Read P : Pen P
  291.       Locate 13,J*2+4
  292.       Print Using "######";TABLE(J);"   ";TABLE$(J)
  293.    Next 
  294.    CHECKKEY
  295.    DY=-10 : Y=2*Y Hard(0)
  296.    Do 
  297.       Screen Display 0,,Y/2,,
  298.       Add Y,DY : Add DY,1
  299.       Exit If Y>700
  300.       Wait Vbl 
  301.    Loop 
  302.    Screen Close 0
  303. End Proc
  304. ERR_HANDLE:
  305.   Resume FINITO
  306. FINITO:
  307.   Run "Autoexec.Amos"