home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 601-625 / apd619 / fantasy / fantasy.amos / fantasy.amosSourceCode < prev    next >
AMOS Source Code  |  1992-12-27  |  9KB  |  441 lines

  1. Rem new
  2. Dim MOV(4)
  3. Global MOV(),_INTER,USATI,LEVEL,RESTANO,OVER,ENERGIA,PUNTI,BOMBE,_COLPI
  4. Global SCHERMO,PROSSIMO,_COLPITI,BOMBEUSATE,_COLPIUSATI
  5. Global FAT,NECESSARI,_TEMPOFISSI,VELOCITASLI
  6. INIZIO:
  7. Default 
  8. RESET
  9. _INTRO
  10. '
  11. '
  12. LOOOP:
  13. RESETLEVEL
  14. SCHERMO
  15. _BOBSOTTO
  16. PUNTEGGIO
  17. CARICHE
  18. PRESENTALIVELLO
  19. '
  20. Do 
  21.    CONTROLLOARRIVO
  22.    If Key State(69) Then End 
  23.    If Key State(25) Then PAUSE
  24.    If RESTANO=3 and FAT=0 Then _3MORE : FAT=1
  25.    If RESTANO=<0 Then FINELIVELLO
  26.    If PROSSIMO=1 Then Goto LOOOP
  27.    If OVER=1 Then Goto FINE
  28.    If Mouse Key=1 and Timer>_INTER Then Timer=0 : SPARO
  29.    If Mouse Click=2 Then BOMBA
  30.    K=Rnd(2600)
  31.    If K=7 or K=8 or K=9 Then METTIMOVIMENTO
  32.    If K<5 Then METTIFISSO
  33.    If K=5 or K=6 Then RISERVA
  34. Loop 
  35. '
  36. '
  37. '
  38. '
  39. Procedure PUNTEGGIO
  40.    Inc _COLPITI
  41.    Dim S(9)
  42.    R$=Str$(PUNTI)-" "
  43.    V=Len(R$)
  44.    For T=1 To V
  45.       S(T)=Val(Mid$(R$,V-T+1,1))
  46.    Next 
  47.    L=60
  48.    For T=20 To 25
  49.       Bob T,L,0,S(T-19)+30
  50.       L=L-10
  51.    Next 
  52. End Proc
  53. Procedure CARICHE
  54.    Screen 1
  55.    If BOMBE>9 Then BOMBE=9
  56.    If _COLPI>999 Then _COLPI=999
  57.    Bob 28,40,24,BOMBE+30
  58.    If _COLPI<1 Then _COLPI=1 : _INTER=50
  59.    S=_COLPI/100
  60.    Bob 26,140,24,S+30
  61.    Bob 27,150,24,30+(_COLPI/10)-(S*10)
  62.    Screen 0
  63. End Proc
  64. Procedure ENERGIA
  65.    Screen 1
  66.    ENERGIA=ENERGIA-2
  67.    Ink 7
  68.    F=(ENERGIA)+251
  69.    Box F,31 To F+1,41
  70.    If ENERGIA=<0 Then OVER=1
  71.    Screen 0
  72. End Proc
  73. Procedure SPARO
  74.    Inc _COLPIUSATI
  75.    Dec _COLPI
  76.    Shoot 
  77.    If Y Mouse>218 Then Pop Proc
  78.    If Not(_COLPI+1)/10=_COLPI/10 Then CARICHE
  79.    If Spritebob Col(8,1 To 14)
  80.       For T=1 To 8
  81.          If Col(T)
  82.             Dec RESTANO
  83.             Amal Off T
  84.             Bob T,,190,
  85.             Inc PUNTI : PUNTEGGIO
  86.             Exit 
  87.          End If 
  88.       Next 
  89.       If Col(9)
  90.          Sam Play 1
  91.          Amal Off 9
  92.          Bob 9,,190,
  93.          Add _COLPI,10 : CARICHE
  94.          _INTER=3
  95.       End If 
  96.       If Col(10)
  97.          Sam Play 2
  98.          Amal Off 10
  99.          Bob 10,,190,
  100.          Inc BOMBE
  101.          CARICHE
  102.       End If 
  103.       For T=11 To 14
  104.          If Col(T)
  105.             Sam Play 14
  106.             Dec MOV(T-10)
  107.             If MOV(T-10)=0
  108.                Amal Off T
  109.                Bob T,340,,1
  110.                Add PUNTI,5 : PUNTEGGIO : Dec RESTANO
  111.             End If 
  112.          End If 
  113.       Next 
  114.    End If 
  115. End Proc
  116. Procedure BOMBA
  117.    Bob Off 29
  118.    If BOMBE=0 Then Pop Proc
  119.    Inc BOMBEUSATE
  120.    Channel 15 To Screen Display 0
  121.    Amal 15,"For R4=1 To 30; M 2,0,1;M 0,2,1;M -2,0,1;M 0,-2,1 ; NR4"
  122.    Amal On 15
  123.    Fade 2,$F00
  124.    Dec BOMBE
  125.    For T=1 To 20
  126.       Boom 
  127.    Next 
  128.    For T=1 To 8
  129.       If Y Bob(T)<190
  130.          Inc PUNTI : Dec RESTANO
  131.          Amal Off T
  132.          Bob T,,190,
  133.       End If 
  134.    Next 
  135.    If Y Bob(9)<190
  136.       Amal Off 9
  137.       Bob 9,,190,
  138.       Add _COLPI,10
  139.    End If 
  140.    If Y Bob(10)<190
  141.       Amal Off 10
  142.       Bob 10,,190,
  143.       Inc BOMBE
  144.    End If 
  145.    For T=11 To 14
  146.       If X Bob(T)<340
  147.          Add PUNTI,5 : Dec RESTANO
  148.          Amal Off T
  149.          Bob T,340,,1
  150.       End If 
  151.    Next 
  152.    CARICHE
  153.    PUNTEGGIO
  154.    Wait 20
  155.    Fade 3,$0
  156.    For T=1 To 3
  157.       Wait 25
  158.       Fade 3,$F00
  159.       Wait 30
  160.       Fade 3,$0
  161.    Next 
  162.    Amal Off 15
  163. End Proc
  164. Procedure RESET
  165.    _INTER=3
  166.    LEVEL=0
  167.    OVER=0
  168.    PUNTI=0
  169.    _COLPI=130
  170.    BOMBE=2
  171.    ENERGIA=50
  172. End Proc
  173. Procedure SCHERMO
  174.    Unpack 6+SCHERMO To 0
  175.    Paste Bob 10,215,11
  176.    Paste Bob 110,215,12
  177.    Ink 31 : Bar 250,220 To 300,230
  178.    Ink 0 : Box 249,219 To 301,231
  179.    Screen Open 1,320,60,32,Lowres
  180.    Screen Display 1,,233,,
  181.    Flash Off 
  182.    Screen 0
  183.    Dim R(32)
  184.    For T=0 To 31
  185.       R(T)=Colour(T)
  186.    Next 
  187.    Screen 1
  188.    For T=0 To 31
  189.       Colour T,R(T)
  190.    Next 
  191.    Screen Copy 0,0,189,320,245 To 1,0,0
  192.    Screen 1
  193.    Get Icon 1,39,23 To 71,44
  194.    Get Icon 2,135,22 To 167,43
  195.    Double Buffer 
  196.    Screen 0
  197.    Double Buffer 
  198.    Limit Mouse 124,39 To 424,273
  199.    Hide On 
  200.    Make Mask 
  201.    Channel 0 To Sprite 8
  202.    Sprite 8,X Mouse,Y Mouse,20
  203.    Amal 0,"L: LX=XM ; LY=YM ; JL "
  204.    Amal On 0
  205.    Screen 1
  206.    If ENERGIA<50
  207.       Ink 7
  208.       F=(ENERGIA)+251
  209.       Bar F,31 To 300,41
  210.    End If 
  211.    Screen 0
  212. End Proc
  213. Procedure _3MORE
  214.    Bell 60
  215.    Channel 15 To Bob 29
  216.    Bob 29,100,-10,13
  217.    Amal 15,"Move 0,270,80"
  218.    Amal On 15
  219. End Proc
  220. Procedure _BOBSOTTO
  221.    '1-8 nemici fermi
  222.    '9-10 munizioni proiettili-bombe 
  223.    '11-14 alieno che cammina
  224.    For T=1 To 14
  225.       Channel T To Bob T
  226.    Next 
  227.    For T=1 To 8
  228.       Bob T,100,190,6
  229.    Next 
  230.    Bob 9,100,190,12
  231.    Bob 10,100,190,11
  232.    For T=11 To 14
  233.       Bob T,340,141,1
  234.    Next 
  235. End Proc
  236. Procedure METTIFISSO
  237.    W=0
  238.    For T=1 To 8
  239.       If Y Bob(T)=190 Then W=T : Exit 
  240.    Next 
  241.    If W=0 Then Pop Proc
  242.    Bob W,Rnd(270)+10,,Rnd(4)+6
  243.    ER$=Str$(_TEMPOFISSI)
  244.    Amal W,"Move 0,-31,15 ; F R1=1 To "+ER$+" ; N R1 ; Move 0,31,15 ; Let RB=1"
  245.    Amal On W
  246. End Proc
  247. Procedure RISERVA
  248.    T=Rnd(12)
  249.    If T<1 Then Pop Proc
  250.    If T>4 Then E=9 Else E=10
  251.    If Y Bob(E)<190 Then Pop Proc
  252.    Bob E,Rnd(280)+10,-15,
  253.    Amal E,"Move 0,206,150"
  254.    Amal On E
  255. End Proc
  256. Procedure METTIMOVIMENTO
  257.    W=0
  258.    For T=11 To 14
  259.       If X Bob(T)=340 Then W=T : Exit 
  260.    Next 
  261.    If W=0 Then Pop Proc
  262.    ER$=Str$(VELOCITASLI)
  263.    If Rnd(3)>1
  264.       ERFD$="Anim 0,(1,5)(2,5)(3,5)(4,5)(5,5) ; Move -370,0,"+ER$+" ; Let X=340"
  265.       ERFD$=ERFD$+"; Let RA=1"
  266.    Else 
  267.       ERFD$="Let X=0 ; A 0,($8001,5)($8002,5)($8003,5)($8004,5)($8005,5) ; "
  268.       ERFD$=ERFD$+"Move 370,0,"+ER$+" ; Anim 1,(1,1) ; Let X=340 ; Let RA=1"
  269.    End If 
  270.    MOV(W-10)=NECESSARI
  271.    Amal W,ERFD$
  272.    Amal On W
  273. End Proc
  274. Procedure CONTROLLOARRIVO
  275.    If Amreg(0)=1
  276.       Amreg(0)=0
  277.       ENERGIA
  278.    End If 
  279.    If Amreg(1)=1
  280.       Amreg(1)=0
  281.       ENERGIA
  282.    End If 
  283. End Proc
  284. Procedure FINELIVELLO
  285.    _COLPITI2=_COLPITI
  286.    For T=1 To 19
  287.       Bob Off T
  288.    Next 
  289.    For L=59 To 0 Step -1
  290.       Play 96-(20+(L/2)),0
  291.       Wait 1
  292.    Next L
  293.    Colour 29,$EEE
  294.    Screen 1
  295.    Colour 29,$0
  296.    Screen 0
  297.    Fade 15 To 1
  298.    Ink 29
  299.    Y=50
  300.    For T=50 To 125
  301.       Inc Y
  302.       Box T,Y To 300-T,210-Y
  303.    Next 
  304.    Ink 5,29
  305.    Text 100,39,"LEVEL"+Str$(LEVEL) : Sam Play 10 : Wait 20
  306.    _TOS=LEVEL*10 : Gosub _TOS
  307.    Wait 10
  308.    Sam Play 10 : Text 60,69,"COLPITI:"+Str$(_COLPITI2) : Wait 20
  309.    _TOS=_COLPITI2 : Gosub _TOS
  310.    Wait 20
  311.    Sam Play 10 : Text 60,89,"BOMBE USATE:"+Str$(BOMBEUSATE)
  312.    Wait 20
  313.    Sam Play 10 : Text 60,109,"COLPI USATI:"+Str$(_COLPIUSATI)
  314.    Wait 20
  315.    Sam Play 10
  316.    If _COLPIUSATI>0
  317.       MED=(_COLPITI2*100)/_COLPIUSATI
  318.       Text 60,129,"MEDIA:"+Str$(MED)+"%"
  319.       _TOS=MED : Gosub _TOS
  320.    End If 
  321.    Repeat 
  322.    Until Mouse Click
  323.    PROSSIMO=1
  324.    Pop Proc
  325.    _TOS:
  326.    For T=1 To 100+MED
  327.       Inc PUNTI
  328.       Bell 80
  329.       PUNTEGGIO
  330.       Wait Vbl 
  331.    Next 
  332.    Return 
  333. End Proc
  334. Procedure RESETLEVEL
  335.    Add _COLPI,10
  336.    Clear Key 
  337.    PROSSIMO=0
  338.    Inc LEVEL
  339.    VELOCITASLI=200-(LEVEL*4)
  340.    _TEMPOFISSI=100-((LEVEL/2)*4)
  341.    If _TEMPOFISSI<30 Then Tempo FISSI=30
  342.    NECESSARI=4+(LEVEL/4)
  343.    SCHERMO=(LEVEL-1)/3
  344.    If SCHERMO>3 Then SCHERMO=3
  345.    RESTANO=10+(10*LEVEL) : FAT=0
  346.    _COLPIUSATI=0 : BOMBEUSATE=0 : _COLPITI=0
  347.    For T=1 To 4
  348.       MOV(T)=0
  349.    Next 
  350. End Proc
  351. Procedure PAUSE
  352.    X=X Mouse
  353.    Y=Y Mouse
  354.    Amal Freeze 
  355.    Dim C(31)
  356.    For T=0 To 31
  357.       C(T)=Colour(T)
  358.    Next 
  359.    Fade 10
  360.    Clear Key 
  361.    Wait Key 
  362.    X Mouse=X : Y Mouse=Y
  363.    Fade 6 To 1
  364.    Wait 100
  365.    Amal On 
  366. End Proc
  367. Procedure PRESENTALIVELLO
  368.    Screen Open 3,320,104,4,Lowres
  369.    Screen Open 2,320,104,4,Lowres
  370.    Screen 2
  371.    Channel 15 To Screen Display 2
  372.    Amal 15,"Loop: Move 0,130,70 ; Move 0,-130,70 ; JL"
  373.    For T=2 To 3
  374.       Screen T
  375.       Colour 0,0
  376.       Colour 1,$CC
  377.       Colour 2,$C00
  378.    Next 
  379.    Screen 2
  380.    Cls 1
  381.    Ink 2
  382.    For T=4 To 320 Step 4
  383.       Draw T,0 To T,104
  384.    Next 
  385.    Screen 3
  386.    Ink 2,0
  387.    LUP$="LEVEL:"+Str$(LEVEL)
  388.    If LEVEL>9 Then LUP$=LUP$-" "
  389.    Text 100,50,LUP$
  390.    Zoom 3,100,44,163,51 To 2,20,20,300,80
  391.    Screen Close 3
  392.    Screen 2
  393.    Amal On 15
  394.    Repeat : Play 55,5 : Exit If Mouse Click : Play 65,5 : Until Mouse Click
  395.    Amal Off 15
  396.    Screen Close 2
  397.    Screen 0
  398.    Wait 20
  399. End Proc
  400. Procedure _INTRO
  401.    Unpack 10 To 0
  402.    Unpack 13 To 1
  403.    Screen Display 1,,270,,
  404.    Wait Vbl 
  405.    Channel 15 To Screen Offset 1
  406.    Amal 15,"Loop: Let X=0  ; Move 600,0,250 ; Move -600,0,250 ; J Loop"
  407.    Amal On 15
  408.    Repeat : Until Mouse Click
  409.    Amal Off 
  410.    Screen Close 1
  411. End Proc
  412. '
  413. '
  414. '
  415. FINE:
  416. Autoback 1
  417. Ink 5,0
  418. Text 100,100,"GAME OVER"
  419. For T=1 To 4
  420.    Bell 20
  421.    Wait 10
  422. Next 
  423. For T=100 To 10 Step -2
  424.    Text 100,T,"GAME OVER"
  425.    If Mouse Click Then Goto INIZIO
  426.    Wait Vbl 
  427. Next 
  428. REP:
  429. For T=10 To 187 Step 2
  430.    Text 100,T,"GAME OVER"
  431.    If Mouse Click Then Goto INIZIO
  432.    Wait Vbl 
  433. Next 
  434. For T=187 To 10 Step -2
  435.    Text 100,T,"GAME OVER"
  436.    If Mouse Click Then Goto INIZIO
  437.    Wait Vbl 
  438. Next 
  439. Goto REP
  440. Repeat : Until Mouse Click
  441. Goto INIZIO