Grafica in una finestra grafica

Come con le finestre di testo, lo strumento principale per il posizionamento delle immagini PNG e JPEG in una finestra grafica è glk_image_window(). Questa volta richiede i seguenti quattro argomenti:

1) Il nome della finestra in cui deve essere posizionata l'immagine (gg_mapwin, ad esempio)

2) L'immagine da posizionarvi (ma seguite la discussione che segue la lista degli argomenti)

3 e 4) Le coordinate di dove volete che vada l'angolo in alto a sinistra dell'immagine. Il terzo argomento rappresenta quanti pixel dal bordo sinistro della finestra deve andare, ed il quarto è quanti pixel dal bordo superiore della finestra deve andare, quindi se volete che l'immagine si appoggi a questi bordi, mettete 0 in entrambi. (Perché vorreste poter mettere le immagini da una parte che non sia 0,0? Forse volete prima mettere l'immagine di un bel bordo decorato, e caricare un'immagine più piccola all'interno del bordo, magari a 10,10). Non dovete preoccuparvi che l'immagine esca dal bordo destro o inferiore della finestra -- tutto quello che eccede i limiti viene tagliato.

La parte delicata è il secondo argomento. Quando inserite le immagini in una finestra di testo, queste diventano un'altra parte del flusso che il programma invia alla finestra, così quando un restore od un undo cambiano la posizione del giocatore nel gioco, la libreria gestisce automaticamente le immagini. Questo non accade se inserite le immagini in una finestra separata. Ecco un esempio. Diciamo che avete un gioco con una finestra grafica fissa dove visualizzate un'immagine della stanza nella quale il giocatore si trova. E diciamo che scegliete di farlo inserendo direttamente l'immagine che volete visualizzare quando il giocatore entra nella stanza. Così, se la cucina è a sud della sala da pranzo, potreste avere un blocco di codice nell'oggetto sala da pranzo come questo:

   s_to [;
      if (gg_picwin) { ! verifichiamo che esista la finestra
         glk_image_draw(gg_picwin, Cucina_pic, 0, 0);
      }
      PlayerTo(Cucina);
   ],

Questo causa, in effetti, la visualizzazione dell'immagine della cucina nella finestra appropriata quando il personaggio del giocatore entra nella cucina. Ma se il giocatore decide di fare un restore od un undo al punto in cui si trovava nella sala da pranzo? Nella finestra della storia sarà tornato nella sala da pranzo -- ma la finestra grafica continuerà a mostrare un'immagine della cucina! La libreria non aggiorna automaticamente le finestre grafiche. Dovete farlo voi.


Prossima sezione: La gestione delle finestre grafiche
O ritorna al sommario