home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / games / super2.amos / super2.amosSourceCode < prev   
AMOS Source Code  |  1992-12-27  |  10KB  |  445 lines

  1. Hide 
  2. Unpack 11 To 0
  3. Repeat : Until Fire(1) or Key Shift=2
  4. Dim SCORE(9)
  5. Dim NOME$(9)
  6. Default 
  7. Make Mask 
  8. Sprite 1,200,100,1
  9. Wait Vbl 
  10. Bob 1,56,50,1
  11. Wait Vbl 
  12. Print Spritebob Col(1)
  13. Wait Vbl 
  14. Global FRANCESCA,CHIARA,SILVIA
  15. INIZIO:
  16. Clear Key 
  17. Bob Off : Sprite Off 
  18. Unpack 8 To 0
  19. INRO
  20. Unpack 6 To 0
  21. Screen Open 1,320,200,8,Lowres
  22. Screen 1 : Get Sprite Palette : Colour 1,$B0 : Cls 0
  23. Flash Off 
  24. Colour 3,$CC0
  25. Colour 9,$EEE
  26. Double Buffer 
  27. Wait Vbl 
  28. Dual Playfield 1,0
  29. Channel 10 To Screen Offset 0
  30. Amal 10,"Loop: For R0=0 To 80; Let X=R0*8; Next R0; Jump Loop"
  31. Screen 1
  32. SHIP1$="Let X=200 ; Let Y=100 ; Anim 0,(1,2)(4,2) ; "
  33. INVI$="Anim 0,(1,4)(54,6) ; "
  34. SHIP$=" Begin:     Let R0=Joy1         ;"
  35. SHIP$=SHIP$+"            If X<130 Jump V     ;"
  36. SHIP$=SHIP$+"            If X>400 Jump Q     ;"
  37. SHIP$=SHIP$+" Xu:        If Y>220 Jump N     ;"
  38. SHIP$=SHIP$+"            If Y<70  Jump K     ;"
  39. SHIP$=SHIP$+" Checkfire: If R0&16 Jump Fire  ;"
  40. SHIP$=SHIP$+" Movement:  If R0=1  Jump Up    ;"
  41. SHIP$=SHIP$+"            If R0=2  Jump Down  ;"
  42. SHIP$=SHIP$+"            If R0=4  Jump Left  ;"
  43. SHIP$=SHIP$+"            If R0=8  Jump Right ;"
  44. SHIP$=SHIP$+"            If R0=5  Jump W     ;"
  45. SHIP$=SHIP$+"            If R0=9  Jump T     ;"
  46. SHIP$=SHIP$+"            If R0=6  Jump A     ;"
  47. SHIP$=SHIP$+"            If R0=10  Jump I    ;"
  48. SHIP$=SHIP$+" Jump Begin          ;"
  49. SHIP$=SHIP$+" Up:                 ; Move 0,-10,3  ; Jump Begin     ;"
  50. SHIP$=SHIP$+" Down:               ; Move 0,10,3   ; Jump Begin     ;"
  51. SHIP$=SHIP$+" Right:              ; Move 10,0,3   ; Jump Begin     ;"
  52. SHIP$=SHIP$+" Left:               ; Move -10,0,3  ; Jump Begin     ;"
  53. SHIP$=SHIP$+" W:              ; Move -7,-7,3      ; Jump Begin     ;"
  54. SHIP$=SHIP$+" T:              ; Move 7,-7,3       ; Jump Begin     ;"
  55. SHIP$=SHIP$+" A:              ; Move -7,7,3       ; Jump Begin     ;"
  56. SHIP$=SHIP$+" I:              ; Move 7,7,3        ; Jump Begin     ;"
  57. SHIP$=SHIP$+" Fire: Let R0=R0-16      ;           ; Jump Movement  ;"
  58. SHIP$=SHIP$+" V:    Let X=130                     ; Jump Xu        ;"
  59. SHIP$=SHIP$+" Q:    Let X=400                     ; Jump Xu        ;"
  60. SHIP$=SHIP$+" N:    Let Y=220                     ; Jump Checkfire ;"
  61. SHIP$=SHIP$+" K:    Let Y=70                      ; Jump Checkfire ;"
  62. SHIP1$=SHIP1$+SHIP$
  63. INVI$=INVI$+SHIP$
  64. SHIP$="Anim 0,(1,2)(4,2) ; "+SHIP$
  65. Hide 
  66. Get Fonts 
  67. For T=1 To 200
  68.    If Lower$(Left$(Font$(T)-" ",14))="courier.font24" Then Set Font T
  69. Next 
  70. Channel 1 To Sprite 1
  71. Channel 6 To Bob 6
  72. Ink 5,0
  73. Text 170,27,"Lives: 3"
  74. LIVES=3
  75. PIT=0
  76. LOOOP:
  77. Text 0,27,"Punti"
  78. Text 80,27,Mid$(Str$(PIT),2,Len(Str$(PIT))-1)
  79. For T=2 To 5
  80.    Channel T To Bob T
  81.    Bob T,-38,-40,30
  82. Next 
  83. For T=13 To 15
  84.    Channel T To Bob T
  85.    Bob T,440,200,27
  86. Next 
  87. Sprite 1,200,100,1
  88. TENDI
  89. Amal 1,SHIP1$
  90. Amal On 1
  91. STR=0
  92. PO=0
  93. MO=4
  94. Timer=0
  95. STE=0
  96. PASC=0
  97. Do 
  98.    Wait Vbl 
  99.    If STR>0 Then Dec STR
  100.    If STR=1 Then MO=5
  101.    If STE=1 Then Amal 1,SHIP$ : Amal On 1
  102.    If Timer>-20 Then Bob Off 35
  103.    If Key State(69) Then PASC=1
  104.    If Key Shift=4 Then PAUSE
  105.    If Key State(76) Then Sprite 1,,Y Sprite(1)-4,
  106.    If Key State(77) Then Sprite 1,,Y Sprite(1)+4,
  107.    If Key State(79) Then Sprite 1,X Sprite(1)-4,,
  108.    If Key State(78) Then Sprite 1,X Sprite(1)+4,,
  109.    If STE=0
  110.       If Spritebob Col(1,2 To 6) or PO=1 or PASC=1
  111.          ER$="Anim 1,"
  112.          For T=10 To 26
  113.             ER$=ER$+"("+Str$(T)+",2)"
  114.          Next 
  115.          For T=14 To 16
  116.             Bob Off T
  117.          Next 
  118.          Amal 1,ER$
  119.          Amal On 1
  120.          For T=1 To 10
  121.             Boom 
  122.          Next 
  123.          Wait 45
  124.          Bob Off 
  125.          If FRANCESCA=0 or PASC=1
  126.             Dec LIVES
  127.          End If 
  128.          If LIVES=0
  129.             Text 170,27,"Lives: "+Right$(Str$(LIVES),1)
  130.             Goto FINE
  131.          End If 
  132.          Text 170,27,"Lives: "+Right$(Str$(LIVES),1)
  133.          Wait 10
  134.          Goto LOOOP
  135.       End If 
  136.    Else 
  137.       Dec STE
  138.    End If 
  139.    For T=2 To 5
  140.       If Bob Col(T,13 To 15)
  141.          If Col(13)
  142.             Bob 13,340,,
  143.          End If 
  144.          If Col(14)
  145.             Bob 14,340,,
  146.          End If 
  147.          If Col(15)
  148.             Bob 15,340,,
  149.          End If 
  150.          Boom 
  151.          Amal T,"Anim 1,(22,2)(23,2)(23,2)(24,2)(25,2)(26,2) ; P P P P P P P P P P P P ; Move -370,0,5"
  152.          Amal On T
  153.          Inc PIT
  154.          Text 80,27,Mid$(Str$(PIT),2,Len(Str$(PIT))-1)
  155.          Exit 
  156.       End If 
  157.       S=X Bob(T)
  158.       If S<-36
  159.          METTIDRAGO[T]
  160.       Else 
  161.          SPAR[T]
  162.       End If 
  163.    Next 
  164.    For T=13 To 15
  165.       S=X Bob(T)
  166.       If S>329 and Timer>15 and(Fire(1) or Key Shift=2)
  167.          SPARO[T,MO]
  168.       End If 
  169.    Next 
  170.    If CONT=300 Then Bob Off 30
  171.    If CONT<300
  172.       If Spritebob Col(1,30 To 30)
  173.          Sam Play 1
  174.          T=I Bob(30)
  175.          If T=52
  176.             T=Rnd(7)+44
  177.          End If 
  178.          Bob 49,X Bob(30),Y Bob(30),T
  179.          Bob Off 30
  180.          Channel 11 To Bob 49
  181.          Amal 11,"Move 0,-200,25"
  182.          Amal On 11
  183.          If T=44
  184.             PO=1
  185.          End If 
  186.          If T=45
  187.             Bob 35,150,0,53
  188.             Timer=-400
  189.          End If 
  190.          If T=46
  191.             Add PIT,10
  192.             Text 80,27,Mid$(Str$(PIT),2,Len(Str$(PIT))-1)
  193.          End If 
  194.          If T=47
  195.             Inc LIVES
  196.             If LIVES=10
  197.                LIVES=9
  198.             End If 
  199.             Text 170,27,"Lives: "+Right$(Str$(LIVES),1)
  200.          End If 
  201.          If T=48
  202.             MO=2 : STR=700
  203.          End If 
  204.          If T=49
  205.             MO=7 : STR=700
  206.          End If 
  207.          If T=50
  208.             STE=750
  209.             Amal 1,INVI$
  210.             Amal On 1
  211.          End If 
  212.          If T=51
  213.             Sprite 1,Rnd(270)+130,Rnd(160)+60,
  214.          End If 
  215.       End If 
  216.       Inc CONT
  217.    Else 
  218.       If Rnd(3000)>2955
  219.          CONT=0
  220.          ZA=Rnd(8)+44
  221.          If SILVIA=1
  222.             If ZA=44
  223.                ZA=47
  224.             End If 
  225.             If ZA=45
  226.                ZA=46
  227.             End If 
  228.             If ZA=49
  229.                ZA=48
  230.             End If 
  231.             If ZA=51
  232.                ZA=50
  233.             End If 
  234.          Else 
  235.             If ZA=47
  236.                If Rnd(15)>4
  237.                   ZA=Rnd(6)+44
  238.                End If 
  239.             End If 
  240.          End If 
  241.          Bob 30,Rnd(220)+50,Rnd(140)+30,ZA
  242.       End If 
  243.    End If 
  244. Loop 
  245. Procedure METTIDRAGO[T]
  246.    If Rnd(300)>5 Then Pop Proc
  247.    R1=Rnd(185)
  248.    R2=50-Rnd(100)
  249.    If R1+R2<0 or R1+R2>185 Then R2=0
  250.    Bob T,315,R1,
  251.    Z$="Anim 0,(30,1)(31,1)(32,1)(33,1)(34,1)(35,1)(36,1)(37,1)(38,1) ; "
  252.    Z$=Z$+"Move -360,"+Str$(R2)+",70"
  253.    Amal T,Z$
  254.    Amal On T
  255. End Proc
  256. Procedure SPARO[T,MO]
  257.    Timer=0
  258.    Sam Play 3
  259.    K=X Sprite(1)-120
  260.    Bob T,K,Y Sprite(1)-40,27
  261.    Amal T,"Move 325,0,"+Str$(MO*10)+" ; Let X=400"
  262.    Amal On T
  263. End Proc
  264. Procedure SPAR[T]
  265.    If CHIARA=1 Then Pop Proc
  266.    If Rnd(3000)>100 Then Pop Proc
  267.    If Chanmv(6) Then Pop Proc
  268.    If I Bob(T)<30 Then Pop Proc
  269.    Bob 6,X Bob(T)-2,Y Bob(T)+10,28
  270.    Amal 6,"Move -330,40-Z(80),42"
  271.    Amal On 6
  272. End Proc
  273. Procedure PAUSE
  274.    Amal Freeze 
  275.    Channel 12 To Bob 32
  276.    Bob 32,100,100,42
  277.    Amal 12,"Anim 0,(42,15)(39,12)"
  278.    Amal On 12
  279.    Wait 10
  280.    Do 
  281.       Exit If Key Shift=0
  282.    Loop 
  283.    Amal Off 12
  284.    Bob Off 32
  285.    Wait 10
  286.    Amal On 
  287. End Proc
  288. Procedure TENDI
  289.    Screen 1
  290.    Wait 30
  291.    Bob 30,100,100,43
  292.    T=100
  293.    REX=Colour(7)
  294.    Clear Key 
  295.    Repeat 
  296.       S=1
  297.       If S=1 Then Inc T Else Dec T
  298.       If T=4096 Then S=2
  299.       If T=0 Then S=1
  300.       Colour 7,Val(Hex$(T))
  301.    Until Fire(1) or Key Shift=2
  302.    Bob Off 30
  303.    Colour 7,REX
  304.    Wait 10
  305.    Amal On 10
  306. End Proc
  307. Procedure INRO
  308.    Hide 
  309.    Dim A(31)
  310.    For T=1 To 31
  311.       Read A(T)
  312.    Next 
  313.    S=1
  314.    T=0
  315.    SILVIA=0
  316.    FRANCESCA=0
  317.    CHIARA=0
  318.    Mvolume 63
  319.    Music 1
  320.    Repeat 
  321.       If S=1 Then Inc T Else Dec T
  322.       If T=31 Then S=2
  323.       If T=1 Then S=1
  324.       Colour 15,A(T)
  325.       Colour 17,A(T)
  326.       Wait Vbl 
  327.       If Key State(69) Then Music Off : End 
  328.       If Key Shift=1
  329.          FRANCESCA$=""
  330.          CHIARA$=""
  331.          SILVIA$=""
  332.          OK=0
  333.          Repeat 
  334.             A$=Inkey$
  335.             If A$<>""
  336.                CHIARA$=CHIARA$+A$
  337.                SILVIA$=SILVIA$+A$
  338.                FRANCESCA$=FRANCESCA$+A$
  339.             End If 
  340.             If CHIARA$="CHIARA"
  341.                OK=1
  342.                If CHIARA=0
  343.                   CHIARA=1
  344.                   Bell 70
  345.                Else 
  346.                   CHIARA=0
  347.                   Bell 30
  348.                End If 
  349.             End If 
  350.             If SILVIA$="SILVIA"
  351.                OK=1
  352.                If SILVIA=0
  353.                   SILVIA=1
  354.                   Bell 70
  355.                Else 
  356.                   SILVIA=0
  357.                   Bell 30
  358.                End If 
  359.             End If 
  360.             If FRANCESCA$="FRANCESCA"
  361.                OK=1
  362.                If FRANCESCA=0
  363.                   FRANCESCA=1
  364.                   Bell 70
  365.                Else 
  366.                   FRANCESCA=0
  367.                   Bell 30
  368.                End If 
  369.             End If 
  370.          Until Key Shift=0 or OK=1
  371.       End If 
  372.    Until Fire(1) or Key Shift=2
  373.    For T=60 To 0 Step -5
  374.       Mvolume T
  375.       Wait 5
  376.    Next 
  377.    Music Off 
  378.    Data $F00,$F10,$F20,$F30,$F40,$F50,$F60,$F70,$F80,$F90,$FA0,$FB0,$FC0,$FD0,$FE0,$FF0
  379.    Data $EF0,$DF0,$CF0,$BF0,$AF0,$9F0,$8F0,$7F0,$6F0,$5F0,$4F0,$3F0,$2F0,$1F0,$F0
  380. End Proc
  381. FINE:
  382. Bob Off : Sprite Off 
  383. Amal Off 
  384. Ink 7
  385. Text 100,100,"GAME OVER"
  386. T=100
  387. Repeat 
  388.    S=1
  389.    If S=1 Then Inc T Else Dec T
  390.    If T=4096 Then S=2
  391.    If T=0 Then S=1
  392.    Colour 7,Val(Hex$(T))
  393. Until Fire(1) or Key Shift=2
  394. Open Random 1,"topotto"
  395. Field 1,3 As NOME$,5 As SCO$
  396. For T=1 To 8
  397.    Get 1,T
  398.    NOME$(T)=NOME$ : SCORE(T)=Val(SCO$)
  399. Next 
  400. Close 1
  401. Unpack 10 To 0
  402. Ink 9,14
  403. If PIT<SCORE(8)
  404.    For T=1 To 8
  405.       Text 100,110+((T-1)*10),NOME$(T)
  406.       Text 140,110+((T-1)*10),Str$(SCORE(T))
  407.    Next 
  408.    Repeat 
  409.    Until Fire(1) or Key Shift=2
  410.    Goto INIZIO
  411. End If 
  412. For T=8 To 1 Step -1
  413.    If PIT>SCORE(T) Then POS=T
  414. Next 
  415. For T=8 To POS Step -1
  416.    SCORE(T+1)=SCORE(T)
  417.    NOME$(T+1)=NOME$(T)
  418. Next 
  419. SCORE(POS)=PIT
  420. NOME$(POS)=""
  421. Clear Key 
  422. For T=1 To 8
  423.    Text 100,110+((T-1)*10),NOME$(T)
  424.    Text 140,110+((T-1)*10),Str$(SCORE(T))
  425. Next 
  426. NO$=""
  427. Clear Key 
  428. Repeat 
  429.    A$=Inkey$
  430.    If A$<>""
  431.       NO$=NO$+A$
  432.       Text 100,110+((POS-1)*10),NO$
  433.    End If 
  434. Until Len(NO$)=3
  435. NOME$(POS)=NO$
  436. Open Random 1,"topotto"
  437. Field 1,3 As NOME$,5 As SCO$
  438. For T=1 To 8
  439.    NOME$=NOME$(T) : SCO$=Str$(SCORE(T))
  440.    Put 1,T
  441. Next 
  442. Close 1
  443. Repeat 
  444. Until Fire(1) or Key Shift=2
  445. Goto INIZIO