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;
}
相关推荐
lb36363636363 小时前
介绍一下数组(c基础)(详细版)
c语言
一丝晨光4 小时前
编译器、IDE对C/C++新标准的支持
c语言·开发语言·c++·ide·msvc·visual studio·gcc
执笔者5486 小时前
C语言:函数栈帧的创建与销毁
c语言
_小柏_7 小时前
C/C++基础知识复习(15)
c语言·c++
weixin_399264297 小时前
信捷 PLC C语言 POU 指示灯交替灭0.5秒亮0.5秒(保持型定时器)
c语言·开发语言
Darkwanderor7 小时前
用数组实现小根堆
c语言·数据结构·二叉树·
敲上瘾8 小时前
C++11新特性(二)
java·c语言·开发语言·数据结构·c++·python·aigc
知星小度S9 小时前
数据结构——排序
c语言·数据结构·算法
lb363636363610 小时前
扫雷游戏代码分享(c基础)
c语言·算法·游戏
DdddJMs__13512 小时前
C语言 | Leetcode C语言题解之第542题01矩阵
c语言·leetcode·题解