
                      /* Listato 1 */

            /* Gioco di colori con Grafica.h */


#include <grafica.h>
#define PORT finestra->UserPort

 main()
 {
struct Screen *schermo;/* Prepara struttura per lo screen */
struct Window *finestra;/* Prepara struttura per la finestra */
struct IntuiMessage *messaggio;/* Prepara struttura per il messaggio */

ULONG class;
int x,y,z;


  AttivaG(); /* Apre le librerie */

schermo=(struct Screen *)Schermo(0,640,256,2,0,1,HIRES,
                                 NULL,"Schermo di prova");
if (schermo==NULL) {
                    EndG();
                    exit(); /* Problemi !*/
                   };

Palette(schermo,0,0,0,0); /* Schermo nero */
Palette(schermo,1,15,15,15); /* Tutti gli altri colori bianchi */
Palette(schermo,2,15,15,15);
Palette(schermo,3,15,15,15);

finestra=(struct Window *)Finestra(100,50,160,100,-1,-1,CLOSEWINDOW,
                                   WINDOWCLOSE+WINDOWDRAG+ACTIVATE,
                                   NULL,NULL,
                                   "Box e Palette",schermo,50,50,600,250);

          /* Disegnamo qualche box */

BoxF(finestra,10,20,50,80,1);
BoxF(finestra,60,20,100,80,2);
BoxF(finestra,110,20,150,80,3);


x=3;   /* Inizializza le variabili di controllo dei colori */
y=9;
z=14;


          /* Attende la chiusura della finestra cambiando i colori */

 for(;;)  /* Ciclo infinito */
     {
              /* Attende un messaggio valido */
       while ((messaggio=(struct IntuiMessage *)GetMsg(PORT))!=NULL)
               {
                    /* Salvo i campi che mi interessano */
                 class=messaggio->Class;
                 ReplyMsg(messaggio); /* Messaggio ricevuto ! */

                 if (class==CLOSEWINDOW) { /* Chiude la finestra */
                                           CloseWindow(finestra);
                                           CloseScreen(schermo);
                                           EndG();
                                           exit();
                                          };

                }; /* Fine while */

         if (++x>15) x=0; /* Cambio valori x,y,z */
         if (--y<0) y=15;
         if (++z>15) z=0;

         Palette(schermo,1,x,y,z); /* Cambio colori 1 2 3 */
         Palette(schermo,2,z,x,y);
         Palette(schermo,3,y,z,x);

         Delay(10); /* Rallentiamo */
 
     };  /* Ciclo infinto */


} /* FINE */

 
