(C语言贪吃蛇)2.ncurse上下左右键获取

通过上一节的讲解我们明白使用ncurse是为了响应上下左右键,那应该如何捕获上下左右键呢?

在ncurse中安排了这几个数值代表四个按键并且通过宏定义的方式增强了代码的可读性

修改代码:

#include <curses.h>


int main()
{
	char c;
	initscr();
	
	while (1)
	{
		c = getch();
		printw("you input : %c\n",c);
	}
	

	getch();//防止程序跳出
	endwin();
	return 0;
}

打开终端编译该文件

打开新窗口 并在键盘输入上键,终端显示该界面

keypad(stdscr,1);

加入该指令

运行效果改变,至少现在有东西输出了但还是有点怪怪的,什么原因呢?

因为我们char型是一个byte 8bit 只能显示到128,而最上图代表的上下左右数字超过了128

所以想让结果显示正确的话将char型改成int型即可,代码修改如下:

#include <curses.h>


int main()
{
	int key;

	initscr();
	keypad(stdscr,1);
	while (1)
	{
		key = getch();
		printw("you input : %d\n",key);
	}
	

	getch();//防止程序跳出
	endwin();
	return 0;
}

  运行结果如下:

但显示的数值还是与最上面那张图有出入,那应该如何使数值更加准确呢?

继续来修改咱们的代码哈

#include <curses.h>

int main()
{
	int key;

	initscr();
	keypad(stdscr,1);
	while (1)
	{
		key = getch();
		switch (key)
		{
		case 0402:
				printw("DOWN\n");
				break;
		case 0403:
				printw("UP\n");
				break;
		case 0404:
				printw("LEFT\n");
				break;
		case 0405:
				printw("RIGHT\n");
				break;
		}
	}
	getch();//防止程序跳出
	endwin();
	return 0;
}

分别使用键盘输入上下左右键,运行结果如下:

OK!我们现在完成了对上下左右键的捕获。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值