Bonsoir,
je voudrais comprendre pourquoi j'obtiens un résultat différent entre un affichage en mode console et un affichage avec ncurses.
Par exemple, pour afficher mon plateau en mode console, j'avais réalisé cette fonction.
Résultat à l'affichage:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 void afficheLigne() { printf("\n____________________\n"); } void affichagePlateau(Plateau* P) { int cpt=0; int k; afficheLigne(); for(k=0;k<NB_CASE;k++) { printf("| %c ",P->cases[k].value); cpt++; if(cpt==TAILLE_PLATEAU_LARGEUR) { printf("|"); cpt=0; afficheLigne(); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ____________________ | T | . | . | . | T | ____________________ | . | . | . | . | . | ____________________ | . | . | . | . | . | ____________________ | . | . | . | . | . | ____________________ | T | . | . | . | T | ____________________
DU coup, je me suis dis, pour afficher avec ncurses, me suffit de reprendre l'algo en affichant avec les fonctions de ncurses.
J'ai donc fait ceci:
L'initialisation et fermeture de curses
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 void afficheLigneCurses(WINDOW* win) { wprintw(win,"\n____________________\n"); } void affichagePlateauCurses(Plateau* P) { WINDOW * ma_fenetre; ma_fenetre=newwin(10,5,2,2); int cpt=0; int k; afficheLigneCurses(ma_fenetre); for(k=0;k<NB_CASE;k++) { wprintw(ma_fenetre,"| %c ",P->cases[k].value); cpt++; if(cpt==TAILLE_PLATEAU_LARGEUR) { wprintw(ma_fenetre,"|"); cpt=0; afficheLigneCurses(ma_fenetre); } } wrefresh(ma_fenetre); getch(); delwin(ma_fenetre); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void init_curses() { initscr(); start_color(); init_pair(1,COLOR_WHITE,COLOR_BLUE); init_pair(2,COLOR_BLUE,COLOR_WHITE); init_pair(3,COLOR_RED,COLOR_WHITE); curs_set(0); //noecho(); keypad(stdscr,TRUE); } void close_curses() { endwin(); }
Et là, le résultat que j'obtiens avec Ncurses est complètement déformé et incohérent.
Je découvre un peu la librairie, mais je ne crois pas avoir fait de grosses bourdes pouvant provoquer cela...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 _____ _____ _____ _____ | T | | | | T|
Partager