我正在学习C,并决定看看ncurses。我正在编写一个在屏幕上移动@的程序。如果我为起始坐标指定数字,那么一切都有效,但是如果我尝试使用在开始时居中@的变量坐标,那么@ just就不会出现。
#include <ncurses.h>
#include <stdlib.h>
int main() {
int x, y, c, height, width;
initscr();
getmaxyx(stdscr, height, width);
x = width/2;
y = height/2;
mvprintw(x, y, "@");
keypad(stdscr, TRUE);
curs_set(0);
while(1) {
c = wgetch(stdscr);
switch(c) {
case KEY_DOWN:
clear();
++x;
mvprintw(x, y, "@");
refresh();
break;
case KEY_UP:
clear();
--x;
mvprintw(x, y, "@");
refresh();
break;
case KEY_RIGHT:
clear();
mvprintw(x, y, "@");
refresh();
break;
case KEY_LEFT:
clear();
--y;
mvprintw(x, y, "@");
refresh();
break;
}
}
return 0;
}
int center() {
int x, y, width, height;
getmaxyx(stdscr, width, height);
x = width/2;
y = height/2;
return x, y;
}
答案 0 :(得分:0)
man mvwprintw
int mvprintw(int y, int x, const char *fmt, ...);
注意x和y的位置。
此外,您的代码不一致。
x = width/2;
[...]
case KEY_DOWN:
clear();
++x;
mvprintw(x, y, "@");
refresh();
break;