programmazione e programmi in GFA-BASIC per DOS e WINDOWS GRATIS CORSO DI PROGRAMMAZIONE di FANUCCI Cristiano

CORSO DI GFA-BASIC

SEMPLICE CORSO DI PROGRAMMAZIONE PER PRINCIPIANTI

(dedicato a chi gia' conosce un po' il Basic)

By Cristiano Fanucci


ESERCITAZIONI

ESERCITAZIONI SUL CAPITOLO 1

Nelle esercitazioni riprenderemo la formula grafica del capitolo 1^ e la cambieremo piu' volte per ottenere un disegno con doppia simmetria o assolutamente casuale o con dispersione dei punti variabile nel tempo.

Questi listati sono pronti per essere copiati (EDIT .. COPY) e poi incollati (EDIT .. PASTE) sull'editor del GFA BASIC PER WINDOWS (GFW_DEMO.EXE).
Poi potranno essere salvati come ESERCIZ1.GFW e ESERCIZ2.GFW.


PRIMA ESERCITAZIONE

Ecco come modificando leggermente il programma, si ottiene una doppia simmetria sull'asse delle X e delle Y.


/////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
////////////////////////////    salvaschermo  1   \\\\\\\\\\\\\\\\\\\\
////////////////////////////    by C. Fanucci     \\\\\\\\\\\\\\\\\\\\
/////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// 15/06/99              ///  simmetria doppia \\\



OPENW #1,0,0,_X,_Y,32               // apertura di una finestra grande senza barre
CLS 0                               // schermo nero
X = _X / 2                          // _X/2 e' il centro dello schermo sull'asse delle X
Y = _Y / 2                          // _Y/2 e' il centro dello schermo sull'asse delle Y
oldmx = MOUSEX                      // memorizza posizione MOUSE X
oldmy = MOUSEY                      // memorizza posizione MOUSE Y
HIDEM                               // nasconde il puntatore del MOUSE
inizio = 111                        // rosso
COLOR 0,0                           // SCRIVE NERO SU NERO
? AT(1,1)"."                        // UN PUNTINO NERO (VEDI SPIEGAZIONI)      
DO                                  // DO e' l'inizio di un ciclo
  EXIT IF MOUSEK OR INKEY$ >< ""    // si esce dal ciclo pigiando un tasto MOUSE O TASTIERA
  EXIT IF MOUSEX >< oldmx OR MOUSEY >< oldmy            // si esce anche muovendo il MOUSE
  INC COLL                          // ad ogni ciclo COLL=COLL+1
  COLOR COLL / 200                  // con il colore COLL che cambia ogni 200 cicli
  X = X + RAND(6) - RAND(6)         // X aumenta di un numero a caso tra -5 e +5
  Y = Y + RAND(6) - RAND(6)         // Y aumenta di un numero a caso tra -5 e +5
  IF X > _X THEN X = X - RAND(6)    // controlla tracciato
  IF Y > _Y THEN Y = Y - RAND(6)    // controlla tracciato
  IF X < 0 THEN X = X + RAND(6)     // controlla tracciato
  IF Y < 0 THEN Y = Y + RAND(6)     // controlla tracciato
  PLOT x ,_Y - y                     // NUOVA FORMULA
  PLOT x ,y                          // PER UNA DOPPIA
  PLOT _X - x ,y                     // SIMMETRIA
  PLOT _X - x ,_Y - y                // SUI DUE ASSI X  Y 
LOOP                                // fine del ciclo
SHOWM                               // ricompare il puntatore del MOUSE
CLOSEW #1                           // chiude finestra
END

Avrete notato un comando apparentemente inutile:
COLOR 0,0                           // SCRIVE NERO SU NERO
? AT(1,1)"."                        // UN PUNTINO NERO (VEDI SPIEGAZIONI)      
in effetti se non si scrive qualcosa sullo schermo con il comando ? (PRINT) dopo qualche minuto la schermata sparisce... Forse e' un baco del WINGFA...

SECONDA ESERCITAZIONE

Ecco come modificando leggermente il programma, si ottiene una doppia simmetria, e una dispersione dei punti che aumenta nel tempo, oltre ad un titolo che contiene il nostro nome ,la data e l'ora in cui e' entrato in funzione lo screen saver.


/////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
////////////////////////////    salvaschermo 2    \\\\\\\\\\\\\\\\\\\\
////////////////////////////    by C. Fanucci     \\\\\\\\\\\\\\\\\\\\
/////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// 15/06/99              ///  simmetria doppia \\\
OPENW #1,0,0,_X,_Y,16                   // 16=SOLO BARRA DEL TITOLO
TITLEW #1,DATE$ + "   __   SCREEN SAVER   by  C. Fanucci   __   " + TIME$
////////////////////////////////////////// BARRA DEL TITOLO CON  DATA E  ORA
x = _X / 2
y = _Y / 2
CLS 0                                   
HIDEM                                   
oldmousex = MOUSEX
oldmousey = MOUSEY

COLOR 0,0
? AT(1,1)"."                            
DO
  EXIT IF MOUSEK OR INKEY$ >< "" OR MOUSEX >< oldmousex OR MOUSEY >< oldmousey
  INC coll
  COLOR  coll / 100
  PLOT x ,_Y - y                         
  PLOT x ,y                              
  PLOT _X - x ,y                         
  PLOT _X - x ,_Y - y                    
  z = coll / 5000 + 1                    // z=dispersione punti aumenta ogni 5000 punti
  x = x + RAND(2 * z) - RAND(2 * z)
  y = y + RAND(2 * z) - RAND(2 * z)
  IF y < 0 THEN y = y + RAND(2 * z)
  IF x < 0 THEN x = x + RAND(2 * z)
  IF y > _Y THEN y = y - RAND(2 * z)
  IF x > _X THEN x = x - RAND(2 * z)
LOOP
COLOR 15
BOX 0,0,_X - 1,_Y - 1
SHOWM
END



GLI ISCRITTI AL CORSO POTRANNO SPEDIRE VIA E-MAIL LE LORO VARIAZIONI SUL TEMA, OSSIA ALTRE FORMULE PER UNA GRAFICA PIU' BELLA.... LE MIGLIORI SARANNO PUBBLICATE!

________________________________

ISCRIVITI AL GFA_BASIC CLUB


SOMMARIO