Ncurses入门(四)- 使用键盘
目录使用键盘
在之前的学习中,我们已经知道可以使用getch()
来获得键盘输入,该函数一直等待(除非你规定了延迟时间),并会返回一个按键所对应的整数值。
例如:当你按下向上箭头键(UpArrow)时,它将会返回65;或按下F1键时,它将会返回80。
你可以这样使用它:
int ch;
ch = getch();
在Ncurses中,使用键盘控制,你还要开启cbreak模式,若你还需要功能键,你需开启keypad模式。
使用cbreak();
和keypad();
来做到这些。
一个例子
我们来看以下例子,这个例子将会使你通过上下左右方向键来控制字符在屏幕上的移动。
#include <bits/stdc++.h>
#include <ncurses.h>
int main()
{
initscr();
start_color();
clear();
noecho();
cbreak();
int now_x = 10;
int now_y = 10;
mvprintw(now_y, now_x, "@$@");
int ch;
while (1)
{
ch = getch();
mvprintw(0,0,"%d%d%d",ch,now_y,now_x);
switch (ch)
{
case 65:
--now_y;
break;
case 66:
++now_y;
break;
case 68:
--now_x;
break;
case 67:
++now_x;
break;
}
clear();
mvprintw(now_y,now_x,"@$@");
refresh();
}
endwin();
return 0;
}
这个程序存在一些问题,这意味着你可以通过修改它来做一个检测,避免字符跑出屏幕边界,试试吧!
至此,我们完成了这一部分。