' **********************  USO DEI SOTTOPROGRAMMI --SUB-- ********************
'************************ FUNZIONI GRAFICHE ECCETTO DRAW ********************

' Parte delle dichiarazioni
' Dichiaro le SUB cioŠ i sottoprogrammi
DECLARE SUB Aspetta (Sec!)
DECLARE SUB Inizializza ()
DECLARE SUB Linee ()
DECLARE SUB Scritte ()
DECLARE SUB RettangoliVuoti ()
DECLARE SUB RettangoliPieni ()
DECLARE SUB CerchiVuoti ()
DECLARE SUB CerchiPieni ()
DECLARE SUB ArchiVuoti ()
DECLARE SUB ArchiPieni ()
DECLARE SUB FetteVuote ()
DECLARE SUB FettePiene ()
DECLARE SUB EllisseOrizzontaleVuota ()
DECLARE SUB EllisseOrizzontalePiena ()
DECLARE SUB EllisseVerticaleVuota ()
DECLARE SUB EllisseVerticalePiena ()
DECLARE SUB ArchiEllisseOrizzontale ()
DECLARE SUB ArchiEllisseVerticale ()
DECLARE SUB FetteVuoteEllisseOrizzontale ()
DECLARE SUB FetteVuoteEllisseVerticale ()
DECLARE SUB FettePieneEllisseOrizzontale ()
DECLARE SUB FettePieneEllisseVerticale ()
CONST tot = .1

SCREEN 9                        'pongo lo schermo in modalit… grafica
WIDTH 80, 25


' Qui inizia il programma che chiama le varie SUB
   Inizializza
   Scritte
   Inizializza
   Linee
   Inizializza
   RettangoliVuoti
   Inizializza
   RettangoliPieni
   Inizializza
   CerchiVuoti
   Inizializza
   CerchiPieni
   Inizializza
   ArchiVuoti
   Inizializza
   FetteVuote
   Inizializza
   FettePiene
   Inizializza
   EllisseOrizzontaleVuota
   Inizializza
   EllisseOrizzontalePiena
   Inizializza
   EllisseVerticaleVuota
   Inizializza
   EllisseVerticalePiena
   Inizializza
   ArchiEllisseOrizzontale
   Inizializza
   FetteVuoteEllisseOrizzontale
   Inizializza
   FettePieneEllisseOrizzontale
   Inizializza
   ArchiEllisseVerticale
   Inizializza
   FetteVuoteEllisseVerticale
   Inizializza
   FettePieneEllisseVerticale

' do il messaggio Finale
LOCATE 23, 23: PRINT "Premere un tasto per terminare..."
SLEEP
CLS   'pulisco lo schermo
contatore% = 0 'inizializzo contatore%
END

SUB ArchiEllisseOrizzontale
                        ' ArchiEllisseOrizzontale
FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, tot, contatore% MOD 7, .5
 Aspetta tot
NEXT

END SUB

SUB ArchiEllisseVerticale
                        'Archi di ellisse ad asse maggiore verticale
FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 215), 220 - (10 * contatore%), contatore%, tot, (contatore% MOD 7), -1
Aspetta tot
NEXT

END SUB

SUB ArchiVuoti
                        'archi vuoti

FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, tot, contatore% MOD 7
Aspetta tot
NEXT

END SUB

SUB Aspetta (Sec!)
via! = TIMER
WHILE TIMER - via! <= Sec!
WEND
END SUB

SUB CerchiPieni

                                ' cerchi pieni

FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%
' dipingo l'interno del cerchio
        PAINT (350, 175), contatore%, contatore%
Aspetta tot
NEXT

END SUB

SUB CerchiVuoti
                        'cerchi vuoti
FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%
Aspetta tot
NEXT

END SUB

SUB EllisseOrizzontalePiena
                'ellissi piene ad asse maggiore orizzontale

FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, , , .5
' dipingo l'interno del cerchio
        PAINT (350, 175), contatore%, contatore%
Aspetta tot
NEXT

END SUB

SUB EllisseOrizzontaleVuota

                        ' ellissi vuote ad asse maggiore orizzontale

FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, , , .5
Aspetta tot
NEXT

END SUB

SUB EllisseVerticalePiena
                        ' ellissi  piene ad asse maggiore verticale
FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, , , -4
' dipingo l'interno del cerchio
        PAINT (350, 175), contatore%, contatore%
Aspetta tot
NEXT


END SUB

SUB EllisseVerticaleVuota
                        ' ellissi vuote ad asse maggiore verticale

FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, , , -4
Aspetta tot
NEXT

END SUB

SUB FettePiene

                        ' aree di cerchio o fette di torta piene

FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, -.3, -(contatore% MOD 5) - tot
' coloro l'area
        PAINT (370, 155), contatore%, contatore%
Aspetta tot
NEXT

END SUB

SUB FettePieneEllisseOrizzontale
                        ' Fette di torta di ellisse orizzontale piene
FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, -tot, -(contatore% MOD 2) + -2.5, .5
' coloro l'interno della fetta
        PAINT (360, 170), contatore%, contatore%
Aspetta tot
NEXT

END SUB

SUB FettePieneEllisseVerticale
                        ' Fette di torta di ellisse orizzontale piene
FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 215), 220 - (10 * contatore%), contatore%, -tot, -(contatore% MOD 2) + -2.5, -1
' coloro l'interno della fetta
        PAINT (360, 210), contatore%, contatore%
NEXT

END SUB

SUB FetteVuote

                        ' aree di cerchio o fette di torta vuote


FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, -.3, -(contatore% MOD 5) - tot
Aspetta tot
NEXT

END SUB

SUB FetteVuoteEllisseOrizzontale
                        ' Fette di torta di ellisse vuote
FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 175), 220 - (10 * contatore%), contatore%, -tot, -(contatore% MOD 7) - tot, .5
Aspetta tot
NEXT

END SUB

SUB FetteVuoteEllisseVerticale
                        ' Fette di torta di ellisse orizzontale vuote
FOR contatore% = 1 TO 15
' creo un cerchio colorato
        CIRCLE (350, 215), 220 - (10 * contatore%), contatore%, -tot, -(contatore% MOD 2) + -2.5, -1
Aspetta tot
NEXT
 
END SUB

SUB Inizializza
' do il messaggio
LOCATE 23: PRINT "Premere un tasto per continuare..."
SLEEP 1
CLS   'pulisco lo schermo
contatore% = 0 'inizializzo contatore%

END SUB

SUB Linee
                               
FOR contatore% = 1 TO 15
' creo una linea dall'angolo in alto a sinistra a quello in basso a destra
   LINE (1 + 10 * contatore%, 1)-(640 + contatore%, 350), contatore%
Aspetta tot
NEXT   'contatore%       'qui finisce il ciclo FOR...NEXT

END SUB

SUB RettangoliPieni

                           ' rettangoli pieni

FOR contatore% = 1 TO 15
' creo un rettangolo pieno rosso
  LINE (20 + 10 * contatore%, 20 + 5 * contatore%)-(200 + 10 * contatore%, 200 + 10 * contatore%), contatore%, BF
Aspetta tot
NEXT      ' qui finisce il ciclo FOR...NEXT

END SUB

SUB RettangoliVuoti
                          
                            'rettangoli vuoti
FOR contatore% = 1 TO 15
' creo un rettangolo vuoto in fucsia
   LINE (10 + 10 * contatore%, 10 + 5 * contatore%)-(100 + 20 * contatore%, 100 + 10 * contatore%), contatore%, B
Aspetta tot
NEXT   'qui finisce il ciclo FOR ... NEXT

END SUB

SUB Scritte
                               
                                'scritte  colorate
FOR contatore% = 1 TO 15
' pongo il cursore alla riga 1 e colonna 1, uso il colore  e scrivo Ciao
   LOCATE contatore%, contatore%: COLOR contatore%
   PRINT "Ciao"
Aspetta tot
NEXT
END SUB

