Esiste ancora tutto un mondo di applicazioni per console (console application), alcune delle quali si permettono anche il lusso di fare a meno del mouse.
Per esempio ne (the nice editor) è un noto editor di testo per console sviluppato da Sebastiano Vigna dell’Università degli Studi di Milano.
Potrà sembrare una cosa da inguaribili nostalgici – e forse lo è – ma in questo blog trovano posto anche questo tipo di applicazioni.
Seguendo il metodo imparare facendo (learning by doing), approfondiremo passo passo le procedure per la console messe a disposizione dal compilatore FreeBASIC cercando di realizzare un semplice editor di testo per console che avrà quindi una interfaccia utente basata sul solo testo (text-based user interface). Un editor di testo che magari possa anche interagire con il compilatore FreeBASIC in modo tale che possa essere utilizzato anche come semplice IDE (Integrated Development Environment).
Il nostro piccolo progetto si chiamerà CLUMSY che in inglese suona più o meno come oggetto mal costruito. 😉
Per scaricare il file sorgente di CLUMSY fai clic qui.
Configurare la console
Come prima cosa dobbiamo informare il compilatore FreeBASIC che abbiamo intenzione di aprire una finestra grafica in modalità console. Per farlo dobbiamo impostare il valore della modalità grafica (parametro mode della istruzione screen) al valore 0 (zero).
Imposteremo poi il colore del primo piano e dello sfondo con l’istruzione color sfruttando la tavolozza dei colori di default.
Faremo uso dell’istruzione cls per pulire lo schermo e rendere attiva l’impostazione dei colori precedentemente scelta.
L’istruzione cls può essere fatta seguire da un parametro che può assumere i seguenti tre valori:
- 0 -> pulisce l’intero schermo;
- 1 -> pulisce l’area grafica se definita con l’istruzione view (se lo schermo è stato settato in modalità console questa istruzione non ha alcun effetto);
- 2 -> pulisce l’area di stampa se definita con l’istruzione view print.
Se si utilizza l’istruzione cls senza alcun parametro, nel caso sia stata definita un’area grafica o di stampa, questa verra pulita, altrimenti viene pulito l’intero schermo.
Utilizzeremo poi l’istruzione width in combinazione con le istruzioni hiword e loword, per conoscere rispettivamente il numero massimo di righe e di colonne messe a disposizione di default dalla nostra finestra terminale (o prompt dei comandi in ambiente Windows).
Per posizionare il testo sfrutteremo l’istruzione locate.
Infine, per definire l’area di testo su cui andremo a scrivere utilizzaremo l’istruzione view print specificando la riga iniziale e quella finale.
''project: clumsy | pre-alpha version ''description: text editor for console ''author: ciuco informatico ''last update: 3th February 2020 dim as uinteger max_rows, max_cols screen 0 ''console-mode functionality max_rows = hiword(width) ''max number of rows max_cols = loword(width) ''max number of columns color 7, 0 ''text grey, background black cls 0 ''clears the entire screen ''footer info locate max_rows, 1 print "clumsy is a silly text editor for console"; _ " | pre-alpha version" _ " | ^H for Help"; ''sets the printable area of the console screen view print 1 to (max_rows - 1) color 0, 7 ''text black, background grey cls 2 ''clear only the text viewport ''text print "Hello, world!"; sleep
Nel prossimo articolo vedremo come ottenere informazioni talla tastiera sfruttando la funzione getkey.