Я пытаюсь увеличивать и уменьшать значения в окне ncurses с помощью щелчков мыши, все работает нормально, но если я уменьшу до точки, где число будет отрицательным, то попробуйте снова увеличить (например, -1), второй символ (1) будет отображаться в ОКНЕ, а главный персонаж в позиции, в которой я меняю число (-), изменится, я понимаю, что проблема в том, что я меняюсь только в позиции event.x
event.y
с mvwprintw
поэтому вопрос в том, какой самый простой способ (возможно, функция ncurses) позволяет мне удалить это.
while((ch = getch()) != KEY_F(2)) {
switch(ch) {
case KEY_MOUSE :
if (getmouse(&event) == OK) {
if (event.y == 39 && event.x >= 1 && event.x <= 10) {
item_actif = PLUS;
mvwprintw(fen_outils, 0, 1, "X");
mvwprintw(fen_outils, 1, 1, " ");
wrefresh(fen_outils);
}
else if (event.y == 40 && event.x >=1 && event.x <= 10) {
item_actif = MINUS;
mvwprintw(fen_outils, 0, 1, " ");
mvwprintw(fen_outils, 1, 1, "X");
wrefresh(fen_outils);
}
else if (event.y > 0 && event.y < NB_LIGNES_SIM + 1 && event.x > 0 && event.x < NB_COL_SIM + 1) {
switch (item_actif) {
case PLUS :
k=0;
l=0;
for(i = 0;i<36;i+=4){
k++;
l=0;
for(j=19;j<129;j+=11){
if((event.y==i+1 && event.x==j+1)){
++tab[k][l];
sprintf(tabChar[k][l],"%d",tab[k][l]);
mvwprintw(fen_sim, event.y - 1, event.x - 1, tabChar[k][l]);
wrefresh(fen_sim);
refresh();
break;
}
l++;
}
}
break;
case MINUS :
k=0;
l=0;
for(i = 0;i<36;i+=4){
k++;
l=0;
for(j=19;j<129;j+=11){
if((event.y==i+1 && event.x==j+1)){
--tab[k][l];
sprintf(tabChar[k][l],"%d",tab[k][l]);
mvwprintw(fen_sim, event.y - 1, event.x - 1, tabChar[k][l]);
wrefresh(fen_sim);
refresh();
break;
}
l++;
}
}
}
}
}
}
}
Панель управления ncurses