lv6 嵌入式开发-Flappy bird项目

news2024/11/27 18:44:39

目录

1 项目功能总结 

2 知识储备:

3 项目框图

4 Ncurses库介绍


做Flappy bird项目有什么用?

1. 复习、巩固c语言知识

2. 培养做项目的逻辑思维能力

3. 具备开发简单小游戏的能力

学会了Flappy bird项目,贪吃蛇和推房子两款小游戏也可以实现。

1 项目功能总结 

  • 1.按下空格键小鸟上升,不按小鸟下落
  • 2.搭建小鸟需要穿过的管道
  • 3.管道自动左移和创建
  • 4.小鸟撞到管道游戏结束

2 知识储备:

  • 1.C语言
  • 2.数据结构-链表
  • 3.Ncurses库
  • 4.信号机制 

3 项目框图

问题:

1.如何显示游戏界面?    Ncurses库

2.如何实现空格键控制小鸟上升? 

4 Ncurses库介绍

Ncurses是最早的System V Release 4.0 (SVr4)中 curses的一个克隆和升级。这是一个可自由配置的库,完全兼容旧版本curses。    

Ncurses构成了一个工作在底层终端代码之上的封装,并向用户提供了一个灵活高效的API(Application Programming Interface 应用程序接口)。它提供了创建窗口界面,移动光标,产生颜色,处理键盘按键等功能。使程序员编写应用程序不需要关心那些底层的终端操作。    

简而言之,它是一个管理应用程序在字符终端显示的函数库。  

Ncurses库安装及函数介绍

Ncurses库函数

注:
       安装命令:sudo apt-get install libncurses5-dev
       为了能够使用Ncurses库,必须在源程序中将#include<curses.h>包括进来,而且在编译的需要与它链接起来. 
       在gcc中可以使用参数-lncurses进行编译.

1.  initscr(void);
	是curses模式的入口。将终端屏幕初始化为curses模式,为当前屏幕和相关的数据结构分配内存。
	
2.  int endwin(void); 
	是curses模式的出口,退出curses模式,释放curses子系统和相关数据结构占用的内存。
	
3.  int curs_set(int visibility); 
	设置光标是否可见,visibility:0(不可见),1(可见)
		
4.  int move(int  new_y, int  new_x);
	将光标移动到new_y所指定的行和new_x所指定的列
	
5.  int addch(const  chtype  char); 
	在当前光标位置添加字符
	
6.  int refresh(void); 
	刷新物理屏幕。将获取的内容显示到显示器上。	
	
7.  int  keypad(WINDOW  *window_ptr,  bool  key_on); 
	允许使用功能键。exp:keypad(stdscr,1);//允许使用功能按键  
	
8.  int getch(void); 
	读取键盘输入的一个字符
    补充:noecho();//禁止显示键盘输入的字符
	
9.  chtype inch(void); 
	获取当前光标位置的字符。
	注:curses有自己的字符类型chtype,使用时强制类型转换为char
	
10. int start_color(void); 
	启动color机制,初始化当前终端支持的所有颜色
	
11. int init_pair(short  pair_number,  short  foreground,  short  background);
   	配置颜色对        
	COLOR_BLACK	     黑色		COLOR_MAGENTA 	 品红色
	COLOR_RED  	     红色		COLOR_CYAN 	     青色
	COLOR_GREEN	     绿色		COLOR_WHITE 	 白色
	COLOR_YELLOW     黄色       COLOR_BLUE       蓝色
	
12. int  COLOR_PAIR(int  pair_number); 
	设置颜色属性,设置完颜色对,可以通过COLOR_PAIR实现
	
13. int  attron(chtype  attribute); 
	启用属性设置
	
14. int  attroff(chtype  attribute); 
	关闭属性设置




示例: 

#include <stdio.h>
#include <curses.h>
int main(int argc, const char *argv[])
{
	char ch;
	initscr();//进入curses模式
	curs_set(0);
	noecho();//禁止字符显示
	keypad(stdscr,1);//允许使用功能键
	start_color();//启动颜色机制
	init_pair(1,COLOR_WHITE, COLOR_RED);
	init_pair(2,COLOR_GREEN,COLOR_WHITE);

	ch = getch();
	if(ch == 'Q')
	{
		attron(COLOR_PAIR(1));
		move(10,10);
		addch('A');
		refresh();
		attroff(COLOR_PAIR(1));
	}
	move(10,10);
	ch = (char)inch();
	if(ch == 'A')
	{
		attron(COLOR_PAIR(2));
		move(10,11);
		addch('B');
		refresh();		
		attroff(COLOR_PAIR(2));
	}


	while(1);
	endwin();//退出curses模式
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— Web APIs(四)

思维导图 一、日期对象 1.1 实例化 实例化&#xff0c;默认得到当前时间&#xff0c;也可以指定时间 1.2 日期对象方法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible&q…

Vue3.0跨端Web SDK访问微信小程序云储存,文件上传路径不存在/文件受损无法显示问题(已解决)

整理需求&#xff1a; 需要vue3.0作为pc端的后台管理来连接微信小程序客户端需要Web SDK的引入&#xff0c;实现vue3.0接入云开发环境需要以云环境作为线上服务器&#xff0c;将vue3.0上传的本地文件通过云环境进入云储存&#xff0c;并将文件在云端生成云端快捷访问路径及htt…

仅招聘 45 岁以上程序员,是清流还是陷阱?

刚才刷新闻的时候&#xff0c;刷到这么一个招聘&#xff0c;仅限 45 岁以上的程序员。 乍一看&#xff0c;这公司挺人性化的&#xff0c;仅招聘 45 岁以上的程序员&#xff0c;而且体谅大龄程序员身体不如年轻人&#xff0c;尽量不用加班&#xff0c;只做产品预研。 这么写招聘…

计算机毕设 大数据全国疫情数据分析与3D可视化 - python 大数据

文章目录 0 前言1 课题背景2 实现效果3 设计原理4 部分代码5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的…

淘宝天猫复制商品链接粘贴到草柴查优惠券iPhone苹果手机粘贴弹窗怎么关闭?

经常在淘宝、天猫、京东网购&#xff0c;挑选商品后复制链接&#xff0c;到草柴APP查询要购买商品的优惠券和返利&#xff0c;iPhone苹果手机每次粘贴复制的商品链接都弹窗提示特别烦人。接下来分享如何关闭草柴APP复制粘贴提醒的弹窗&#xff1b; 如何永久关闭iPhone苹果手机复…

EM聚类(下):用EM算法对王者荣耀英雄进行划分

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

计算机视觉——飞桨深度学习实战-起始篇

后面我会直接跳到实战项目&#xff0c;将计算机视觉的主要任务和目标都实现一遍&#xff0c;但是需要大家下去自己多理解和学习一下。例如&#xff0c;什么是深度学习&#xff0c;什么是计算机视觉&#xff0c;什么是自然语言处理&#xff0c;计算机视觉的主要任务有哪些&#…

【机器学习】熵和概率分布,图像生成中的量化评估IS与FID

详解机器学习中的熵、条件熵、相对熵、交叉熵 图像生成中常用的量化评估指标通常有Inception Score (IS)和Frchet Inception Distance (FID) Inception Score (IS) 与 Frchet Inception Distance (FID) GAN的量化评估方法——IS和FID&#xff0c;及其pytorch代码

CISSP学习笔记: 安全通信和网络攻击

第十二章 安全通信和网络攻击 12.1 网络与协议安全机制 TCP/IP是主要协议&#xff0c;也存在许多安全缺陷 12.1.1 安全通信协议 为特定应用通信信道提供安全服务的协议被称为安全通信协议常见的安全通信协议&#xff1a; IP简单秘钥管理&#xff08;SKIP&#xff09;&#…

《Jetpack Compose从入门到实战》第九章 Accompanist 与第三方组件库

目录 AccompanistSystemUiControllerPagerSwipeRefreshFlow LayoutInsets LottieCoilAsyncImageSubcomposeAsyncImageAsyncImagePainter Accompanist 最新可用版本accompanist官方文档 SystemUiController 依赖&#xff1a;implementation “com.google.accompanist:accompa…

力扣 -- 494. 目标和(01背包)

参考代码&#xff1a; 未优化的代码&#xff1a; class Solution { public:int findTargetSumWays(vector<int>& nums, int target) {int nnums.size();int sum0;for(const auto& e:nums){sume;}//aimbsum//aim-btarget//aim(sumtarget)/2int aim(sumtarget)/2…

7、Nacos服务注册服务端源码分析(六)

本文收录于专栏 Nacos 中 。 文章目录 前言一、Nacos的任务设计中有哪些关键类&#xff1f;定义任务&#xff1a;NacosTask执行任务&#xff1a;NacosTaskProcessor执行引擎&#xff1a;NacosTaskExecuteEngine 二、PushDelayTaskExecuteEngine、NacosExecuteTaskExecuteEngine…

python操作.xlsx文件

from openpyxl import load_workbook from openpyxl.styles import Font,colors, Alignment from openpyxl.styles import Border, Side #打开已经存在的Excel workbook load_workbook(filenameC:\\Users\\yh\\Documents\\测试.xlsx) #创建表&#xff08;sheet&#xff09;,插…

崇州街子古镇2023中秋国庆双节第四天一瞥

今天已是2023中秋国庆双节第四天&#xff0c;上午近10时许&#xff0c;笔者继昨下午又走出寄居养老成都市崇州街子古镇青城神韵小区大门&#xff0c;看看节日气氛是否仍然浓厚...... 笔者手机拍摄&#xff1a;国旗飘扬的青城神韵小区一号大门 笔者手机拍摄&#xff1a;街子古镇…

了解”变分下界“

“变分下界”&#xff1a;在变分推断中&#xff0c;我们试图找到一个近似概率分布q(x)来逼近真实的概率分布p(x)。变分下界是一种用于评估近似概率分布质量的指标&#xff0c;通常用来求解最优的近似分布。它的计算涉及到对概率分布的积分或期望的估计

Spring5应用之JDK动态代理

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 前言JDK动态代理开…

计算机竞赛 深度学习猫狗分类 - python opencv cnn

文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习猫狗分类 ** 该项目较为新颖&a…

[C++随笔录] stack queue模拟实现

stack && queue模拟实现 stack的实现stack测试用例queue的实现queue测试用例deque stack的实现 &#x1f5e8;️stack的容器适配器应该选什么比较好呢? 首先, stack的特点是 头部入, 尾部出 ⇒ 尾插 和 尾删操作比较频繁 我们前面学过的容器有 vector 和 list, vecto…

代理服务器拒绝连接

在使用电脑时&#xff0c;有些时候会出现 代服务器拒绝连接 的提示&#xff0c;在这个时候通常采用的一种解决方案是&#xff1a; 首先 点击 winR &#xff0c; 后在其中输入 inetcpl.cpl&#xff0c;点击 连接->局域网设置&#xff0c;把选择框全部清空&#xff0c;点击确…