欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 项目_C_Ncurses_Flappy bird小游戏

项目_C_Ncurses_Flappy bird小游戏

2025/2/7 5:05:12 来源:https://blog.csdn.net/Fresh_man111/article/details/142817766  浏览:    关键词:项目_C_Ncurses_Flappy bird小游戏

Ncurses库

概述

什么是Ncurses库:

Ncurses是一个管理应用程序在字符终端显示的函数库,库中提供了创建窗口界面、移动光标、产生颜色、处理键盘按键等功能。

安装Ncurses库:

sudo apt-get install libncurses5-dev

头文件与编译:

头文件:#include <curses.h>

编译:gcc <.c文件> -l ncurses

相关函数

1、进入/退出

1.1 进入curses

该函数是curses模式的入口。将终端屏幕初始化为curses模式,为当前屏幕和相关的数据结构分配内存

WINDOW *initscr(void);

返回值:成功返回指向新创建的窗口的指针,失败返回NULL

1.2 退出curses

该函数是curses模式的出口,退出curses模式,释放curses子系统和相关数据结构占用的内存。

函数声明:

int endwin(void);

返回值:成功返回正数,失败返回负数

2、光标

2.1 设置光标是否可见 

int curs_set(int visibility);

visibility:模式,0:光标不可见,1:光标可见

2.2 移动光标

int move(int y, int x);

y:指定的行,从0开始

x:指定的列,从0开始

2.3 在光标位置插入字符

//在光标处写入字符,但不显示在屏幕上
int addch(const chtype ch);
//刷新屏幕,使得写入的字符显示在屏幕上
int refresh(void);

ch:要添加的字符

2.4 获取光标位置的字符

chtype inch(void);

返回值:从光标位置获取到的值(ASCII码),使用时返回值强转为char型

3、键盘 

3.1 允许使用功能键

功能键指的是键盘的F1~F12

int keypad(WINDOW *win, bool bf);

win:写为stdscr,代表操作当前界面

bf:写1,代表允许使用功能键

3.2 获取键盘输入

int getch(void);

返回值:从键盘上获取到的值(ASCII码)

3.3 关闭输入字符显示

int noecho(void);

4、颜色

4.1 启动颜色功能

int start_color(void);

启动color机制,初始化当前终端支持的所有颜色

4.2 配置颜色对

int init_pair(short pair, short f, short b);

pair:颜色对的编号,之后使用这个编号就可以设置相应的颜色

f:前景颜色的编号

b:背景颜色的编号

颜色参数
黑色COLOR_BLACK
红色COLOR_RED
绿色COLOR_GREEN
黄色COLOR_YELLOW
蓝色COLOR_BLUE
品红色COLOR_MAGENTA
青色COLOR_CYAN
白色COLOR_WHITE

4.3 设置颜色

//设置颜色 并 启用属性设置
int attron(COLOR_PAIR(pair_number));
//设置颜色 并 关闭属性设置
int attroff(COLOR_PAIR(pair_number));

pair_number:颜色对编号

示例代码

具体代码实现如下:

#include <stdio.h>
#include <curses.h>void Ncurses_Init(void);int main(){Ncurses_Init();move(0,2);//光标移动到0行2列attron(COLOR_PAIR(1));//设置颜色addch('@');refresh();attroff(COLOR_PAIR(1));//取消设置颜色while(1);endwin();//退出Ncursesreturn 0;
}
void Ncurses_Init(void){initscr();//进入Ncursescurs_set(0);//设置光标不可见keypad(stdscr,1);//设置允许使用键盘功能键noecho();//输入回显关闭start_color();//启动颜色功能init_pair(1,COLOR_RED,COLOR_BLUE);//设置颜色对:红蓝
}

代码运行结果如下:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com