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;
}
相关推荐
电星托马斯10 小时前
C++中顺序容器vector、list和deque的使用方法
linux·c语言·c++·windows·笔记·学习·程序人生
march_birds15 小时前
FreeRTOS 与 RT-Thread 事件组对比分析
c语言·单片机·算法·系统架构
小麦嵌入式16 小时前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
jelasin17 小时前
LibCoroutine开发手记:细粒度C语言协程库
c语言
篝火悟者17 小时前
自学-C语言-基础-数组、函数、指针、结构体和共同体、文件
c语言·开发语言
神里流~霜灭18 小时前
蓝桥备赛指南(12)· 省赛(构造or枚举)
c语言·数据结构·c++·算法·枚举·蓝桥·构造
双叶83619 小时前
(C语言)单链表(1.0)(单链表教程)(数据结构,指针)
c语言·开发语言·数据结构·算法·游戏
艾妮艾妮20 小时前
C语言常见3种排序
java·c语言·开发语言·c++·算法·c#·排序算法
charlie11451419120 小时前
STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出
c语言·stm32·单片机·嵌入式硬件·gpio·数据手册
矿渣渣20 小时前
int main(int argc, char **argv)C语言主函数参数解析
c语言·开发语言