项目_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();//退出Ncurses
	return 0;
}
void Ncurses_Init(void){
	initscr();//进入Ncurses
	curs_set(0);//设置光标不可见
	keypad(stdscr,1);//设置允许使用键盘功能键
	noecho();//输入回显关闭
	start_color();//启动颜色功能
	init_pair(1,COLOR_RED,COLOR_BLUE);//设置颜色对:红蓝
}

代码运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/891979.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

老人桌面 1.3.5|专为老人设计的便捷实用桌面应用

老人桌面是一款专为老人设计的便捷实用桌面应用&#xff0c;具有超大字体设计&#xff0c;符合老人视力水平&#xff0c;撞色简洁的应用界面&#xff0c;拯救老人视觉体验。此外&#xff0c;还提供了常用的实用小工具&#xff0c;让老人能够轻松使用手机。 大小&#xff1a;5.…

Oracle-19g数据库的安装

简介 Oracle是一家全球领先的数据库和云解决方案提供商。他们提供了一套完整的技术和产品&#xff0c;包括数据库管理系统、企业级应用程序、人工智能和机器学习工具等。Oracle的数据库管理系统是业界最受欢迎和广泛使用的数据库之一&#xff0c;它可以管理和存储大量结构化和…

界面耻辱纪念堂--可视元素03

更多的迹象表明&#xff0c;关于在程序里使用新的动态界面元素&#xff0c;微软的态度是不确定的&#xff0c;其中一个是仅仅需要对比一下Office97 里的“Coolbars”和“标准工具条”。Coolbar 按钮直到用户指针通过的时候才成为按钮&#xff08;否则是平的&#xff09;。 工具…

SpringBoot Data JPA基本使用

一、项目起步 1.1 pom配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency><dependency><groupId>org.springframework.boot</groupId><…

Android终端GB28181音视频实时回传设计探讨

技术背景 好多开发者&#xff0c;在调研Android平台GB28181实时回传的时候&#xff0c;对这块整体的流程&#xff0c;没有个整体的了解&#xff0c;本文以大牛直播SDK的SmartGBD设计开发为例&#xff0c;聊下如何在Android终端实现GB28181音视频数据实时回传。 技术实现 Andr…

光伏仿真系统在光伏项目开发中有哪些应用场景?

光伏仿真系统在光伏项目开发中的应用场景广泛&#xff0c;涵盖了从项目规划、设计优化到运维管理的全过程。 一、项目规划与选址 1、气象模拟与评估 光伏仿真系统能够基于历史气象数据和先进的预测模型&#xff0c;模拟不同地理位置、不同季节和时间段的光照强度、温度、湿度…

【学术论文投稿】Java入门:零基础小白也能轻松掌握的全攻略

【IEEE | 往届见刊1个月检索 | 国际双会场】第四届智能电力与系统国际学术会议(ICIPS 2024)_艾思科蓝_学术一站式服务平台 更多学术论文投稿请看&#xff1a;https://ais.cn/u/nuyAF3 目录 【IEEE | 往届见刊1个月检索 | 国际双会场】第四届智能电力与系统国际学术会议(ICIPS…

『网络游戏』三端增加数据.dll替换【32】三端

修改服务器脚本&#xff1a;DBMgr 增加数据库 修改客户端脚本&#xff1a;MainCityWnd.cs 拖拽绑定 查看服务端PlayerData调用的协议位置 在客户端中替换 之后客户端就可以调用服务端新增的数据了

Elasticsearch Ingest Pipelines

1. 前言 在将第三方数据源的数据导入到Elasticsearch中时&#xff0c;原始数据长什么样&#xff0c;索引后的文档就是什么样。文档数据结构不统一&#xff0c;导致后续数据分析时变得麻烦&#xff0c;以往需要额外写一个中间程序来读取原始数据&#xff0c;转换加工后再写入到…

Linux下Docker方式Jenkins安装和配置

一、下载&安装 Jenkins官方Docker仓库地址&#xff1a;https://hub.docker.com/r/jenkins/jenkins 从官网上可以看到&#xff0c;当前最新的稳定版本是 jenkins/jenkins:lts-jdk17。建议下在新的&#xff0c;后面依赖下不来 所以&#xff0c;我们这里&#xff0c;执行doc…

智绘城市地图:使用百度地图 API 实现智能定位

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

测网速小程序,纯前端

搜索&#xff1a;证寸照制作 源码介绍: 测网速小程序源码&#xff0c;是一款纯前端无需服务器的测网速小程序&#xff0c;依赖百度开发者中心js接口&#xff0c;真正的永久使用的小工具源码&#xff0c;很实用&#xff0c;可以单独运行&#xff0c;测网速很流畅~ 合法域名: ht…

深入理解 pnpm(Performant NPM) 的实现原理及其与 npm 的区别

深入理解 pnpm 的实现原理及其与 npm 的区别 在 JavaScript 生态系统中&#xff0c;包管理器是开发者日常工作中不可或缺的工具。npm&#xff08;Node Package Manager&#xff09;作为 Node.js 的默认包管理器&#xff0c;已经广泛应用于各种项目中。然而&#xff0c;随着项目…

力扣之接雨水(42)

刷题不在多&#xff0c;而在精。 这道题号称字节的保洁阿姨都能做出的。 方法一&#xff1a;动态规划 下面这幅图简直封神&#xff0c;看了下图我才做出来的。 两个方向遍历&#xff0c;然后取相同覆盖值-原始值&#xff08;heigth数组&#xff09; 这种方法更好理解。但是也有…

厨房老鼠数据集:掀起餐饮卫生监测的科技浪潮

厨房老鼠数据集&#xff1a;掀起餐饮卫生监测的科技浪潮 摘要&#xff1a;本文深入探讨了厨房老鼠数据集在餐饮行业卫生管理中的重要性及其相关技术应用。厨房老鼠数据集通过收集夜间厨房图像、老鼠标注信息以及环境数据&#xff0c;为深度学习模型提供了丰富的训练样本。基于…

新手爬虫DAY1

这个错误信息表明在你的Python程序中&#xff0c;re.search() 函数没有找到预期的匹配项&#xff0c;因此返回了 None。当你尝试在 None 对象上调用 group(1) 方法时&#xff0c;Python 抛出了一个 AttributeError。 具体来说&#xff0c;错误发生在 pc.py 文件的第6行&#x…

QT开发--QT基础

第0章 QT工具介绍 0.1 编译工具 uic&#xff0c;rcc&#xff0c;moc&#xff0c;qmake 都是 qt 的工具 uic 主要是 编译 .ui文件 -> ui_xxx.h //.ui文件 .h rcc 主要是 编译 资源文件.qrc文件 -> xxx.rcc …

某电子元器件企业人力资源管理体系搭建咨询项目

某电子元器件企业人力资源管理体系搭建咨询项目 ——搭建管理体系&#xff0c;梳理工作流程 【导读】 与其他同类企业一样&#xff0c;该电子公司面临招不到合适的人才、留不住人才的难题&#xff0c;自然也加大了人力资源管理的成本。公司人事部员工的工作基本上陷入了“招…

OpenUAV:首个专为现实无人机视觉语言导航设计的大规模轨迹数据集,由大约 12k 个轨迹组成,涵盖了多种环境和复杂的飞行动态。

2024-10-10&#xff0c;由北京航空航天大学人工智能研究所、香港中文大学MMLab以及感知与交互智能中心共同创建了OpenUAV数据集&#xff0c;首个专为现实无人机&#xff08;UAV&#xff09;视觉语言导航&#xff08;VLN&#xff09;任务设计的大型轨迹数据集&#xff0c;该数据…

波司登超1000+门店用钉钉Teambition开店管理,实现拓店“自动化”

门店开在哪里&#xff1f;什么时候装修&#xff1f;什么时候开门迎客&#xff1f; 在瞬息万变的零售行业&#xff0c;门店作为连接产品和消费者、融合线上和线下的核心场景&#xff0c;其运营效率和管理策略至关重要。 近日&#xff0c;波司登正式启用钉钉项目 Teambition&am…