Flappy bird项目

2023-10-24 03:45
文章标签 项目 flappy bird

本文主要是介绍Flappy bird项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、功能分析

1、小鸟自动向右滑行

2、按下空格小鸟上升,不按下落

3、显示小鸟需要穿过的管道

4、管道自动左移和创建

5、小鸟和管道碰撞,游戏结束

6、技术

7、 项目框图

8、Ncurses

1)创建窗口界面,移动光标,产生

颜色,处理键盘

2)安装库

3)链接库

4)头文件

#include<curses.h>

9、Ncurses库函数

1)initscr(void)

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

调用函数相当于创建窗口界面,没有返回值。

2)int endwin(void)

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

程序以initscr函数入,endwin函数结束

3)int cuis_set(int visibility)

设置光标是否可见,visibility:0(不可见),1(可见)

搭建一个curses界面,显示/不显示光标

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);

参数1:当前界面

参数2:允许使用功能键F1-F10

keypad(stdscr,1);

8)int getch(void);

读取键盘输入的字符

9)chtype inch(void);

获取当前光标位置的字符

chtype有自己的字符类型chtype,使用时强制转换为char

10)noecho();禁止输入字符显示

在输入界面获取一个字符-判断是不是Q-是Q的话在第10行10列打印A

输入Q:

获取当前位置字符-是不是A-是A在20行20列打印B

颜色配置函数

11)int start_color(void);

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

12)int init_pair(short  pair_number,short foreground,short background);

配置颜色对

foreground:字符颜色

background:背景颜色

COLOR_BLACK 黑色

COLOR_RED红色

COLOR_GREEN绿色

COLOR_YELLOW黄色

COLOR_MAGENTA品红色

COLOR_CYAN 青色

COLOR_WHITE白色

COLOR_BLUE蓝色

13)int COLOR_PATR(int pair_numer);

设置颜色属性,设置完颜色对,可以通过COLOR_PAIR实现

声明颜色对

14)int attron(chtype attribute);

启用属性设置

15)int attroff(chtype attribute);

关闭属性设置

打开颜色机制-配置两个颜色对-用开关锁给两个字符配置颜色

一、信号机制介绍

1、curses有阻塞等待的特性,一条语句没有执行,后面的也不会执行

例:在getch函数之前,只执行打印C不会打印下面的A、B

输入Q之前,只会出现C:

输入Q,显示下面的字符:

2、阻塞问题

3、信号的概念

1)忽略信号:对到来的信号不做处理

2)捕捉信号:信号发生时,执行设定好的处理函数

3)执行缺省操作:执行信号的默认操作

4、62种信号类型

SIGALRM:通知进程,定时器时间到

SIGINT:结束所有前台操作的进程

5、信号的检测和处理

  把小鸟的下落和管道的移动都放在信号处理函数中,当定时时间到后,管道自动移动,小鸟自动下落,与阻塞无关

二、定时功能实现

1、

5秒内终止,会打印HELLO,5秒后跳出循环,不会打印

2、设置定时器

it_value:首次启动的初始值

it_interval:重新启动的间歇值

3、启动定时器

4、设置信号机制-定时器解决阻塞问题

5、设置定时器,每个1秒打印一句话

一、功能实现-让小鸟飞起来

1、变量定义

2、主函数

3、其他函数

二、功能实现-让管道动起来

1、在main函数中添加随机种子

三、代码完善

这篇关于Flappy bird项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/272491

相关文章

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择