PDA

View Full Version : [C] GUI stile ADOM (solo testo colorato in finestra nera)


Tarrion
05-12-2010, 12:51
Salve a tutti, ultimamente mi sto dilettando nella programmazione di una utility per la gestione del combattimento in D&D.
Il codice in C è completo e (quasi) bug-free ma per ora l'eseguibile della mia applicazione ha in output la poco estetica finestra di dos che è molto scomoda per stampare tabelle allineate.
Vorrei chiedervi se c'è un modo per ottenere in C una semplicissima interfaccia grafica stile ADOM (cercate su Google qualche screenshot, è uno dei famosissimi roguelike games che utilizzano solo caratteri ASCII) che mi permetta di usare testo colorato e allineare righe e colonne di alcune tabelle.
Grazie in anticipo per il vostro tempo e i vostri consigli.

Edit: dopo alcune ricerche e ho scoperto che la libreria nCurses fa al caso mio (è praticamente la stessa usata per ADOM).
L'unica domanda che mi rimane: come faccio in modo che il terminale di output abbia dimensioni non modificabili? Vorrei evitare sia che compaia la barra di scorrimento a destra sia che l'utente possa trascinare i bordi della finestra per ridurla.

Tarrion
08-12-2010, 09:13
up

dojolab
08-12-2010, 09:23
up

Da quello che io sappia (e ricordi) su GNU/Linux basta lanciare il terminale con il comando:

--geometry=160x50

che rappresenta il numero di colonne e righe.

Tarrion
08-12-2010, 09:54
Il fatto è che io sto su Vista e il programma deve funzionare su Vista e 7... comunque deve esserci un modo! Basta eseguire ADOM su windows per accorgersi che la finestra del terminale è proprio come serve a me.

Edit: ho trovato i comandi di DOS per forzare le dimensioni del terminale (mode con: cols="numero colonne" lines="numero righe"), questo risolve il problema della barra di scorrimento; rimane solo da trovare il modo per impedire all'utente di trascinare i bordi della finestra per deformarla.

dojolab
08-12-2010, 10:01
Il fatto è che io sto su Vista e il programma deve funzionare su Vista e 7... comunque deve esserci un modo! Basta eseguire ADOM su windows per accorgersi che la finestra del terminale è proprio come serve a me.

Mumble, mi spiace, cado male su Windows :|

Tarrion
08-12-2010, 10:06
grazie comunque, in ogni caso sto spulciando il linguaggio di dos per scoprire se c'è qualche comando che impedisce all'utente di ridimensionare la finestra

dojolab
08-12-2010, 10:15
grazie comunque, in ogni caso sto spulciando il linguaggio di dos per scoprire se c'è qualche comando che impedisce all'utente di ridimensionare la finestra

Secondo me si, sicuramente.
A meno che crei una finestrella con le Win32 e ci piazzi dentro la shell DOS :)

shinya
09-12-2010, 10:48
Vedo solo ora il thread, sorry...
Non ti conviene usare ncurses, è molto primitiva.

Io mi sono trovato molto bene con libtcod, che ha un sacco di utility che potrebbero tornarti utili.

http://doryen.eptalys.net/libtcod/

Tarrion
09-12-2010, 11:09
interessante, ora sto all'università ma appena posso gli do una spulciata.
Grazie!

Tarrion
11-12-2010, 17:34
Dopo qualche giorno di test mi sono deciso ad usare ncurses (libtcod non mi serve alla fine) con netbeans, sembra tutto funzionare correttamente ma l'unico problema è che non riesco a ridirigere l'output di netbeans alla console di windows: dato che uso anche la funzione "system()" di C DEVO fare in modo che l'output venga eseguito nel prompt dei comandi.
Qualsiasi combinazione di scelte io faccia nelle opzioni del progetto, netbeans usa un terminale che non risponde minimamente ai comandi di DOS!
Inoltre anche se provo ad eseguire l'applicazione compilata direttamente dalla directory in cui viene creata da netbeans viene aperto un terminale che però non risente dei comandi system() lanciati dal codice...

Perché NetBeans fa il cattivo? che gli ha fatto la shell di windows (si lo so maltrattatela come volete, ma a me serve!)?