C语言-贪吃蛇 1.输入控制ncurse

一、为什么要用nurse

C语言中的gets()、scanf()、getchar()等函数是在用户输入后需要按下Enter键才能执行代码,而贪吃蛇要求按下按键后立即对蛇的方向进行操作,所以根据贪吃蛇功能的需求引入ncurse,让用户输入后就能让蛇进行对应的行动。

二、ncurse的使用

查看ncurse宏定义:

cpp 复制代码
vi /usr/include/curses.h

输入/KEY_UP查找上下左右键功能键的函数

使用这些功能键时,必须要用keypad设置功能键

cpp 复制代码
keypad(stdscr,1);    //stdscr表示从标准屏幕接收功能键,参数1代表是否接收"是"

char为1个字节最多能表示128,而宏定义中表示功能键的数大于128,所以要用字节更大的int(4字节)

cpp 复制代码
#include <curses.h>

int main(){
	int key;
	
	initscr();
	keypad(stdscr,1);
	
	while(1){
		key= getch();
		printw("you input:%c\n",c);
	}
	endwin();
	
	return 0;
}

光有这些代码,在输入↑ ↓ ← →这些按键时只会输出上面的数字(0402......),我们可以使用switch函数让其输出更具可读性的提示。

cpp 复制代码
#include <curses.h>

int main(){
	int key;
	
	initscr();
	keypad(stdscr,1);
	
	while(1){
		key= getch();
		switch(key){
			case 0402:
			printw("DOWN");
			case 0403:
			printw("UP");
			case 0404:
			printw("LEFT");
			case 0405:
			printw("RIGHT");
		}
	}
	endwin();
	
	return 0;
}

也可以用ncurse中的宏定义:

cpp 复制代码
#include <curses.h>

int main(){
	int key;
	
	initscr();
	keypad(stdscr,1);
	
	while(1){
		key= getch();
		switch(key){
			case KEY_DOWN:
			printw("DOWN");
			case KEY_UP:
			printw("UP");
			case KEY_LEFT:
			printw("LEFT");
			case KEY_RIGHT:
			printw("RIGHT");
		}
	}
	endwin();
	
	return 0;
}
相关推荐
ytttr8731 小时前
OPC UA 协议栈 C 语言实现
c语言·开发语言·mfc
song5012 小时前
Ascend C 算子开发:从入门到上手
c语言·开发语言·图像处理·人工智能·分布式·flutter·交互
小a杰.2 小时前
Ascend C编程语言进阶:高性能算子开发技巧
android·c语言·开发语言
小a杰.4 小时前
Ascend C算子开发实战 - 从零开始写算子
c语言·开发语言
我还记得那天9 小时前
数组的2个应用举例
c语言·开发语言·二分查找·数组
学困昇9 小时前
Linux IPC 详解:匿名管道、命名管道、共享内存与信号量
linux·运维·服务器·c语言·c++·人工智能
『昊纸』℃10 小时前
作为小白,C语言如何从零开始呢
c语言·ide·学习·编程·教材
iCxhust11 小时前
个人计算机的起点,INTEL 8088
c语言·单片机·嵌入式硬件·微机原理·8088单板机
聆风吟º11 小时前
深入理解C语言 islower 函数详解:判断字符是否为小写字母
c语言·开发语言·库函数·字符处理·islower
冉卓电子11 小时前
MPC5604B/C MC_RGM 复位模块全解
c语言·开发语言·单片机·嵌入式硬件