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语言·数据结构·c++·经验分享·算法·排序算法
辛苦才能13 分钟前
数据结构--排序--插入排序(C语言,重点排序面试和比赛都会考察)
c语言·数据结构·面试
SuperByteMaster9 小时前
keil 工程 .gitignore配置文件
c语言
老花眼猫13 小时前
编制椭圆旋转绘图函数
c语言·经验分享·青少年编程·课程设计
iCxhust15 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
qeen8716 小时前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·
handler0116 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
热心网友俣先生16 小时前
2026年第二十三届五一数学建模竞赛C题超详细解题思路+各问题可用模型推荐+部分模型结果展示
c语言·开发语言·数学建模
li16709027017 小时前
第二十七章:智能指针
c语言·数据结构·c++·visual studio
Aurorar0rua19 小时前
CS50 x 2024 Notes C - 07
c语言·学习方法