Grafica in una finestra di testo

Così avete deciso che volete mettere un'immagine direttamente nel testo della vostra storia IF. In realtà questa cosa è relativamente semplice: si chiama semplicemente la routine glk_image_draw() con quattro argomenti:

1) Il nome della finestra alla quale l'immagine deve essere inviata. A meno che stiate facendo qualcosa di molto strano con il layout della vostra finestra, mischiare le immagini con il testo significa inviarle alla finestra gg_mainwin.

2) Il nome dell'immagine da visualizzare, come l'avete chiamata nel vostro file di risorse Blorb. Se è l'immagine di una scimmia, ad esempio, potreste averla chiamata "Scimmia_pic".

3) Il modo in volete che il testo scorra intorno all'oggetto. Qui avete cinque opzioni. Le prime tre servono se volete che l'immagine venga posizionata come se ci fosse un'altra parola sulla riga di testo dove appare. Forse il modo migliore di dimostrare quello che fa ogni opzione, è quello di usare dei diagrammi:

imagealign_InlineUp:

   La rapida scimmia marrone è saltata sopra
                  #################
                  #               #
                  # (Scimmia_pic) #
                  #               #
   il pigro cane. ################# La rapida
   scimmia marrone è saltata sopra il pigro cane.

imagealign_InlineDown:

   La rapida scimmia marrone è saltata sopra
   il pigro cane. ################# La rapida
                  #               #
                  # (Scimmia_pic) #
                  #               #
                  #################
   scimmia marrone è saltata sopra il pigro cane.

imagealign_InlineCenter:

   La rapida scimmia marrone è saltata sopra
                  #################
                  #               #
   il pigro cane. # (Scimmia_pic) # La rapida
                  #               #
                  #################
   scimmia marrone è saltata sopra il pigro cane.

Naturalmente se l'immagine è l'unica cosa sulla riga in questione, potete scegliere una qualunque di queste opzioni per avere lo stesso risultato.

Le altre due opzioni funzionano solo se l'immagine è la prima cosa sulla riga (ad es., se segue un carattere ^ in una stringa od una chiamata a "new_line;"). Qualunque testo che segue verrà disposto accanto all'immagine:

imagealign_MarginLeft:

   ################# La rapida
   #               # scimmia marrone
   # (Scimmia_pic) # è saltata sopra
   #               # il pigro cane.
   ################# La rapida
   scimmia marrone è saltata sopra
   il pigro cane. La rapida scimmia
   marrone è saltata sopra il pigro

imagealign_MarginRight:

   La rapida       #################
   scimmia marrone #               #
   è saltata sopra # (Scimmia_pic) #
   il pigro cane.  #               #
   La rapida       #################
   scimmia marrone è saltata sopra
   il pigro cane. La rapida scimmia
   marrone è saltata sopra il pigro

4) Il quarto argomento è 0. Questo argomento ha significato solo quando si disegnano immagini su una finestra grafica; comunque non possiamo semplicemente ignorarlo, perché, a differenza delle normali funzioni di Inform, le funzioni Infglk non sono in grado di avere a che fare con meno argomenti di quelli che si aspettano.

Così diciamo che vogliamo che l'immagine di questa scimmia venga visualizzata quando il giocatore decide che il proprio personaggio vada allo zoo e gli dica >GUARDA LA SCIMMIA. Potremmo codificare la scimmia come segue:

   Object scimmia "Bobo la scimmia"
      with name 'scimmia' 'bobo',
         description [;
            print "La scimmia somiglia a questo:^";
            glk_image_draw(gg_mainwin, Scimmia_pic,
               imagealign_InlineUp, 0);
            print "^"; rtrue;
         ],
      has animate proper;

Naturalmente c'è sempre la possibilità che il giocatore stia usando un interprete che non supporta la grafica, in questo caso il caricamento dell'immagine andrà in errore ed il giocatore rimarrà con una riga vuota dopo "a questo:". Per informazioni su come trattare questa possibilità, consultate la sezione sul Test delle capacità.


Prossima sezione: Grafica in una finestra grafica
O ritorna al sommario