home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 5 / CD_Magazyn_EXEC_nr_5.iso / Recent / game / demo / Mattonite_Src.lha / Mattonite.AMOS / Mattonite.amosSourceCode
AMOS Source Code  |  2001-06-04  |  70KB  |  2,147 lines

  1. '-> Mattonite by Stefano Regattin  
  2. 'i> 2 ottobre 1996 
  3. 'm> 3,8,12,13,14,19,25,27,31 ottobre 1996
  4. 'm> 9 novembre 1996
  5. 'm> 12 novembre 1997 
  6. 'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000 
  7. 'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000 
  8. 'm> 16,17,18,19,23,24 luglio 2000
  9. 'm> 5,12,13,14,15,30 agosto 2000 
  10. 'm> 1,10,11,26 settembre 2000
  11. 'm> 12,15,24,25,26,31 ottobre 2000 
  12. 'm> 2,16,17,21,23 novembre 2000
  13. 'm> 3 dicembre 2000
  14. 'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001 
  15. 'm> 1 marzo 2001 
  16. 'm> 15,22,23,26 aprile 2001    
  17. 'm> 19,20,22,26,27,29 maggio 2001      
  18. 'm> 1,2,3,4 giugno 2001
  19. '----------------------------------------------------------------------------- 
  20. 'I have enclosed with the source codes all their data because these, in the
  21. 'original archive Mattonite.lha, have some differences; this archive is aged 
  22. 'compared with this source code: when I will complete the game the archive 
  23. 'will be updated.
  24. 'Ho incluso con i codici sorgenti tutti i loro dati perch� questi, 
  25. 'nell'archivio originale Mattonite.lha, hanno qualche differenza; questo 
  26. 'archivio ï¿½ datato rispetto a questo codice sorgente: quando completer� il 
  27. 'gioco aggiorner� l'archivio.
  28. '----------------------------- 
  29. Set Buffer 20
  30. OGGETTI$="MattoniteOggetti.Abk"
  31. SUONI$="MattoniteSuoni.Abk"
  32. PUNTEGGI$="TopHundredScores"
  33. VERO=-1
  34. FALSO=0
  35. ALTEZZAFONT=8
  36. BANCO=65535
  37. IMMAGINIBOING=8
  38. IMMAGINIPAPERO=4
  39. IMMAGINIRUBAPALLINA=11
  40. LARGHEZZAPANNELLO=48
  41. MASSIMOBOINGINCAMPO=3
  42. MASSIMOMATTONCINIDARIDISEGNARE=83
  43. MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8
  44. MASSIMOPALLINEINCAMPO=5
  45. OGGETTORIGA=0
  46. OGGETTOMATTONCINODIPOTENZIAMENTO=1
  47. OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
  48. OGGETTOCENTRODELLABARRA=OGGETTOBOING+MASSIMOBOINGINCAMPO
  49. OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1
  50. OGGETTOPAPERO=251
  51. OGGETTORUBAPALLINA=252
  52. OGGETTOLASER=253
  53. OGGETTORAGGIOLASER=254
  54. OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO
  55. PRIMAPARTITA=VERO
  56. RITARDOUSCITADEIBOING=-1000
  57. SEMITONO#=1.05946
  58. SUONICARICATI=VERO
  59. VOCE=1
  60. Dim GIOCATORE$(99),PUNTEGGIO$(99)
  61. Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1)
  62. Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1)
  63. Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1)
  64. Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1)
  65. Dim BOING(MASSIMOBOINGINCAMPO-1),C0LORE(31),DURATADELLARIGA(2)
  66. Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1)
  67. Dim IMMAGINEBOING(IMMAGINIBOING-1),IMMAGINEPAPERO(IMMAGINIPAPERO-1)
  68. Dim INGOMBRODELLABARRA(2)
  69. Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1)
  70. Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1)
  71. Dim LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1)
  72. Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1)
  73. Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  74. Dim PALLINA(MASSIMOPALLINEINCAMPO-1)
  75. Dim VOCE(3),X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1)
  76. Dim XCOLLA(MASSIMOPALLINEINCAMPO-1)
  77. Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  78. Dim Y0ZONA(246),YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1)
  79. Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  80. Global VERO,FALSO
  81. Global CENTOGIOCATORI$,OGGETTI$,PERCORSO$,PERCORSODEILIVELLI$
  82. Global PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$,PUNTEGGI$,SUONI$
  83. Global SEMITONO#
  84. Global ALTEZZAFONT,BANCO,BOINGINCAMPO,BONUS,C0LLA,C0LORIDELLOSCHERMOMENOUNO
  85. Global DISTANZADELMATTONCINOPIUVICINOALPAPERO,IMMAGINELASER,IMMAGINEPALLINA
  86. Global IMMAGINEPAPERO,IMMAGINERAGGIOLASER,IMMAGINIBOING,IMMAGINIPAPERO
  87. Global IMMAGINERIGADUE,IMMAGINERIGATRE,IMMAGINERIGAUNO,IMMAGINIRUBAPALLINA
  88. Global LARGHEZZAPANNELLO,LASER,LIVELLO,LUNGHEZZADELLABARRA
  89. Global LUNGHEZZADELLABARRACAMBIATA,MASSIMOBOINGINCAMPO
  90. Global MASSIMOMATTONCINIDARIDISEGNARE,MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
  91. Global MASSIMOPALLINEINCAMPO,MATTONCINI,MATTONCINIDIPOTENZIAMENTO
  92. Global MATTONCINIRIMASTI,MATTONCINOPERILPAPERO,MATTONCINOTROVATOPERILPAPERO
  93. Global OGGETTOBOING,OGGETTOCENTRODELLABARRA,OGGETTOLASER,OGGETTOLATIDELLABARRA
  94. Global OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTOPALLINA,OGGETTOPAPERO
  95. Global OGGETTORAGGIOLASER,OGGETTORIGA,PALLINE,PALLINEINCAMPO,_PAPEROINCAMPO
  96. Global POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO,RAGGIOLASERSPARATO,RIGA
  97. Global RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING,RITARDOUSCITADEIBOING
  98. Global SUONICARICATI,TASTO,TASTOGRIGIO,T0GLILARIGA,VOCE,XBARRA,XFINALERIGA
  99. Global XLASER,XPANNELLO,XPAPERO,XRIGA,YBARRA,YLASER,YPAPERO
  100. Global GIOCATORE$(),PUNTEGGIO$()
  101. Global DELTAXPALLINA#(),DELTAYPALLINA#(),VELOCITADELLAPALLINA#(),XPALLINA#()
  102. Global YPALLINA#()
  103. Global BOING(),C0LORE(),DURATADELLARIGA(),DURATADELRIDISEGNODELMATTONCINO()
  104. Global IMMAGINEBOING(),IMMAGINEPAPERO(),INGOMBRODELLABARRA()
  105. Global LAPALLINAERIMASTAINCOLLATAALLABARRA(),LAPALLINAHACOLPITOLABARRA()
  106. Global LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(),MATTONCINO()
  107. Global MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO(),PALLINA(),VOCE()
  108. Global X0ZONA(),XBOING(),XCOLLA(),XMATTONCINODIPOTENZIAMENTO(),Y0ZONA()
  109. Global YBOING(),YCOLLA()
  110. Global YMATTONCINODIPOTENZIAMENTO()
  111. Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
  112. Proc IMPOSTAIPERCORSIDEIFILE
  113. Proc IMPOSTALOSCHERMO
  114. Proc CARICAGLIOGGETTI
  115. Proc IMPOSTAGLIOGGETTI
  116. Proc IMPOSTAICOLORI
  117. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  118. Proc TROVAILFONTDATA70
  119. Proc DISSOLVENZADEICOLORI[$FFF,1,1]
  120. Hide 
  121. Proc IMPOSTALARCOBALENO
  122. If SUONICARICATI=VERO Then Proc CARICAISUONI
  123. Proc CARICAILLIVELLO
  124. Proc DABANCOAVARIABILI
  125. Proc METTIILPANNELLO
  126. Proc CREALEIMMAGINIPERLERIGHE
  127. Proc IMPOSTALEZONEDEIMATTONCINI
  128. Proc METTIECONTAIMATTONCINI
  129. Proc IMPOSTALINGOMBRODELLABARRA
  130. Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  131. Proc IMPOSTALADURATADELLERIGHE
  132. Proc DISSOLVENZADEICOLORI[$FFF,1,2]
  133. Proc IMPOSTAILAMPEGGI
  134. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  135. Repeat 
  136.  Proc MOSTRAICREDITI
  137.  Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  138.  TESTOINTRODUTTIVO$="Press left mouse button to play."+Chr$(10)
  139.  TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit."
  140.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500]
  141.  If TASTO=-1
  142.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  143.   C0LLA=FALSO
  144.   DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  145.   DURATADELLARIGA=-1
  146.   INIZIODELLIVELLO=VERO
  147.   LASER=0
  148.   LIVELLO=0
  149.   LUNGHEZZADELLABARRA=1
  150.   LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA
  151.   PALLINE=5
  152.   PALLINEINCAMPO=1
  153.   _PAPEROINCAMPO=FALSO
  154.   PUNTEGGIO=0
  155.   RIGA=0
  156.   RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  157.   XBARRA=X Screen(X Mouse)
  158.   YBARRA=247
  159.   If PRIMAPARTITA=FALSO
  160.    Proc CANCELLAIMATTONCINI
  161.    Proc CARICAILLIVELLO
  162.    Proc DABANCOAVARIABILI
  163.    Proc METTIECONTAIMATTONCINI
  164.   Else 
  165.    PRIMAPARTITA=FALSO
  166.   End If 
  167.   Proc IMPOSTAIBOING
  168.   Repeat 
  169.    Proc IMPOSTAILRIMBALZODELLEPALLINE
  170.    Proc AGGIORNAILPANNELLO
  171.    If INIZIODELLIVELLO=VERO
  172.     TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+Chr$(10)
  173.     TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..."
  174.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  175.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500]
  176.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  177.     If SUONICARICATI=VERO
  178.      Sam Play VOCE,1 : Proc VOCESEGUENTE
  179.     Else 
  180.      Bell 20
  181.     End If 
  182.     INIZIODELLIVELLO=FALSO
  183.    End If 
  184.    For PALLINA=0 To PALLINEINCAMPO-1
  185.     PALLINA(PALLINA)=VERO
  186.     XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  187.     YPALLINA#(PALLINA)=YBARRA-3
  188.    Next PALLINA
  189.    Repeat 
  190.     TASTOCLICCATODELTOPO=Mouse Click
  191.     XBARRA=X Screen(X Mouse)
  192.     Proc MOSTRALABARRA
  193.     Proc CAMBIALALUNGHEZZADELLABARRA
  194.     Proc LIMITAIMOVIMENTIDELLABARRA
  195.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  196.      If PALLINA(PALLINA)=VERO
  197.       XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  198.       YPALLINA#(PALLINA)=YBARRA-3
  199.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  200.      End If 
  201.     Next PALLINA
  202.     Proc MOSTRAILLASER
  203.     If T0GLILARIGA>0
  204.      If XRIGA>0
  205.       Dec XRIGA
  206.      End If 
  207.      Proc MOSTRALARIGA[T0GLILARIGA]
  208.     Else 
  209.      If RIGA>0
  210.       If XRIGA<XFINALERIGA
  211.        Inc XRIGA
  212.        Proc MOSTRALARIGA[RIGA]
  213.       End If 
  214.      End If 
  215.     End If 
  216.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  217.     Proc BOINGINCAMPO
  218.     Bob Update 
  219.     TASTOPREMUTO$=Inkey$
  220.     TASTOGRIGIO=Key Shift
  221.     TASTOSCANSITO=Scancode
  222.     Exit If TASTOPREMUTO$=Chr$(27)
  223.     If TASTOGRIGIO=4
  224.      If TASTOSCANSITO=80 : Rem F1 key 
  225.       Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2
  226.      Else If TASTOSCANSITO=81 : Rem F2 key 
  227.       Add PALLINEINCAMPO,1,1 To 5
  228.       For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  229.        If PALLINA<PALLINEINCAMPO
  230.         PALLINA(PALLINA)=VERO
  231.        Else 
  232.         PALLINA(PALLINA)=FALSO
  233.         Proc CANCELLALAPALLINA[PALLINA]
  234.        End If 
  235.       Next PALLINA
  236.      Else If TASTOSCANSITO=82 : Rem F3 key 
  237.       If LASER=-1
  238.        LASER=1
  239.       Else If LASER=1
  240.        LASER=2
  241.       Else If LASER=2
  242.        LASER=3
  243.       Else If LASER=3
  244.        LASER=0
  245.       End If 
  246.      Else If TASTOSCANSITO=83 : Rem F4 key 
  247.       If RIGA>0 and T0GLILARIGA=0
  248.        T0GLILARIGA=RIGA
  249.       End If 
  250.       Add RIGA,1,0 To 3
  251.      Else If TASTOPREMUTO$=" "
  252.       Proc MATTONCINIDIPOTENZIAMENTO[-Rnd(18)-1,0]
  253.      End If 
  254.     End If 
  255.    Until TASTOCLICCATODELTOPO>0
  256.    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  257.     If PALLINA<PALLINEINCAMPO
  258.      PALLINA(PALLINA)=VERO
  259.      VELOCITADELLAPALLINA#(PALLINA)=1
  260.      D1REZIONEXPALLINA=Rnd(1)
  261.      If D1REZIONEXPALLINA=1
  262.       DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  263.      Else 
  264.       DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  265.      End If 
  266.      DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  267.     Else 
  268.      PALLINA(PALLINA)=FALSO
  269.      Proc CANCELLALAPALLINA[PALLINA]
  270.     End If 
  271.    Next PALLINA
  272.    Repeat 
  273.     TASTOCLICCATODELTOPO=Mouse Click
  274.     If TASTOCLICCATODELTOPO=1 and C0LLA=VERO
  275.      For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  276.       LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  277.      Next PALLINA
  278.     Else If TASTOCLICCATODELTOPO=2
  279.      Proc HAISPARATOILRAGGIOLASER
  280.     End If 
  281.     Exit If TASTOPREMUTO$=Chr$(27)
  282.     TASTOPREMUTO$=Inkey$
  283.     Exit If TASTOPREMUTO$=Chr$(27)
  284.     XBARRA=X Screen(X Mouse)
  285.     Proc MOSTRALABARRA
  286.     Proc CAMBIALALUNGHEZZADELLABARRA
  287.     Proc LIMITAIMOVIMENTIDELLABARRA
  288.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  289.      If PALLINA(PALLINA)=VERO
  290.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  291.        XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA)
  292.        YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA)
  293.       Else 
  294.        XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA)
  295.        YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA)
  296.        If TILTPALLINA=VERO
  297.         XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+XTILTPALLINA
  298.         YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+YTILTPALLINA
  299.        End If 
  300.        If XPALLINA#(PALLINA)>XPANNELLO-1-3
  301.         XPALLINA#(PALLINA)=XPANNELLO-1-3
  302.         DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  303.         If SUONICARICATI=VERO
  304.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  305.         Else 
  306.          Boom 
  307.         End If 
  308.        Else If XPALLINA#(PALLINA)<3
  309.         XPALLINA#(PALLINA)=3
  310.         DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  311.         If SUONICARICATI=VERO
  312.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  313.         Else 
  314.          Boom 
  315.         End If 
  316.        Else If YPALLINA#(PALLINA)<3
  317.         YPALLINA#(PALLINA)=3
  318.         DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  319.         If SUONICARICATI=VERO
  320.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  321.         Else 
  322.          Boom 
  323.         End If 
  324.        End If 
  325.        If TILTPALLINA=VERO
  326.         Add XTILTPALLINA,-Sgn(XTILTPALLINA) : Add YTILTPALLINA,-Sgn(YTILTPALLINA)
  327.         If XTILTPALLINA>0
  328.          XTILTPALLINA=Max(XTILTPALLINA,0)
  329.         Else If XTILTPALLINA<0
  330.          XTILTPALLINA=Min(XTILTPALLINA,0)
  331.         End If 
  332.         If YTILTPALLINA>0
  333.          YTILTPALLINA=Max(YTILTPALLINA,0)
  334.         Else If YTILTPALLINA<0
  335.          YTILTPALLINA=Min(YTILTPALLINA,0)
  336.         End If 
  337.         Screen Display 0,128+XTILTPALLINA,44+YTILTPALLINA,320,256
  338.         If XTILTPALLINA=0 and YTILTPALLINA=0
  339.          TILTPALLINA=FALSO
  340.         End If 
  341.        Else 
  342.         If TASTOPREMUTO$=" "
  343.          XTILTPALLINA=Rnd(32)-16 : YTILTPALLINA=Rnd(32)-16 : TILTPALLINA=VERO
  344.         End If 
  345.        End If 
  346.       End If 
  347.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  348.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  349.        Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  350.        TASTISHIFT=Key Shift mod 4
  351.        If TASTISHIFT=0
  352.         Proc MATTONCINOCOLPITODALRAGGIOLASER
  353.        End If 
  354.        Proc LAPALLINAHACOLPITOLABARRA[PALLINA]
  355.        Proc LAPALLINAHACOLPITOLARIGA[PALLINA]
  356.        Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  357.       End If 
  358.      End If 
  359.     Next PALLINA
  360.     Proc MOSTRAILLASER
  361.     Proc MOSTRAILRAGGIOLASER
  362.     TASTOGRIGIO=Key Shift
  363.     If TASTOGRIGIO=0 and TASTOGRIGIO>7
  364.      Proc MATTONCINOCOLPITODALRAGGIOLASER
  365.     End If 
  366.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  367.     If T0GLILARIGA>0
  368.      If XRIGA>0
  369.       Dec XRIGA : Proc MOSTRALARIGA[T0GLILARIGA]
  370.      Else 
  371.       Proc T0GLILARIGA : DURATADELLARIGA=-1
  372.      End If 
  373.     Else 
  374.      If RIGA>0
  375.       If XRIGA<XFINALERIGA
  376.        Inc XRIGA : Proc MOSTRALARIGA[RIGA]
  377.       Else 
  378.        If DURATADELLARIGA=-1
  379.         DURATADELLARIGA=DURATADELLARIGA(RIGA-1)
  380.        Else If DURATADELLARIGA=0
  381.         T0GLILARIGA=RIGA : RIGA=0
  382.        Else 
  383.         Dec DURATADELLARIGA
  384.        End If 
  385.       End If 
  386.      End If 
  387.     End If 
  388.     If _PAPEROINCAMPO=VERO
  389.      Proc _PAPEROINCAMPO
  390.     End If 
  391.     Proc BOINGINCAMPO
  392.     Bob Update 
  393.     For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  394.      If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0
  395.       MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)
  396.       If MATTONCINO>0
  397.        X0MATTONCINO=X0ZONA(MATTONCINO-1)
  398.        Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  399.        TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1)
  400.        If TIPODIMATTONCINO=0
  401.         Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
  402.        Else 
  403.         Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO
  404.        End If 
  405.       End If 
  406.       Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)
  407.      End If 
  408.     Next MATTONCINODARIDISEGNARE
  409.     If BONUS>0
  410.      If RITARDODELDECREMENTODELBONUS=9
  411.       RITARDODELDECREMENTODELBONUS=0 : Dec BONUS : Proc MOSTRAILBONUS[FALSO]
  412.      Else 
  413.       Inc RITARDODELDECREMENTODELBONUS
  414.      End If 
  415.     End If 
  416.     Exit If MATTONCINI=0
  417.    Until PALLINEINCAMPO=0
  418.    Proc CANCELLALABARRA
  419.    Proc CANCELLALEPALLINE
  420.    Proc T0GLIILLASER
  421.    Proc CANCELLAILRAGGIOLASER
  422.    Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO
  423.    Proc CANCELLAILPAPERO : _PAPEROINCAMPO=FALSO
  424.    Proc CANCELLAIBOING
  425.    Proc CANCELLALARIGA
  426.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  427.    Exit If TASTOPREMUTO$=Chr$(27)
  428.    If MATTONCINI=0
  429.     Proc AGGIUNGIALPUNTEGGIOILBONUS
  430.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  431.     Proc AGGIORNAILPANNELLO
  432.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  433.     Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  434.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  435.     Proc AGGIORNAILPANNELLO
  436.     Inc LIVELLO
  437.     INIZIODELLIVELLO=VERO
  438.    End If 
  439.    If PALLINEINCAMPO>0
  440.     Proc CANCELLAIMATTONCINI
  441.     Proc CARICAILLIVELLO
  442.     Exit If LIVELLO=-1
  443.     Proc DABANCOAVARIABILI
  444.     Proc METTIECONTAIMATTONCINI
  445.     Proc IMPOSTAIBOING
  446.    Else 
  447.     Dec PALLINE : PALLINEINCAMPO=1
  448.     C0LLA=FALSO
  449.     If SUONICARICATI=VERO
  450.      Sam Play VOCE,5 : Proc VOCESEGUENTE
  451.     Else 
  452.      Boom 
  453.     End If 
  454.    End If 
  455.   Until PALLINE=0
  456.   If TASTOPREMUTO$<>Chr$(27)
  457.    Proc AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO
  458.    Proc FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
  459.    Proc SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  460.   End If 
  461.   GREETING$="The game is finished."+Chr$(10)
  462.   GREETING$=GREETING$+"I hope you have enjoyed."+Chr$(10)
  463.   GREETING$=GREETING$+"Bye bye!"+Chr$(10)
  464.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[GREETING$,20,22,1,1000]
  465.  End If 
  466. Until TASTO=-2
  467. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  468. Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1]
  469. Proc T0GLIIMATTONCINI
  470. Proc T0GLIILPANNELLO
  471. Proc T0GLILARCOBALENO
  472. Show : Rainbow Del 0 : Screen Close 0 : Erase All : End 
  473. Procedure AGGIORNAILPANNELLO
  474.  ' Update the panel 
  475.  Proc MOSTRAILPUNTEGGIO[VERO]
  476.  Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
  477.  Proc MOSTRALEPALLINERIMASTE
  478.  Proc MOSTRAILLIVELLO
  479.  Proc MOSTRAILBONUS[VERO]
  480. End Proc
  481. Procedure AGGIUNGIALPUNTEGGIOILBONUS
  482.  ' Add the bonus to the score 
  483.  If BONUS>0
  484.   BONUS$="I am going to add the bonus points..."+Chr$(10)
  485.   BONUS$=BONUS$+"...to your game points."+Chr$(10)
  486.   BONUS$=BONUS$+"Wait for a moment, please..."
  487.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
  488.   Repeat 
  489.    Dec BONUS : Proc MOSTRAILBONUS[FALSO]
  490.    Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  491.   Until BONUS=0
  492.  Else 
  493.   BONUS$="There are no bonus points..."+Chr$(10)
  494.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  495.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
  496.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  497.   _ASPETTA[1000]
  498.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,0]
  499.  End If 
  500. End Proc
  501. Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  502.  ' Add 2 points to the score for every brick left 
  503.  If MATTONCINIRIMASTI>0
  504.   BONUS$="I am going to add the bricks left bonus points..."+Chr$(10)
  505.   BONUS$=BONUS$+"...to your game points,"+Chr$(10)
  506.   BONUS$=BONUS$+"adding two points for each brick left."+Chr$(10)
  507.   BONUS$=BONUS$+"There are"+Str$(MATTONCINIRIMASTI)+" bricks left..."+Chr$(10)
  508.   BONUS$=BONUS$+"...wait for a moment, please..."
  509.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
  510.   Repeat 
  511.    Dec MATTONCINIRIMASTI
  512.    Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  513.   Until MATTONCINIRIMASTI=0
  514.  Else 
  515.   BONUS$="There are no bricks left bonus points..."+Chr$(10)
  516.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  517.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
  518.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  519.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  520.   _ASPETTA[1000]
  521.  End If 
  522. End Proc
  523. Procedure AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO
  524.  ' Add 500 points to the score for every ball left at the end of the game 
  525.  If PALLINE>0
  526.   BONUS$="I am going to add the ball left bonus points..."+Chr$(10)
  527.   BONUS$=BONUS$+"...to your game points,"+Chr$(10)
  528.   BONUS$=BONUS$+"adding 500 points for each ball left."+Chr$(10)
  529.   BONUS$=BONUS$+"There are"+Str$(PALLINE)+" ball(s) left..."+Chr$(10)
  530.   BONUS$=BONUS$+"...wait for a moment, please..."
  531.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
  532.   Repeat 
  533.    Dec PALLINE
  534.    Add PUNTEGGIO,500 : Proc MOSTRAILPUNTEGGIO[VERO]
  535.    Sam Play VOCE,2 : Proc VOCESEGUENTE
  536.    _ASPETTA[500]
  537.   Until PALLINE=0
  538.  Else 
  539.   BONUS$="There are no balls left bonus points..."+Chr$(10)
  540.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  541.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next game."+Chr$(10)
  542.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  543.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  544.   _ASPETTA[1000]
  545.  End If 
  546. End Proc
  547. Procedure _ASPETTA[TEMP0DAASPETTARE]
  548.  ' Wait for a (mouse or grey) key pressed 
  549.  TASTO=0
  550.  Timer=0
  551.  Repeat 
  552.   TASTOGRIGIO=Key Shift
  553.   TASTOPREMUTO$=Inkey$
  554.   TASTOPREMUTODELTOPO=Mouse Key
  555.   If TASTOGRIGIO>0 Then Add TASTO,TASTOGRIGIO*256 : Exit 
  556.   If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit 
  557.   If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit 
  558.   If TEMP0DAASPETTARE>0 Then TEMP0TRASCORSO=Timer
  559.  Until Timer>TEMP0DAASPETTARE
  560. End Proc
  561. Procedure BOINGINCAMPO
  562.  ' Manage the boings
  563.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  564.   If BOING(BOING)>0
  565.    If RITARDOBOING=0
  566.     Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1)
  567.     Add XBOING(BOING),Rnd(4)-2
  568.     Proc LIMITI[XBOING(BOING),0,XFINALERIGA] : XBOING(BOING)=Param
  569.     Inc YBOING(BOING)
  570.     Add BOING(BOING),1,1 To 8
  571.    End If 
  572.    Proc ILBOINGESTATOCOLPITO[BOING]
  573.    Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  574.   Else If BOING(BOING)=0
  575.    XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOING(BOING)=Rnd(7)+1
  576.    If SUONICARICATI=VERO
  577.     Sam Play VOCE,10 : Proc VOCESEGUENTE
  578.    Else 
  579.     Bell 60
  580.    End If 
  581.   Else If BOING(BOING)<0
  582.    If BOING(BOING)=RITARDOUSCITADEIBOING
  583.     Proc CANCELLAILBOING[BOING] : Inc BOING(BOING)
  584.    Else 
  585.     Inc BOING(BOING)
  586.    End If 
  587.   End If 
  588.  Next BOING
  589.  Add RITARDOBOING,1,0 To 3
  590. End Proc
  591. Procedure CAMBIALALUNGHEZZADELLABARRA
  592.  ' Change the bar size
  593.  If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA
  594.   If LUNGHEZZADELLABARRA=0
  595.    If LUNGHEZZADELLABARRACAMBIATA=1
  596.     Gosub LUNGHEZZADAZEROAUNO
  597.    End If 
  598.    If LUNGHEZZADELLABARRACAMBIATA=2
  599.     Gosub LUNGHEZZADAZEROAUNO
  600.     Gosub LUNGHEZZADAUNOADUE
  601.    End If 
  602.   Else If LUNGHEZZADELLABARRA=1
  603.    If LUNGHEZZADELLABARRACAMBIATA=0
  604.     Gosub LUNGHEZZADAUNOAZERO
  605.    End If 
  606.    If LUNGHEZZADELLABARRACAMBIATA=2
  607.     Gosub LUNGHEZZADAUNOADUE
  608.    End If 
  609.   Else If LUNGHEZZADELLABARRA=2
  610.    If LUNGHEZZADELLABARRACAMBIATA=0
  611.     Gosub LUNGHEZZADADUEAUNO
  612.     Gosub LUNGHEZZADAUNOAZERO
  613.    End If 
  614.    If LUNGHEZZADELLABARRACAMBIATA=1
  615.     Gosub LUNGHEZZADADUEAUNO
  616.    End If 
  617.   End If 
  618.  End If 
  619.  LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA
  620.  Pop Proc
  621.  LUNGHEZZADAZEROAUNO:
  622.  ' From small to medium bar 
  623.  For OGGETTO=45 To 41 Step -1
  624.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  625.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
  626.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  627.   Bob Update 
  628.  Next OGGETTO
  629.  Return 
  630.  LUNGHEZZADAUNOADUE:
  631.  ' From medium to large bar 
  632.  For OGGETTO=13 To 26
  633.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  634.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
  635.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  636.   Bob Update 
  637.  Next OGGETTO
  638.  Return 
  639.  LUNGHEZZADADUEAUNO:
  640.  ' From large to medium bar 
  641.  For OGGETTO=26 To 13 Step -1
  642.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  643.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
  644.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  645.   Bob Update 
  646.  Next OGGETTO
  647.  Return 
  648.  LUNGHEZZADAUNOAZERO:
  649.  ' From medium to small bar 
  650.  For OGGETTO=41 To 45
  651.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  652.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
  653.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  654.   Bob Update 
  655.  Next OGGETTO
  656.  Return 
  657. End Proc
  658. Procedure CANCELLAIBOING
  659.  ' Turn off all the boings
  660.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  661.   Bob Off OGGETTOBOING+BOING
  662.  Next BOING
  663.  Bob Update 
  664. End Proc
  665. Procedure CANCELLAILBOING[BOING]
  666.  ' Turn off the specified boing 
  667.  Bob Off OGGETTOBOING+BOING
  668.  Bob Update 
  669. End Proc
  670. Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  671.  ' Turn off the specified bonus brick 
  672.  Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  673.  Bob Update 
  674.  MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  675. End Proc
  676. Procedure CANCELLAILPAPERO
  677.  ' Turn off the duck
  678.  Bob Off OGGETTOPAPERO
  679.  Bob Update 
  680. End Proc
  681. Procedure CANCELLAILRAGGIOLASER
  682.  ' Turn off the laser ray 
  683.  Bob Off OGGETTORAGGIOLASER
  684.  Bob Update 
  685.  RAGGIOLASERRIFLESSO=FALSO
  686.  RAGGIOLASERSPARATO=FALSO
  687. End Proc
  688. Procedure CANCELLAIMATTONCINI
  689.  ' Clear the bricks area  
  690.  Cls 0,0,0 To XPANNELLO,Screen Height
  691. End Proc
  692. Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO
  693.  ' Turn off all the bonus bricks
  694.  For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  695.   If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0
  696.    Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  697.   End If 
  698.   MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  699.  Next MATTONCINODIPOTENZIAMENTO
  700.  Bob Update 
  701. End Proc
  702. Procedure CANCELLALABARRA
  703.  ' Turn off the bar 
  704.  Bob Off OGGETTOCENTRODELLABARRA
  705.  Bob Off OGGETTOLATIDELLABARRA
  706.  Bob Update 
  707. End Proc
  708. Procedure CANCELLALAPALLINA[PALLINA]
  709.  ' Turn off the specified ball  
  710.  Bob Off OGGETTOPALLINA+PALLINA
  711.  Bob Update 
  712. End Proc
  713. Procedure CANCELLALARIGA
  714.  ' Turn off the row 
  715.  If RIGA>0
  716.   T0GLILARIGA=RIGA : RIGA=0
  717.   For XRIGA=XRIGA To 0 Step -1
  718.    Proc MOSTRALARIGA[T0GLILARIGA] : Wait Vbl 
  719.   Next XRIGA
  720.  End If 
  721. End Proc
  722. Procedure CANCELLALEPALLINE
  723.  ' Turn off all the balls 
  724.  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  725.   If PALLINA(PALLINA)=VERO Then Bob Off OGGETTOPALLINA+PALLINA
  726.  Next PALLINA
  727.  Bob Update 
  728. End Proc
  729. Procedure CARICAGLIOGGETTI
  730.  ' Load the objects 
  731.  Load PERCORSODELLAGRAFICA$+OGGETTI$
  732. End Proc
  733. Procedure CARICAILLIVELLO
  734.  ' Load the level 
  735.  LIVELLO$="Livello"+Str$(LIVELLO)-" "
  736.  FILE$=PERCORSODEILIVELLI$+LIVELLO$
  737.  If Exist(FILE$)
  738.   Open In 1,FILE$
  739.   MARCATORE$=Input$(1,9)
  740.   LUNGHEZZABANCO=Lof(1)
  741.   Close 1
  742.   If MARCATORE$="Mattonite"
  743.    Reserve As Work BANCO,LUNGHEZZABANCO
  744.    Bload FILE$,Start(BANCO)
  745.   End If 
  746.  Else 
  747.   LIVELLO=-1
  748.  End If 
  749. End Proc
  750. Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  751.  ' Load the top hundred scores
  752.  If Exist(PUNTEGGI$)
  753.   CENTOGIOCATORI$=""
  754.   Open In 1,PUNTEGGI$
  755.   For POSIZIONE=0 To 99
  756.    Exit If Eof(1)
  757.    Input #1,GIOCATORE$(POSIZIONE)
  758.    CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> "
  759.    CENTOGIOCATORI$=CENTOGIOCATORI$+GIOCATORE$(POSIZIONE)+Chr$(10)
  760.    Input #1,PUNTEGGIO$(POSIZIONE)
  761.    CENTOGIOCATORI$=CENTOGIOCATORI$+"points> "
  762.    CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIO$(POSIZIONE)
  763.    If Not Eof(1)
  764.     CENTOGIOCATORI$=CENTOGIOCATORI$+Chr$(10)
  765.    End If 
  766.   Next POSIZIONE
  767.   Close 1
  768.   PUNTEGGIOMASSIMO=Val(PUNTEGGIO$(0))
  769.   Inc POSIZIONE
  770.  End If 
  771. End Proc
  772. Procedure CARICAISUONI
  773.  ' Load the sounds
  774.  Load PERCORSODELLAMUSICA$+SUONI$
  775. End Proc
  776. Procedure CREALEIMMAGINIPERLERIGHE
  777.  ' Create the row images
  778.  XFINALERIGA=XPANNELLO-1
  779.  IMMAGINERIGAUNO=IMMAGINEPALLINA+1
  780.  Ink 20 : Bar 0,251 To XFINALERIGA,255
  781.  Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1
  782.  Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0
  783.  IMMAGINERIGADUE=IMMAGINERIGAUNO+1
  784.  Ink 21 : Bar 0,251 To XFINALERIGA,255
  785.  Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1
  786.  Hot Spot IMMAGINERIGADUE,XFINALERIGA,0
  787.  IMMAGINERIGATRE=IMMAGINERIGADUE+1
  788.  Ink 22 : Bar 0,251 To XFINALERIGA,255
  789.  Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1
  790.  Hot Spot IMMAGINERIGATRE,XFINALERIGA,0
  791.  Ink 0 : Bar 0,251 To XFINALERIGA,255
  792. End Proc
  793. Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  794.  ' Create outlined text 
  795.  Ink C0LOREBORDO
  796.  Text XTESTO,YTESTO-1,TESTO$
  797.  Text XTESTO+1,YTESTO-1,TESTO$
  798.  Text XTESTO+1,YTESTO,TESTO$
  799.  Text XTESTO+1,YTESTO+1,TESTO$
  800.  Text XTESTO,YTESTO+1,TESTO$
  801.  Text XTESTO-1,YTESTO+1,TESTO$
  802.  Text XTESTO-1,YTESTO,TESTO$
  803.  Text XTESTO-1,YTESTO-1,TESTO$
  804.  Ink C0LORETESTO
  805.  Text XTESTO,YTESTO,TESTO$
  806. End Proc
  807. Procedure DABANCOAVARIABILI
  808.  ' Copy from bank to variables
  809.  If Length(BANCO)>0
  810.   INDIRIZZO=Start(BANCO)+9
  811.   For A=0 To 246
  812.    MATTONCINO(A)=Peek(INDIRIZZO)
  813.    Inc INDIRIZZO
  814.   Next A
  815.   For A=0 To 255
  816.    ARCOBALENO=Peek(INDIRIZZO)
  817.    Inc INDIRIZZO
  818.    ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
  819.    Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271
  820.    Wait Vbl 
  821.    Inc INDIRIZZO
  822.   Next A
  823.   BONUS=Peek(INDIRIZZO)
  824.   Inc INDIRIZZO
  825.   Add BONUS,Peek(INDIRIZZO)*100
  826.   Inc INDIRIZZO
  827.   Add BONUS,Peek(INDIRIZZO)*10000
  828.   Inc INDIRIZZO
  829.   Add BONUS,Peek(INDIRIZZO)*1000000
  830.   Inc INDIRIZZO
  831.  End If 
  832.  Erase BANCO
  833. End Proc
  834. Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO]
  835.  ' Fade the colours 
  836.  If M0DO=0
  837.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  838.    Colour C,C0LORE
  839.    If VELOCITA>0
  840.     Wait VELOCITA
  841.    End If 
  842.   Next C
  843.  Else 
  844.   Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO)
  845.   Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO)
  846.   Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO)
  847.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  848.    If M0DO=1
  849.     ROSSOFINALE(C)=C0LORE/256
  850.     VERDEFINALE(C)=C0LORE/16 mod 16
  851.     BLUFINALE(C)=C0LORE mod 16
  852.    Else If M0DO=2
  853.     ROSSOFINALE(C)=C0LORE(C)/256
  854.     VERDEFINALE(C)=C0LORE(C)/16 mod 16
  855.     BLUFINALE(C)=C0LORE(C) mod 16
  856.    End If 
  857.    ROSSO(C)=Colour(C)/256
  858.    VERDE(C)=Colour(C)/16 mod 16
  859.    BLU(C)=Colour(C) mod 16
  860.   Next C
  861.   Repeat 
  862.    For C=0 To C0LORIDELLOSCHERMOMENOUNO
  863.     If ROSSODISSOLTO(C)=FALSO
  864.      If ROSSO(C)<ROSSOFINALE(C)
  865.       Inc ROSSO(C)
  866.      Else If ROSSO(C)=ROSSOFINALE(C)
  867.       ROSSODISSOLTO(C)=VERO
  868.      Else If ROSSO(C)>ROSSOFINALE(C)
  869.       Dec ROSSO(C)
  870.      End If 
  871.     End If 
  872.     If VERDEDISSOLTO(C)=FALSO
  873.      If VERDE(C)<VERDEFINALE(C)
  874.       Inc VERDE(C)
  875.      Else If VERDE(C)=VERDEFINALE(C)
  876.       VERDEDISSOLTO(C)=VERO
  877.      Else If VERDE(C)>VERDEFINALE(C)
  878.       Dec VERDE(C)
  879.      End If 
  880.     End If 
  881.     If BLUDISSOLTO(C)=FALSO
  882.      If BLU(C)<BLUFINALE(C)
  883.       Inc BLU(C)
  884.      Else If BLU(C)=BLUFINALE(C)
  885.       BLUDISSOLTO(C)=VERO
  886.      Else If BLU(C)>BLUFINALE(C)
  887.       Dec BLU(C)
  888.      End If 
  889.     End If 
  890.     Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C)
  891.     If C=0
  892.      C0LORIDISSOLTI=0
  893.     End If 
  894.     If ROSSODISSOLTO(C)=VERO
  895.      If VERDEDISSOLTO(C)=VERO
  896.       If BLUDISSOLTO(C)=VERO
  897.        Inc C0LORIDISSOLTI
  898.       End If 
  899.      End If 
  900.     End If 
  901.    Next C
  902.    If VELOCITA>0
  903.     Wait VELOCITA
  904.    End If 
  905.   Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1
  906.  End If 
  907. End Proc
  908. Procedure FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
  909.  ' Let the player type his/her name 
  910.  For POSIZIONI=98 To 0 Step -1
  911.   If POSIZIONE<POSIZIONI
  912.    GIOCATORE$(POSIZIONI+1)=GIOCATORE$(POSIZIONI)
  913.    PUNTEGGIO$(POSIZIONI+1)=GIOCATORE$(POSIZIONI)
  914.   Else If POSIZIONE=POSIZIONI
  915.    GIOCATORE$="Anonymous"
  916.    Repeat 
  917.     MESSAGGIO$=""
  918.     MESSAGGIO$=MESSAGGIO$+"You have entered the Top Hundred Scores..."+Chr$(10)
  919.     MESSAGGIO$=MESSAGGIO$+"...at position"+Str$(POSIZIONE)+"."+Chr$(10)
  920.     MESSAGGIO$=MESSAGGIO$+"Please backspace the Anonymous player..."+Chr$(10)
  921.     MESSAGGIO$=MESSAGGIO$+"...and type your name; press Return when done."+Chr$(10)
  922.     MESSAGGIO$=MESSAGGIO$+GIOCATORE$+Chr$(10)
  923.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,0]
  924.     _ASPETTA[500]
  925.     If TASTO=9
  926.      GIOCATORE$=Left$(GIOCATORE$,Len(GIOCATORE$)-1)
  927.     Else If TASTO=27
  928.      GIOCATORE$="Anonymous"
  929.      TASTO=13
  930.     Else If TASTO>31 and TASTO<256
  931.      GIOCATORE$=GIOCATORE$+Chr$(TASTO)
  932.     End If 
  933.    Until TASTO=13
  934.    GIOCATORE$(POSIZIONE)=GIOCATORE$
  935.    PUNTEGGIO$(POSIZIONE)=Str$(PUNTEGGIO)-" "
  936.   End If 
  937.  Next POSIZIONI
  938. End Proc
  939. Procedure HAISPARATOILRAGGIOLASER
  940.  ' Fire the laser ray 
  941.  If LASER>0 and RAGGIOLASERSPARATO=FALSO
  942.   XLASER=XBARRA : YLASER=YBARRA+4 : IMMAGINERAGGIOLASER=9+LASER
  943.   RAGGIOLASERSPARATO=VERO
  944.   If SUONICARICATI=VERO
  945.    Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE
  946.   Else 
  947.    Shoot 
  948.   End If 
  949.  End If 
  950. End Proc
  951. Procedure ILBOINGESTATOCOLPITO[BOING]
  952.  ' Check if the specified boing has been hitted 
  953.  If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  954.   PALLINA=Col(-1)-OGGETTOPALLINA
  955.   XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XBOING(BOING)-Int(XPALLINA#(PALLINA)))
  956.   If XDISTANZADELLAPALLINADALBOINGCOLPITO>9
  957.    DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  958.   End If 
  959.   YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YBOING(BOING)-Int(YPALLINA#(PALLINA)))
  960.   If YDISTANZADELLAPALLINADALBOINGCOLPITO>9
  961.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  962.   End If 
  963.   Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[VERO]
  964.   BOING(BOING)=RITARDOUSCITADEIBOING
  965.   If SUONICARICATI=VERO
  966.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  967.   Else 
  968.    Bell 3
  969.   End If 
  970.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  971.   Proc CANCELLAILRAGGIOLASER
  972.   Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  973.   BOING(BOING)=RITARDOUSCITADEIBOING
  974.   If SUONICARICATI=VERO
  975.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  976.   Else 
  977.    Bell 2
  978.   End If 
  979.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  980.   Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  981.   BOING(BOING)=RITARDOUSCITADEIBOING
  982.   If SUONICARICATI=VERO
  983.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  984.   Else 
  985.    Bell 1
  986.   End If 
  987.  End If 
  988. End Proc
  989. Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  990.  ' Check if the specified boing has gone out of the game field
  991.  If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDOUSCITADEIBOING
  992. End Proc
  993. Procedure IMPOSTAGLIOGGETTI
  994.  ' Set the object images
  995.  IMMAGINEPALLINA=Length(1)
  996.  IMMAGINELASER=6
  997.  MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIPAPERO-116
  998.  For IMMAGINE=0 To IMMAGINIPAPERO-1
  999.   IMMAGINEPAPERO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIPAPERO+IMMAGINE
  1000.  Next IMMAGINE
  1001.  For IMMAGINE=0 To IMMAGINIBOING-1
  1002.   IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING+IMMAGINE
  1003.  Next IMMAGINE
  1004. End Proc
  1005. Procedure IMPOSTAIBOING
  1006.  ' Set the boings to their initial status   
  1007.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  1008.   BOING(BOING)=0
  1009.  Next BOING
  1010. End Proc
  1011. Procedure IMPOSTAICOLORI
  1012.  ' Remember the screen palette
  1013.  Get Bob Palette 
  1014.  C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1
  1015.  If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31
  1016.  For C=0 To C0LORIDELLOSCHERMOMENOUNO
  1017.   C0LORE(C)=Colour(C)
  1018.  Next C
  1019. End Proc
  1020. Procedure IMPOSTAILAMPEGGI
  1021.  ' Set the colour flashes 
  1022.  Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
  1023.  Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
  1024.  Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
  1025. End Proc
  1026. Procedure IMPOSTAILRIMBALZODELLEPALLINE
  1027.  ' Set the bouncign of the balls to their initial state 
  1028.  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1029.   LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
  1030.  Next PALLINA
  1031. End Proc
  1032. Procedure IMPOSTAIPERCORSIDEIFILE
  1033.  ' Look for the file paths
  1034.  PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/"
  1035.  PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
  1036.  PERCORSODELLAMUSICA$=PERCORSO$+"Musica/"
  1037. End Proc
  1038. Procedure IMPOSTALADURATADELLERIGHE
  1039.  ' Set the time duration of the rows in 50th of a second  
  1040.  DURATADELLARIGA(0)=3000
  1041.  DURATADELLARIGA(1)=9000
  1042.  DURATADELLARIGA(2)=27000
  1043. End Proc
  1044. Procedure IMPOSTALARCOBALENO
  1045.  ' Set the rainbow
  1046.  Set Rainbow 0,0,271,"","",""
  1047.  For LINEADELLARCOBALENO=0 To 255
  1048.   Rain(0,LINEADELLARCOBALENO)=$FFF
  1049.  Next LINEADELLARCOBALENO
  1050.  Rainbow 0,257,0,271
  1051. End Proc
  1052. Procedure IMPOSTALEVOCI
  1053.  'Set the audio voices
  1054.  For VOCE=0 To 3
  1055.   VOCE(VOCE)=2^VOCE
  1056.  Next VOCE
  1057. End Proc
  1058. Procedure IMPOSTALEZONEDEIMATTONCINI
  1059.  ' Set the brick detection zones
  1060.  Reserve Zone 264
  1061.  For MATTONCINO=0 To 246
  1062.   LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13
  1063.   X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21
  1064.   Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11
  1065.   X0MATTONCINO=X0ZONA(MATTONCINO)
  1066.   Y0MATTONCINO=Y0ZONA(MATTONCINO)
  1067.   X1MATTONCINO=X0MATTONCINO+19
  1068.   Y1MATTONCINO=Y0MATTONCINO+9
  1069.   Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
  1070.  Next MATTONCINO
  1071. End Proc
  1072. Procedure IMPOSTALINGOMBRODELLABARRA
  1073.  ' Set the length of the bars from the center to an edge
  1074.  INGOMBRODELLABARRA(0)=10
  1075.  INGOMBRODELLABARRA(1)=16
  1076.  INGOMBRODELLABARRA(2)=31
  1077. End Proc
  1078. Procedure IMPOSTALOSCHERMO
  1079.  ' Set the screen 
  1080.  Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0
  1081.  Cls : Bob Update Off : Gr Writing 0 : Wait Vbl : Limit Mouse 
  1082. End Proc
  1083. Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
  1084.  ' Look for the position of the program 
  1085.  PERCORSO$=Dir$
  1086. End Proc
  1087. Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  1088.  ' Check if the specified ball has gone out of the game field 
  1089.  If YPALLINA#(PALLINA)>255+3
  1090.   Proc CANCELLALAPALLINA[PALLINA]
  1091.   PALLINA(PALLINA)=FALSO
  1092.   Dec PALLINEINCAMPO
  1093.  End If 
  1094. End Proc
  1095. Procedure LAPALLINAHACOLPITOLABARRA[PALLINA]
  1096.  ' Check if the specified ball has met the bar
  1097.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1098.   If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  1099.    If C0LLA=VERO
  1100.     XCOLLA(PALLINA)=XBARRA-Int(XPALLINA#(PALLINA))
  1101.     YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA))
  1102.     LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  1103.    End If 
  1104.    If Col(OGGETTOCENTRODELLABARRA)=VERO
  1105.     If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  1106.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0
  1107.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2
  1108.      LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
  1109.     Else 
  1110.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1111.     End If 
  1112.     If SUONICARICATI=VERO
  1113.      Sam Play VOCE,2 : Proc VOCESEGUENTE
  1114.     Else 
  1115.      Boom 
  1116.     End If 
  1117.    Else If Col(OGGETTOLATIDELLABARRA)=VERO
  1118.     If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  1119.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1120.     Else 
  1121.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2
  1122.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0
  1123.      LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  1124.     End If 
  1125.     If SUONICARICATI=VERO
  1126.      Sam Play VOCE,2,8363/2 : Proc VOCESEGUENTE
  1127.     Else 
  1128.      Boom 
  1129.     End If 
  1130.    End If 
  1131.    LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO
  1132.   End If 
  1133.  Else 
  1134.   LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  1135.  End If 
  1136. End Proc
  1137. Procedure LAPALLINAHACOLPITOLARIGA[PALLINA]
  1138.  ' Check if the specified ball has hitted the row 
  1139.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO
  1140.   If DELTAYPALLINA#(PALLINA)>0
  1141.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1142.   End If 
  1143.   If SUONICARICATI=VERO
  1144.    Sam Play VOCE,7 : Proc VOCESEGUENTE
  1145.   Else 
  1146.    Bell 96
  1147.   End If 
  1148.  End If 
  1149. End Proc
  1150. Procedure LIMITAIMOVIMENTIDELLABARRA
  1151.  ' Lock bar movements 
  1152.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  1153.  Y0LIMITETOPO=Y Hard(0)
  1154.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  1155.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  1156.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  1157. End Proc
  1158. Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  1159.  ' Lock bar movements while it is changing
  1160.  If OGGETTO>39 and OGGETTO<46
  1161.   INGOMBRODELLABARRA=46-OGGETTO+10
  1162.  Else If OGGETTO>12 and OGGETTO<27
  1163.   INGOMBRODELLABARRA=OGGETTO+4
  1164.  End If 
  1165.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA)
  1166.  Y0LIMITETOPO=Y Hard(0)
  1167.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA)
  1168.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  1169.  Wait Vbl 
  1170.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  1171. End Proc
  1172. Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO]
  1173.  '-> Limiti by Stefano Regattin 
  1174.  'i> 19 maggio 1996 
  1175.  'm> 12 giugno 1996 
  1176.  '--------------------------------------------------------
  1177.  'La procedura equivale alle seguenti linee di programma: 
  1178.  ' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO
  1179.  ' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO
  1180.  'Se LIMITEMINIMO ï¿½ maggiore di LIMITEMASSIMO ne scambia i valori 
  1181.  '----------------------------------------------------------------  
  1182.  If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO
  1183.  NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO)
  1184. End Proc[NUMERO]
  1185. Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,ESCESEUGUALEAZERO]
  1186.  ' Manage the bonus bricks
  1187.  If ESCESEUGUALEAZERO>0 Then Pop Proc
  1188.  If MATTONCINO=0
  1189.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  1190.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1191.    If TIPODIMATTONCINODIPOTENZIAMENTO>0
  1192.     Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),115+TIPODIMATTONCINODIPOTENZIAMENTO
  1193.     Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  1194.     Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1195.     Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  1196.    End If 
  1197.   Next MATTONCINODIPOTENZIAMENTO
  1198.  Else 
  1199.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  1200.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1201.    If TIPODIMATTONCINODIPOTENZIAMENTO=0
  1202.     If MATTONCINO>0
  1203.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(19)+1
  1204.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1)
  1205.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1)
  1206.     Else If MATTONCINO<0
  1207.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO
  1208.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9
  1209.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9
  1210.     End If 
  1211.     Exit 
  1212.    End If 
  1213.   Next MATTONCINODIPOTENZIAMENTO
  1214.  End If 
  1215. End Proc
  1216. Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  1217.  ' Check if a brick has been hitted by the specified ball 
  1218.  XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA))
  1219.  MATTONCINO=Zone(XPALLINA,YPALLINA)
  1220.  If MATTONCINO>0
  1221.   MATTONELLA=MATTONCINO(MATTONCINO-1)
  1222.   If MATTONELLA>0
  1223.    If MATTONELLA<10
  1224.     MATTONCINOELIMINATODALLAPALLINA=VERO
  1225.    Else If MATTONELLA>9 and MATTONELLA<28
  1226.     Add MATTONELLA,-9
  1227.     MATTONCINO(MATTONCINO-1)=MATTONELLA
  1228.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1229.    Else 
  1230.     MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1231.    End If 
  1232.    Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  1233.    Y1MATTONCINO=Y0MATTONCINO+9
  1234.    If RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  1235.     If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO
  1236.      DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1237.     Else 
  1238.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1239.     End If 
  1240.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1241.      If SUONICARICATI=VERO
  1242.       Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE
  1243.      Else 
  1244.       Bell 40
  1245.      End If 
  1246.     Else 
  1247.      If SUONICARICATI=VERO
  1248.       Sam Play VOCE,3 : Proc VOCESEGUENTE
  1249.      Else 
  1250.       Bell 30
  1251.      End If 
  1252.     End If 
  1253.    Else 
  1254.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1255.      If SUONICARICATI=VERO
  1256.       Sam Play VOCE,6,8363*SEMITONO#^4 : Proc VOCESEGUENTE
  1257.      Else 
  1258.       Bell 60
  1259.      End If 
  1260.     Else 
  1261.      If SUONICARICATI=VERO
  1262.       Sam Play VOCE,6 : Proc VOCESEGUENTE
  1263.      Else 
  1264.       Bell 50
  1265.      End If 
  1266.     End If 
  1267.    End If 
  1268.    If MATTONCINOELIMINATODALLAPALLINA=VERO
  1269.     Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1270.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)]
  1271.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1272.     MATTONCINO(MATTONCINO-1)=0
  1273.    End If 
  1274.   End If 
  1275.  End If 
  1276. End Proc
  1277. Procedure MATTONCINOCOLPITODALRAGGIOLASER
  1278.  ' Check if a brick has been hitted by the laser ray
  1279.  If RAGGIOLASERSPARATO=VERO
  1280.   MATTONCINO=Zone(XLASER,YLASER)
  1281.   If MATTONCINO>0
  1282.    MATTONELLA=MATTONCINO(MATTONCINO-1)
  1283.    If MATTONELLA>0
  1284.     If MATTONELLA<10
  1285.      MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1286.     Else If MATTONELLA>9 and MATTONELLA<28
  1287.      Proc CANCELLAILRAGGIOLASER
  1288.      Add MATTONELLA,-9
  1289.      MATTONCINO(MATTONCINO-1)=MATTONELLA
  1290.      Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1291.     Else 
  1292.      MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1293.      If MATTONELLA=28
  1294.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1295.      Else If MATTONELLA=29 and LASER>1
  1296.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1297.      Else If MATTONELLA=30 and LASER=3
  1298.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1299.      Else If MATTONELLA=31
  1300.       RAGGIOLASERRIFLESSO=VERO
  1301.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1302.      Else If MATTONELLA=32 and LASER>1
  1303.       RAGGIOLASERRIFLESSO=VERO
  1304.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1305.      Else If MATTONELLA=33 and LASER=3
  1306.       RAGGIOLASERRIFLESSO=VERO
  1307.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1308.      End If 
  1309.     End If 
  1310.     If MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1311.      Proc CANCELLAILRAGGIOLASER
  1312.      Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1313.      Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1314.      Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
  1315.      MATTONCINO(MATTONCINO-1)=0
  1316.     End If 
  1317.    End If 
  1318.   End If 
  1319.  End If 
  1320. End Proc
  1321. Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  1322.  ' Check if the bar has met the specified bonus brick 
  1323.  If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1324.   If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO
  1325.    MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1326.    Add PUNTEGGIO,20
  1327.   Else 
  1328.    Add PUNTEGGIO,10
  1329.   End If 
  1330.   Proc MOSTRAILPUNTEGGIO[VERO]
  1331.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  1332.   Repeat 
  1333.    If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem add a ball in the game field 
  1334.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1335.      If PALLINA(PALLINA)=FALSO
  1336.       PALLINA(PALLINA)=VERO
  1337.       XPALLINA#(PALLINA)=XBARRA
  1338.       YPALLINA#(PALLINA)=YBARRA-3
  1339.       VELOCITADELLAPALLINA#(PALLINA)=1
  1340.       D1REZIONEXPALLINA=Rnd(1)
  1341.       If D1REZIONEXPALLINA=1
  1342.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  1343.       Else 
  1344.        DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  1345.       End If 
  1346.       DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  1347.       Inc PALLINEINCAMPO
  1348.       Exit 
  1349.      End If 
  1350.     Next 
  1351.     If SUONICARICATI=VERO
  1352.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1353.     Else 
  1354.      Bell 30
  1355.     End If 
  1356.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1357.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+  
  1358.     If PALLINE<1000
  1359.      Inc PALLINE : Proc MOSTRALEPALLINERIMASTE
  1360.      If SUONICARICATI=VERO
  1361.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1362.      Else 
  1363.       Bell 30
  1364.      End If 
  1365.     End If 
  1366.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1367.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)-    
  1368.     If PALLINE>0
  1369.      Dec PALLINE : Proc MOSTRALEPALLINERIMASTE
  1370.      If SUONICARICATI=VERO
  1371.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1372.      Else 
  1373.       Bell 10
  1374.      End If 
  1375.     End If 
  1376.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1377.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem B(ar)+ 
  1378.     If LUNGHEZZADELLABARRA<2
  1379.      Inc LUNGHEZZADELLABARRACAMBIATA
  1380.      If SUONICARICATI=VERO
  1381.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1382.      Else 
  1383.       Bell 30
  1384.      End If 
  1385.     End If 
  1386.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1387.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)- 
  1388.     If LUNGHEZZADELLABARRA>0
  1389.      Dec LUNGHEZZADELLABARRACAMBIATA
  1390.      If SUONICARICATI=VERO
  1391.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1392.      Else 
  1393.       Bell 10
  1394.      End If 
  1395.     End If 
  1396.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1397.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem D(uck) 
  1398.     _PAPEROINCAMPO= Not _PAPEROINCAMPO
  1399.     If _PAPEROINCAMPO=VERO
  1400.      If SUONICARICATI=VERO
  1401.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1402.      Else 
  1403.       Bell 30
  1404.      End If 
  1405.     Else 
  1406.      If SUONICARICATI=VERO
  1407.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1408.      Else 
  1409.       Bell 10
  1410.      End If 
  1411.     End If 
  1412.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1413.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem G(lue) 
  1414.     C0LLA= Not C0LLA
  1415.     If C0LLA=VERO
  1416.      If SUONICARICATI=VERO
  1417.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1418.      Else 
  1419.       Bell 30
  1420.      End If 
  1421.     Else 
  1422.      If SUONICARICATI=VERO
  1423.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1424.      Else 
  1425.       Bell 10
  1426.      End If 
  1427.     End If 
  1428.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1429.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem L(aser)+ 
  1430.     If LASER=-1
  1431.      LASER=1
  1432.     Else If LASER=1
  1433.      LASER=2
  1434.     Else If LASER=2
  1435.      LASER=3
  1436.     End If 
  1437.     If SUONICARICATI=VERO
  1438.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1439.     Else 
  1440.      Bell 30
  1441.     End If 
  1442.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1443.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem L(aser)- 
  1444.     If LASER>0
  1445.      Dec LASER
  1446.      If SUONICARICATI=VERO
  1447.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1448.      Else 
  1449.       Bell 10
  1450.      End If 
  1451.     End If 
  1452.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1453.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem N(ext level) 
  1454.     MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0
  1455.     If SUONICARICATI=VERO
  1456.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1457.     Else 
  1458.      Bell 30
  1459.     End If 
  1460.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1461.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem P(oints)+  
  1462.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1463.      If PUNTEGGIO<9999800
  1464.       Add PUNTEGGIO,180
  1465.      End If 
  1466.     Else 
  1467.      If PUNTEGGIO<9999900
  1468.       Add PUNTEGGIO,90
  1469.      End If 
  1470.     End If 
  1471.     Proc MOSTRAILPUNTEGGIO[VERO]
  1472.     If SUONICARICATI=VERO
  1473.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1474.     Else 
  1475.      Bell 30
  1476.     End If 
  1477.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1478.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem P(oints)-  
  1479.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1480.      Add PUNTEGGIO,-220
  1481.     Else 
  1482.      Add PUNTEGGIO,-110
  1483.     End If 
  1484.     If PUNTEGGIO<0
  1485.      PUNTEGGIO=0
  1486.     End If 
  1487.     Proc MOSTRAILPUNTEGGIO[VERO]
  1488.     If SUONICARICATI=VERO
  1489.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1490.     Else 
  1491.      Bell 10
  1492.     End If 
  1493.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1494.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem R(ow)+ 
  1495.     If RIGA<3
  1496.      T0GLILARIGA=RIGA : Inc RIGA
  1497.      If SUONICARICATI=VERO
  1498.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1499.      Else 
  1500.       Bell 30
  1501.      End If 
  1502.     End If 
  1503.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1504.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem R(ow)- 
  1505.     If RIGA>0
  1506.      T0GLILARIGA=RIGA
  1507.      If SUONICARICATI=VERO
  1508.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1509.      Else 
  1510.       Bell 30
  1511.      End If 
  1512.     End If 
  1513.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1514.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem S(peed)+ 
  1515.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1516.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8
  1517.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5
  1518.       If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
  1519.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  1520.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  1521.       Else 
  1522.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  1523.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  1524.       End If 
  1525.      End If 
  1526.     Next PALLINA
  1527.     If SUONICARICATI=VERO
  1528.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1529.     Else 
  1530.      Bell 30
  1531.     End If 
  1532.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1533.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem S(peed)- 
  1534.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1535.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5
  1536.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5
  1537.       If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
  1538.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  1539.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  1540.       Else 
  1541.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  1542.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  1543.       End If 
  1544.      End If 
  1545.     Next PALLINA
  1546.     If SUONICARICATI=VERO
  1547.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1548.     Else 
  1549.      Bell 30
  1550.     End If 
  1551.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1552.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem X(treme) 
  1553.     RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI
  1554.     If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO
  1555.      If SUONICARICATI=VERO
  1556.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1557.      Else 
  1558.       Bell 30
  1559.      End If 
  1560.     Else 
  1561.      If SUONICARICATI=VERO
  1562.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1563.      Else 
  1564.       Bell 10
  1565.      End If 
  1566.     End If 
  1567.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1568.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem y+ 
  1569.     If YBARRA<247
  1570.      Add YBARRA,5
  1571.      If SUONICARICATI=VERO
  1572.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1573.      Else 
  1574.       Bell 30
  1575.      End If 
  1576.     End If 
  1577.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1578.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem y- 
  1579.     If YBARRA>197
  1580.      Add YBARRA,-5
  1581.      If SUONICARICATI=VERO
  1582.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1583.      Else 
  1584.       Bell 10
  1585.      End If 
  1586.     End If 
  1587.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1588.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ?
  1589.     If SUONICARICATI=VERO
  1590.      Sam Play VOCE,18 : Proc VOCESEGUENTE
  1591.     Else 
  1592.      Bell 30
  1593.     End If 
  1594.     TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1
  1595.    End If 
  1596.   Until TIPODIMATTONCINODIPOTENZIAMENTO=0
  1597.  End If 
  1598. End Proc
  1599. Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  1600.  ' Check if the specified bonus brick has gone out of the game field
  1601.  If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255
  1602.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  1603.  End If 
  1604. End Proc
  1605. Procedure METTIILPANNELLO
  1606.  ' Put the panel in the game field
  1607.  XPANNELLO=Screen Width-LARGHEZZAPANNELLO
  1608.  Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52
  1609. End Proc
  1610. Procedure METTIECONTAIMATTONCINI
  1611.  ' Put the bricks in the game field and count them
  1612.  MATTONCINI=0
  1613.  For MATTONCINO=0 To 246
  1614.   If MATTONCINO(MATTONCINO)>0
  1615.    Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO)
  1616.    Inc MATTONCINI
  1617.   Else 
  1618.    Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  1619.   End If 
  1620.  Next MATTONCINO
  1621. End Proc
  1622. Procedure MOSTRAICREDITI
  1623.  ' Show the credits 
  1624.  CREDITI$="EsseErre Sofware Solutions"+Chr$(10)
  1625.  CREDITI$=CREDITI$+"presents..."+Chr$(10)
  1626.  CREDITI$=CREDITI$+"************"+Chr$(10)
  1627.  CREDITI$=CREDITI$+"* MATTONITE *"+Chr$(10)
  1628.  CREDITI$=CREDITI$+"************"+Chr$(10)
  1629.  CREDITI$=CREDITI$+"by Stefano Regattin"+Chr$(10)
  1630.  CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+Chr$(10)
  1631.  CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+Chr$(10)
  1632.  CREDITI$=CREDITI$+"http://utenti.tripod.it/esseerre/Stefano.html"+Chr$(10)
  1633.  CREDITI$=CREDITI$+"e-mail: esseerre@lycos.it"+Chr$(10)
  1634.  CREDITI$=CREDITI$+"This game and its editor are freely shared out."+Chr$(10)
  1635.  CREDITI$=CREDITI$+"They have been created by AMOS Professional 2.0"+Chr$(10)
  1636.  CREDITI$=CREDITI$+"and compiled by AMOS Professional Compiler 2.0."+Chr$(10)
  1637.  CREDITI$=CREDITI$+"If you want the source codes of Mattonite,"+Chr$(10)
  1638.  CREDITI$=CREDITI$+"MattoniteEditor or both, search on Aminet the"+Chr$(10)
  1639.  CREDITI$=CREDITI$+"archive Mattonite_Src.lha."+Chr$(10)
  1640.  CREDITI$=CREDITI$+"The source codes don't require any additional"+Chr$(10)
  1641.  CREDITI$=CREDITI$+"extension."+Chr$(10)
  1642.  CREDITI$=CREDITI$+"If you will create a new game starting from these"+Chr$(10)
  1643.  CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+Chr$(10)
  1644.  CREDITI$=CREDITI$+"mention me in your resulting final program."+Chr$(10)
  1645.  CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+Chr$(10)
  1646.  CREDITI$=CREDITI$+"if she would liked I created a game for her,"+Chr$(10)
  1647.  CREDITI$=CREDITI$+"assuring her I was able to create almost any"+Chr$(10)
  1648.  CREDITI$=CREDITI$+"kind of game she wanted."+Chr$(10)
  1649.  CREDITI$=CREDITI$+"The answer was yes and she specified a game"+Chr$(10)
  1650.  CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+Chr$(10)
  1651.  CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+Chr$(10)
  1652.  CREDITI$=CREDITI$+"gaining points for the hits."+Chr$(10)
  1653.  CREDITI$=CREDITI$+"So I started the developing of this game and"+Chr$(10)
  1654.  CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+Chr$(10)
  1655.  CREDITI$=CREDITI$+"brickache."+Chr$(10)
  1656.  CREDITI$=CREDITI$+"The purpose of the game is simple: destroy all"+Chr$(10)
  1657.  CREDITI$=CREDITI$+"the bricks by the balls hits to overcome all"+Chr$(10)
  1658.  CREDITI$=CREDITI$+"the levels and collect bonus bricks to improve"+Chr$(10)
  1659.  CREDITI$=CREDITI$+"playability."+Chr$(10)
  1660.  CREDITI$=CREDITI$+"Press the space bar to shock the balls."+Chr$(10)
  1661.  CREDITI$=CREDITI$+"Press the shift keys to fire the laser ray over"+Chr$(10)
  1662.  CREDITI$=CREDITI$+"the bricks to hit the boings."+Chr$(10)
  1663.  CREDITI$=CREDITI$+"Press a (mouse) key to scroll quickly the text"+Chr$(10)
  1664.  CREDITI$=CREDITI$+"or press the Esc key to leave the text."+Chr$(10)
  1665.  CREDITI$=CREDITI$+"This is the end...Enjoy!"
  1666.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250]
  1667. End Proc
  1668. Procedure MOSTRAILBONUS[M0DO]
  1669.  ' Show the bonus 
  1670.  If M0DO=VERO
  1671.   CIFRA=BONUS/1000000 mod 10
  1672.   Paste Bob 305,120,73+CIFRA
  1673.   CIFRA=BONUS/100000 mod 10
  1674.   Paste Bob 305,138,73+CIFRA
  1675.   CIFRA=BONUS/10000 mod 10
  1676.   Paste Bob 305,156,73+CIFRA
  1677.   CIFRA=BONUS/1000 mod 10
  1678.   Paste Bob 305,174,73+CIFRA
  1679.   CIFRA=BONUS/100 mod 10
  1680.   Paste Bob 305,192,73+CIFRA
  1681.   CIFRA=BONUS/10 mod 10
  1682.   Paste Bob 305,210,73+CIFRA
  1683.   CIFRA=BONUS mod 10
  1684.   Paste Bob 305,228,73+CIFRA
  1685.  Else 
  1686.   CIFRA=BONUS mod 10
  1687.   Paste Bob 305,228,73+CIFRA
  1688.   If CIFRA=9
  1689.    CIFRA=BONUS/10 mod 10
  1690.    Paste Bob 305,210,73+CIFRA
  1691.    If CIFRA=9
  1692.     CIFRA=BONUS/100 mod 10
  1693.     Paste Bob 305,192,73+CIFRA
  1694.     If CIFRA=9
  1695.      CIFRA=BONUS/1000 mod 10
  1696.      Paste Bob 305,174,73+CIFRA
  1697.      If CIFRA=9
  1698.       CIFRA=BONUS/10000 mod 10
  1699.       Paste Bob 305,156,73+CIFRA
  1700.       If CIFRA=9
  1701.        CIFRA=BONUS/100000 mod 10
  1702.        Paste Bob 305,138,73+CIFRA
  1703.        If CIFRA=9
  1704.         CIFRA=BONUS/1000000 mod 10
  1705.         Paste Bob 305,120,73+CIFRA
  1706.        End If 
  1707.       End If 
  1708.      End If 
  1709.     End If 
  1710.    End If 
  1711.   End If 
  1712.  End If 
  1713. End Proc
  1714. Procedure MOSTRAILLASER
  1715.  ' Show the laser beam over the bar 
  1716.  If LASER>0
  1717.   Bob OGGETTOLASER,XBARRA,YBARRA,IMMAGINELASER+LASER
  1718.  Else If LASER=0
  1719.   Proc T0GLIILLASER
  1720.   LASER=-1
  1721.  End If 
  1722. End Proc
  1723. Procedure MOSTRAILLIVELLO
  1724.  ' Shov the level 
  1725.  CIFRA=LIVELLO/100 mod 10
  1726.  Paste Bob 273,29,63+CIFRA
  1727.  CIFRA=LIVELLO/10 mod 10
  1728.  Paste Bob 289,29,63+CIFRA
  1729.  CIFRA=LIVELLO mod 10
  1730.  Paste Bob 305,29,63+CIFRA
  1731. End Proc
  1732. Procedure MOSTRAILPUNTEGGIO[M0DO]
  1733.  ' Show the score 
  1734.  If M0DO=VERO
  1735.   CIFRA=PUNTEGGIO/1000000 mod 10
  1736.   Paste Bob 273,120,53+CIFRA
  1737.   CIFRA=PUNTEGGIO/100000 mod 10
  1738.   Paste Bob 273,138,53+CIFRA
  1739.   CIFRA=PUNTEGGIO/10000 mod 10
  1740.   Paste Bob 273,156,53+CIFRA
  1741.   CIFRA=PUNTEGGIO/1000 mod 10
  1742.   Paste Bob 273,174,53+CIFRA
  1743.   CIFRA=PUNTEGGIO/100 mod 10
  1744.   Paste Bob 273,192,53+CIFRA
  1745.   CIFRA=PUNTEGGIO/10 mod 10
  1746.   Paste Bob 273,210,53+CIFRA
  1747.   CIFRA=PUNTEGGIO mod 10
  1748.   Paste Bob 273,228,53+CIFRA
  1749.  Else 
  1750.   CIFRA=PUNTEGGIO mod 10
  1751.   Paste Bob 273,228,53+CIFRA
  1752.   If CIFRA=0
  1753.    CIFRA=PUNTEGGIO/10 mod 10
  1754.    Paste Bob 273,210,53+CIFRA
  1755.    If CIFRA=0
  1756.     CIFRA=PUNTEGGIO/100 mod 10
  1757.     Paste Bob 273,192,53+CIFRA
  1758.     If CIFRA=0
  1759.      CIFRA=PUNTEGGIO/1000 mod 10
  1760.      Paste Bob 273,174,53+CIFRA
  1761.      If CIFRA=0
  1762.       CIFRA=PUNTEGGIO/10000 mod 10
  1763.       Paste Bob 273,156,53+CIFRA
  1764.       If CIFRA=0
  1765.        CIFRA=PUNTEGGIO/100000 mod 10
  1766.        Paste Bob 273,138,53+CIFRA
  1767.        If CIFRA=0
  1768.         CIFRA=PUNTEGGIO/1000000 mod 10
  1769.         Paste Bob 273,120,53+CIFRA
  1770.        End If 
  1771.       End If 
  1772.      End If 
  1773.     End If 
  1774.    End If 
  1775.   End If 
  1776.  End If 
  1777.  If PUNTEGGIO>PUNTEGGIOMASSIMO
  1778.   PUNTEGGIOMASSIMO=PUNTEGGIO
  1779.  End If 
  1780.  Proc MOSTRAILPUNTEGGIOMASSIMO[M0DO]
  1781.  Proc MOSTRALAPOSIZIONE
  1782. End Proc
  1783. Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO]
  1784.  ' Show the best score
  1785.  If M0DO=VERO
  1786.   CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
  1787.   Paste Bob 289,120,63+CIFRA
  1788.   CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
  1789.   Paste Bob 289,138,63+CIFRA
  1790.   CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
  1791.   Paste Bob 289,156,63+CIFRA
  1792.   CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
  1793.   Paste Bob 289,174,63+CIFRA
  1794.   CIFRA=PUNTEGGIOMASSIMO/100 mod 10
  1795.   Paste Bob 289,192,63+CIFRA
  1796.   CIFRA=PUNTEGGIOMASSIMO/10 mod 10
  1797.   Paste Bob 289,210,63+CIFRA
  1798.   CIFRA=PUNTEGGIOMASSIMO mod 10
  1799.   Paste Bob 289,228,63+CIFRA
  1800.  Else 
  1801.   CIFRA=PUNTEGGIOMASSIMO mod 10
  1802.   Paste Bob 289,228,63+CIFRA
  1803.   If CIFRA=0
  1804.    CIFRA=PUNTEGGIOMASSIMO/10 mod 10
  1805.    Paste Bob 289,210,63+CIFRA
  1806.    If CIFRA=0
  1807.     CIFRA=PUNTEGGIOMASSIMO/100 mod 10
  1808.     Paste Bob 289,192,63+CIFRA
  1809.     If CIFRA=0
  1810.      CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
  1811.      Paste Bob 289,174,63+CIFRA
  1812.      If CIFRA=0
  1813.       CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
  1814.       Paste Bob 289,156,63+CIFRA
  1815.       If CIFRA=0
  1816.        CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
  1817.        Paste Bob 289,138,63+CIFRA
  1818.        If CIFRA=0
  1819.         CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
  1820.         Paste Bob 289,120,63+CIFRA
  1821.        End If 
  1822.       End If 
  1823.      End If 
  1824.     End If 
  1825.    End If 
  1826.   End If 
  1827.  End If 
  1828. End Proc
  1829. Procedure MOSTRAILRAGGIOLASER
  1830.  ' Show the laser ray 
  1831.  If RAGGIOLASERSPARATO=VERO
  1832.   Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER
  1833.   If RAGGIOLASERRIFLESSO=VERO
  1834.    If YLASER<255
  1835.     Add YLASER,5
  1836.    Else 
  1837.     Proc CANCELLAILRAGGIOLASER
  1838.    End If 
  1839.   Else 
  1840.    If YLASER>0
  1841.     Add YLASER,-5
  1842.    Else 
  1843.     Proc CANCELLAILRAGGIOLASER
  1844.    End If 
  1845.   End If 
  1846.   Bob Update 
  1847.  End If 
  1848. End Proc
  1849. Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  1850.  ' Show the top hundred player scores 
  1851.  If Exist(PUNTEGGI$)
  1852.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250]
  1853.  Else 
  1854.   NONCISONOGIOCATORI$="No players till now..."+Chr$(10)
  1855.   NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue"
  1856.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250]
  1857.  End If 
  1858. End Proc
  1859. Procedure MOSTRALABARRA
  1860.  ' Show the bar 
  1861.  If LUNGHEZZADELLABARRA=0
  1862.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,5
  1863.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,6
  1864.  Else If LUNGHEZZADELLABARRA=1
  1865.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,1
  1866.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,2
  1867.  Else If LUNGHEZZADELLABARRA=2
  1868.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,3
  1869.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,4
  1870.  End If 
  1871. End Proc
  1872. Procedure MOSTRALAPOSIZIONE
  1873.  ' Show the current player position 
  1874.  For POSIZIONE=1 To 100
  1875.   If PUNTEGGIO>Val(PUNTEGGIO$(POSIZIONE-1))
  1876.    Exit 
  1877.   Else If PUNTEGGIO$(POSIZIONE-1)=""
  1878.    Exit 
  1879.   End If 
  1880.  Next POSIZIONE
  1881.  CIFRA=POSIZIONE/100 mod 10
  1882.  Paste Bob 273,47,73+CIFRA
  1883.  CIFRA=POSIZIONE/10 mod 10
  1884.  Paste Bob 289,47,73+CIFRA
  1885.  CIFRA=POSIZIONE mod 10
  1886.  Paste Bob 305,47,73+CIFRA
  1887. End Proc
  1888. Procedure MOSTRALARIGA[TIPODIRIGA]
  1889.  ' Show the row 
  1890.  If TIPODIRIGA=1
  1891.   IMMAGINERIGA=IMMAGINERIGAUNO
  1892.  Else If TIPODIRIGA=2
  1893.   IMMAGINERIGA=IMMAGINERIGADUE
  1894.  Else If TIPODIRIGA=3
  1895.   IMMAGINERIGA=IMMAGINERIGATRE
  1896.  End If 
  1897.  If XRIGA>0
  1898.   Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA
  1899.  Else 
  1900.   Proc T0GLILARIGA
  1901.   T0GLILARIGA=0
  1902.  End If 
  1903.  Bob Update 
  1904. End Proc
  1905. Procedure MOSTRALEPALLINERIMASTE
  1906.  ' Show the remained balls
  1907.  PALLINERIMASTE=PALLINE-1
  1908.  CIFRA=PALLINERIMASTE/100 mod 10
  1909.  Paste Bob 273,11,53+CIFRA
  1910.  CIFRA=PALLINERIMASTE/10 mod 10
  1911.  Paste Bob 289,11,53+CIFRA
  1912.  CIFRA=PALLINERIMASTE mod 10
  1913.  Paste Bob 305,11,53+CIFRA
  1914. End Proc
  1915. Procedure _PAPEROINCAMPO
  1916.  ' Manage the duck
  1917.  Bob OGGETTOPAPERO,XPAPERO,YPAPERO,IMMAGINEPAPERO(IMMAGINEPAPERO)
  1918.  Inc IMMAGINEPAPERO : If IMMAGINEPAPERO=IMMAGINIPAPERO Then IMMAGINEPAPERO=0
  1919.  If MATTONCINOTROVATOPERILPAPERO<247
  1920.   If MATTONCINO(MATTONCINOTROVATOPERILPAPERO)>0
  1921.    XMATTONCINOPERILPAPERO=X0ZONA(MATTONCINOTROVATOPERILPAPERO)-XPAPERO
  1922.    YMATTONCINOPERILPAPERO=Y0ZONA(MATTONCINOTROVATOPERILPAPERO)-YPAPERO
  1923.    If Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)<DISTANZADELMATTONCINOPIUVICINOALPAPERO
  1924.     DISTANZADELMATTONCINOPIUVICINOALPAPERO=Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)
  1925.     MATTONCINOPERILPAPERO=MATTONCINOTROVATOPERILPAPERO
  1926.    End If 
  1927.   End If 
  1928.   Add MATTONCINOTROVATOPERILPAPERO,1,0 To 247
  1929.  Else 
  1930.   DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  1931.   XDISTANZADELPAPERODALMATTONCINOPIUVICINO=X0ZONA(MATTONCINOPERILPAPERO)+10-XPAPERO
  1932.   If XDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
  1933.    Inc XPAPERO
  1934.   Else If XDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
  1935.    Dec XPAPERO
  1936.   End If 
  1937.   YDISTANZADELPAPERODALMATTONCINOPIUVICINO=Y0ZONA(MATTONCINOPERILPAPERO)+5-YPAPERO
  1938.   If YDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
  1939.    Inc YPAPERO
  1940.   Else If YDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
  1941.    Dec YPAPERO
  1942.   End If 
  1943.   If XDISTANZADELPAPERODALMATTONCINOPIUVICINO=0 and YDISTANZADELPAPERODALMATTONCINOPIUVICINO=0
  1944.    If MATTONCINO(MATTONCINOPERILPAPERO)>0
  1945.     X0MATTONCINO=X0ZONA(MATTONCINOPERILPAPERO)
  1946.     Y0MATTONCINO=Y0ZONA(MATTONCINOPERILPAPERO)
  1947.     X1MATTONCINO=X0MATTONCINO+19
  1948.     Y1MATTONCINO=Y0MATTONCINO+9
  1949.     Proc CANCELLAILPAPERO
  1950.     Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
  1951.     Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1952.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINOPERILPAPERO,Rnd(9)]
  1953.     MATTONCINO(MATTONCINOPERILPAPERO)=0
  1954.    Else 
  1955.     MATTONCINOTROVATOPERILPAPERO=0
  1956.    End If 
  1957.   End If 
  1958.  End If 
  1959. End Proc
  1960. Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO]
  1961.  ' Redraw the hitted bricks 
  1962.  For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  1963.   If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  1964.    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  1965.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  1966.   Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
  1967.    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  1968.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  1969.    Pop Proc
  1970.   End If 
  1971.  Next MATTONCINODARIDISEGNARE
  1972. End Proc
  1973. Procedure RIMETTILOSFONDO
  1974.  ' Redraw the screen
  1975.  Put Block 1
  1976. End Proc
  1977. Procedure SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  1978.  ' Save the top hundred scores
  1979.  Kill PUNTEGGI$
  1980.  Open Out 1,PUNTEGGI$
  1981.  For POSIZIONI=0 To 99
  1982.   If Val(PUNTEGGIO$(POSIZIONI))>0
  1983.    Print #1,GIOCATORE$(POSIZIONI)
  1984.    Print #1,PUNTEGGIO$(POSIZIONI)
  1985.   End If 
  1986.  Next POSIZIONI
  1987.  Close 1
  1988. End Proc
  1989. Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0]
  1990.  ' Manage the texts 
  1991.  If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height
  1992.  ALTEZZALINEA=ALTEZZAFONT+3
  1993.  LINEE=1
  1994.  POSIZIONEPAROLA=1
  1995.  Repeat 
  1996.   ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
  1997.   If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1
  1998.  Until ACAPO=0
  1999.  If LINEE=1
  2000.   C0LORETESTO=C0LORETESTOPRIMALINEA
  2001.   XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2
  2002.   YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base
  2003.   Proc RIMETTILOSFONDO
  2004.   Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  2005.   Proc _ASPETTA[TEMP0]
  2006.   If TASTO=27
  2007.    Pop Proc
  2008.   End If 
  2009.  Else 
  2010.   Dim TESTO$(LINEE-1)
  2011.   POSIZIONEPAROLA=1
  2012.   For LINEA=0 To LINEE-1
  2013.    ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
  2014.    If ACAPO>0
  2015.     TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA)
  2016.     POSIZIONEPAROLA=ACAPO+1
  2017.    Else 
  2018.     TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1)
  2019.    End If 
  2020.   Next LINEA
  2021.   ALTEZZATESTO=ALTEZZALINEA*LINEE
  2022.   If ALTEZZATESTO<Screen Height
  2023.    ILTESTOSTATUTTONELLOSCHERMO=VERO
  2024.   Else 
  2025.    For LINEA=LINEE To 2 Step -1
  2026.     ALTEZZATESTO=ALTEZZALINEA*LINEA
  2027.     If ALTEZZATESTO<Screen Height
  2028.      NUMEROMASSIMODILINEENELLOSCHERMO=LINEA
  2029.      Exit 
  2030.     End If 
  2031.    Next LINEA
  2032.   End If 
  2033.   If ILTESTOSTATUTTONELLOSCHERMO=VERO
  2034.    Proc RIMETTILOSFONDO
  2035.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  2036.    For LINEA=0 To LINEE-1
  2037.     If LINEA mod 2=0
  2038.      C0LORETESTO=C0LORETESTOPRIMALINEA
  2039.     Else 
  2040.      C0LORETESTO=C0LORETESTOSECONDALINEA
  2041.     End If 
  2042.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  2043.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  2044.    Next LINEA
  2045.    Proc _ASPETTA[TEMP0]
  2046.    If TASTO=27
  2047.     Pop Proc
  2048.    End If 
  2049.   Else 
  2050.    Proc RIMETTILOSFONDO
  2051.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  2052.    For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  2053.     If(LINEA) mod 2=0
  2054.      C0LORETESTO=C0LORETESTOPRIMALINEA
  2055.     Else 
  2056.      C0LORETESTO=C0LORETESTOSECONDALINEA
  2057.     End If 
  2058.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  2059.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  2060.    Next LINEA
  2061.    Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO]
  2062.    If TASTO=27
  2063.     Pop Proc
  2064.    End If 
  2065.    For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO
  2066.     Proc RIMETTILOSFONDO
  2067.     For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  2068.      If(LINEA+LINEANELLOSCHERMO) mod 2=0
  2069.       C0LORETESTO=C0LORETESTOPRIMALINEA
  2070.      Else 
  2071.       C0LORETESTO=C0LORETESTOSECONDALINEA
  2072.      End If 
  2073.      XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2
  2074.      Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO]
  2075.     Next LINEANELLOSCHERMO
  2076.     Proc _ASPETTA[TEMP0]
  2077.     If TASTO=27
  2078.      Pop Proc
  2079.     End If 
  2080.    Next LINEA
  2081.   End If 
  2082.  End If 
  2083. End Proc
  2084. Procedure T0GLILARCOBALENO
  2085.  ' Fade out the rainbow 
  2086.  For LINEADELLARCOBALENO=271 To 271-255 Step -1
  2087.   Rainbow 0,257,0,LINEADELLARCOBALENO
  2088.   Wait Vbl 
  2089.  Next LINEADELLARCOBALENO
  2090. End Proc
  2091. Procedure T0GLILARIGA
  2092.  ' Turn off the row 
  2093.  Bob Off OGGETTORIGA
  2094. End Proc
  2095. Procedure T0GLIILLASER
  2096.  ' Turn off the laser beam
  2097.  Bob Off OGGETTOLASER
  2098.  Bob Update 
  2099. End Proc
  2100. Procedure T0GLIILPANNELLO
  2101.  ' Fade out the panel 
  2102.  Ink 0
  2103.  For LINEAPANNELLO=255 To 0 Step -1
  2104.   Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO
  2105.   Wait Vbl 
  2106.  Next LINEAPANNELLO
  2107. End Proc
  2108. Procedure T0GLIIMATTONCINI
  2109.  ' Fade out the bricks
  2110.  Ink 0
  2111.  For MATTONCINO=246 To 0 Step -1
  2112.   If MATTONCINO(MATTONCINO)>0
  2113.    Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  2114.    Wait Vbl 
  2115.   End If 
  2116.  Next MATTONCINO
  2117. End Proc
  2118. Procedure TROVAILFONTDATA70
  2119.  ' Look for the Data70 font 
  2120.  TESTOFONTEDICARATTERE$="I am looking for the Data70 font..."+Chr$(10)
  2121.  TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"...in your FONTS: drawer."+Chr$(10)
  2122.  TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Wait for a moment, please..."
  2123.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,0]
  2124.  Get Disc Fonts 
  2125.  For FONTEDICARATTERE=1 To 65535
  2126.   FONTEDICARATTERE$=Left$(Font$(FONTEDICARATTERE),30)-" "
  2127.   If FONTEDICARATTERE$="Data70.font" Then Exit 
  2128.  Next FONTEDICARATTERE
  2129.  If FONTEDICARATTERE<65536
  2130.   Set Font FONTEDICARATTERE
  2131.   ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERE),31,2)-" ")
  2132.   TESTOFONTEDICARATTERE$="The font I am using is the Data70 font! :)"+Chr$(10)
  2133.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
  2134.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
  2135.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,250]
  2136.  Else 
  2137.   TESTOFONTEDICARATTERE$="The font I am using is the Topaz font! :("+Chr$(10)
  2138.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
  2139.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
  2140.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,18,18,19,250]
  2141.  End If 
  2142.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  2143. End Proc
  2144. Procedure VOCESEGUENTE
  2145.  ' Select the next audio voice for the next sound 
  2146.  Add VOCE,VOCE : If VOCE=16 Then VOCE=1
  2147. End Proc