/* exemple d'utilisation de ncurses compilez avec : gcc -Wall -g exemple.c -o exemple -lncurses mailto:jciehl@bat710.univ-lyon1.fr */ #include #include #include #include int main(void) { char carte[20][20]; WINDOW *win; int i, j, c; // initialiser le generateur aleatoire srand(time(NULL)); // passer en mode terminal direct win= initscr(); cbreak(); noecho(); nodelay(win, TRUE); /* remplir la carte */ for(i= 0; i < 20; i++) for(j= 0; j < 20; j++) carte[i][j]= ' '; /* poser un element au hasard */ i= (float) rand() / (float) RAND_MAX * 20; j= (float) rand() / (float) RAND_MAX * 20; carte[i][j]= 'X'; /* afficher la carte */ for(i= 0; i < 20; i++) { for(j= 0; j < 20; j++) mvaddch(i, j, carte[i][j]); } // force l'affichage refresh(); /* attendre une touche */ i= 1; j= 1; for(;;) { c= getch(); // lire une touche sans attendre move(1,1); // replace le curseur en haut a gauche if(c!=-1) { mvaddch(j, i, carte[j][i]); // re-affiche le fond if(c == 'q' && i > 0) i--; if(c=='d' && i < 19) i++; if(c=='z' && j > 0) j--; if(c=='s' && j < 19) j++; if(c=='\n') mvprintw(1, 1, "selection %c coordonnees %02d %02d ", carte[j][i], j, i); mvaddch(j, i, '*'); // affiche la position en cours de selection move(1,1); // replace le curseur en haut a gauche refresh(); // forcer l'affichage } } endwin(); // terminer le mode terminal direct et repasser au mode standard (fichier) return 0; }