Pagina 1 di 1

[C] Dubbi sulla libreria <ncurses.h>/<curses.h>

Inviato: giovedì 8 maggio 2014, 19:21
da tuzzo33
Buonasera a tutti!

Mi è venuto la bella idea di replicare il gioco del Tris (Tic-Tac-Toe) in C. Ne ho già fatto una versione, il problema è che è a scorrimento, ovvero ad ogni casella modificata da un giocatore viene stampata a schermo la griglia aggiornata.

Un bel giorno scoprii che esiste una libreria molto versatile per i giochi ed in grado di ricevere input anche da mouse (o qualcosa del genere) ed è ncurses. Ho letto qualche documento in giro sul Web ma ho un po' di dubbi, spero che voi siate in grado di aiutarmi!

1) Nel mio programma inserisco initscr() nel momento in cui lo schermo dovrebbe essere "ripulito". Perché se non inserisco un getchar() initscr non fa il suo lavoro? Sembra che il getchar serva per bloccare il programma in quel punto, appena passo un carattere prosegue, raggiunge endwin() e finisce. In pratica, se non inserisco un getchar, sembra addirittura che il programma non faccia niente, probabilmente l'esecuzione è così veloce che non si nota, mentre se aggiungo getchar posso semplicemente vedere lo schermo rinizializzato ma senza fare niente. Come si fa a mantenere lo schermo attivo?

2) Avendo la griglia con le caselle numerate, il senso della partita è che ogni giocatore passa il numero della casella da tastiera e il simbolo viene inserito. Con il problema del punto 1) è impossibile da fare in questo modo, cosa potrei fare? Chiaramente se ottengo delucidazioni sul problema 1) ottengo risposte anche per questo punto.

3) Le mie funzioni riguardo il gioco possono essere passate nel codice tra initscr e endwin?

4) Immaginando di non avere problemi, com'è possibile notare i cambiamenti delle caselle in real time?

4b) Se no, esistono sistemi più immediati nel fare questo gioco mantenendo una sola stampa di griglia e vedere i cambiamenti delle caselle in tempo reale?

Innanzitutto grazie a tutti, come secondo punto scusate il testo lungo e non fatevi problemi a chiedermi di spiegare meglio, so di aver scritto in un Italiano poco scorrevole.