项目_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);//设置颜色对:红蓝
}

代码运行结果如下:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot自定义starter注入到第三方项目IOC容器里

一 Bean扫描 Springboot项目&#xff0c;我们不加ComponentScan注解&#xff0c;但是也能扫描到Controller、Service标记的类&#xff0c;为什么呢&#xff1f;关键在于启动类的SpringBootApplication注解&#xff0c;该注解由以下三个注解组成&#xff1a; SpringBootConfig…

关于BSV区块链覆盖网络的常见问题解答(下篇)

​​发表时间&#xff1a;2024年9月20日 在BSV区块链上的覆盖网络服务为寻求可扩展、安全、高效交易处理解决方案的开发者和企业家开辟了新的视野。 作为开创性的曼达拉升级的一部分&#xff0c;覆盖网络服务提供了一个强大的框架&#xff0c;用于管理特定类型的交易和数据访问…

如何将 html 渲染后的节点传递给后端?

问题 现在我有一个动态的 html 节点&#xff0c;我想用 vue 渲染后&#xff0c;传递给后端保存 思路 本来想给html的&#xff0c;发现样式是个问题 在一个是打印成pdf&#xff0c;然后上传&#xff0c;这个操作就变多了 最后的思路是通过 html2canvas 转化成 canvas 然后变成…

XUbuntu安装OpenSSH远程连接服务器

目录 打开终端。更新你的包索引安装OpenSSH服务器。在终端中输入以下命令&#xff1a;安装完成后&#xff0c;OpenSSH服务器会自动启动。查看主机 IP测试连接打开 cmd 终端SSH 连接虚拟机确认连接输入连接密码发现问题修改用户&#xff0c;尝试连接 打开终端。 更新你的包索引 …

在 Android 上恢复已删除文件的 5 种简单方法

您可能会因为意外删除、未完成的 Android 更新、手机意外关机等原因而丢失 Android 上的重要数据。新技术的发展使许多手机功能或程序能够从内部恢复丢失的数据。 在 Android 上恢复已删除文件的 5 种简单方法 然而恢复成功率的不确定性也成为人们克服数据丢失困境的重要考虑因…

安卓13禁止锁屏 关闭锁屏 android13禁止锁屏 关闭锁屏

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 设置 =》安全 =》屏幕锁定 =》 无。 我们通过修改系统屏幕锁定配置,来达到设置屏幕不锁屏的配置。像网上好多文章都只写了在哪里改,改什么东西,但是实际上并未写明为什么要改那…

鸿蒙NEXT开发-面试题库(最新)

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

SQL Server 2022 RTM Cumulative Update #15 发布下载

SQL Server 2022 RTM Cumulative Update #15 发布下载 最新的累积更新 (CU) 下载&#xff0c;包含自 SQL Server 2022 RTM 发布以来的所有更新。 请访问原文链接&#xff1a;https://sysin.org/blog/sql-server-2022/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留…

物联网智能项目(含案例说明)

物联网&#xff08;Internet of Things&#xff0c;简称IoT&#xff09;智能项目是指利用物联网技术将各种物理设备、传感器、软件、网络等连接起来&#xff0c;实现设备之间的互联互通&#xff0c;并通过数据采集、传输、处理和分析&#xff0c;实现智能化管理和控制的项目。以…

ARM嵌入式学习--第二天

-指令流水线 -基础知识 1.流水线技术通过多个功能部件并行工作来缩短程序执行时间&#xff0c;提高处理器的效率和吞吐率 2.增加流水线级数&#xff0c;可以简化流水线的各级逻辑&#xff0c;进一步提高了处理器的性能 3.以三级流水线分析&#xff1a; pc代表程序计数器&#x…

如何用ChatGPT 8小时写出一篇完整论文(附完整提示词)

今天教大家如何利用ChatGPT完成一篇完整的论文。只需要一个标题&#xff0c;剩下全部由ChatGPT完成。总耗时8小时。 阅前提醒&#xff1a; 1.适用人群&#xff1a;这个方法适合应付简单的学术任务&#xff0c;比如日常小论文或投稿一般期刊。但如果你要写高水平的论文&#xf…

漏洞挖掘 | 通过错误日志实现XXE外带

介绍 在最近的一个项目中&#xff0c;我发现了一个与 XML 外部实体&#xff08;XXE&#xff09;攻击相关的重大安全问题。 本文讲述了我在项目中发现并利用 XXE 漏洞的过程&#xff0c;特别是通过一种非传统的方式——利用 Java 异常在日志文件中输出攻击结果。 什么是XXE&a…

AIGC时代的程序员生存法则:如何在AI辅助编程工具普及的背景下保持并提升核心竞争力

随着AIGC&#xff08;AI-Generated Content&#xff0c;如ChatGPT、MidJourney、Claude等&#xff09;技术的迅猛发展&#xff0c;特别是大型语言模型的不断涌现&#xff0c;程序员的工作方式正发生深刻变革。AI辅助编程工具的普及给编程行业带来了前所未有的挑战和机遇。一方面…

Android Framework禁用手势上滑及按钮进多任务的功能

安卓手势多任务 安卓手势多任务是指在安卓系统中&#xff0c;通过特定的手势操作来实现多任务管理的功能。 以下是一些常见的安卓手势多任务操作&#xff1a; 从屏幕底部上滑&#xff1a;这是最常见的安卓手势多任务操作之一。在大多数安卓手机上&#xff0c;从屏幕底部向上滑…

STM32 DMA直接存储器访问 USART串口DMA发送 F407寄存器

DMA介绍&#xff1a; 特点&#xff1a; DMA:直接存储器访问 用于外设与存储器间以及存储器与存储器之间 提高数据传输的一种工具&#xff08;片上外设&#xff09; CPU相当于餐厅老板&#xff0c;只需要告诉DMA快递员 …

DAY8 Final等

Final关键字 final修饰静态变量&#xff0c;这个变量今后被称为常量&#xff0c; 可以记住一个固定值&#xff0c;并且程序中不能修改了&#xff0c;通常这个值作为系统的配置信息。常量的名称&#xff0c;建议全部大写&#xff0c;多个单词用下划线连接。 public static final…

模拟信号的光调制

怎么通过光来传输模拟信号&#xff1f; 模拟信号的光调制是指将模拟信号转换为光信号&#xff0c;并通过调制光信号的强度、频率或相位等参数&#xff0c;将模拟信号信息叠加到光信号中以实现传输和接收。调制的方式分为内调制和外调制。 一 内调制 激光的内调制是指在激光形成…

睿考网:24年中级经济师考试安排

睿考网为大家介绍一下中级经济师考试安排及注意事项 1、考点分布原则 中级经济师考试遵循属地化管理原则&#xff0c;通常在各地级市以上的城市设立考点。考生应在工作所在地或户口所在地报名参加考试&#xff0c;具体考点由计算机系统随机编排确定。 2、考试时间安排 2024…

关于摩托车一键启动无钥匙进入、智能科技创新

摩托车一键启动无钥匙进入功能 一、工作原理 摩托车的一键启动无钥匙进入功能采用了世界最先进的RFID无线射频技术和最先进的车辆身份编码识别系统&#xff0c;率先应用小型化、小功率射频天线的开发方案&#xff0c;并成功融合了遥控系统和无钥匙系统&#xff0c;沿用了传统…

二手跨境电商Mecari注册运营策略总结

热门电商平台如Meicari&#xff08;煤炉&#xff09;近几年在跨境中非常火爆。然而&#xff0c;对于国内卖家来说&#xff0c;要成功在Meicari平台上运营&#xff0c;不仅需要优质的商品和服务&#xff0c;还需要稳定而可靠的网络支持。 一、静态IP是什么&#xff1f; Meicari…