Flappy bird 想必是一款大家都不陌生的游戏,当初因为几近自虐的超高难度反而使它红极一时。作为一名程序员,你肯定想过自己开发一款这样的小游戏,实验楼介绍的是通过 C 语言来实现一款属于自己的 Flappy bird ,而且是字符界面的,有没有很酷炫的赶脚~
一、效果图
效果图为了降低实现的难度,我们采用单个字符 O
来表示 bird ,而用符号*
组成的矩阵表示障碍物。
是不是看着就很极客的方式,来吧,学C语言的童鞋,一起来跟着开发吧。
二、项目说明
教程是由 大梦想01 发布在实验楼,完整教程及在线练习地址:C 语言版的 flappy bird
三、基础知识
项目用到了一点数据结构的知识,还涉及到了 Linux 的一些系统调用。
此外,还用到了一个文本界面的屏幕绘图库 ncurses。所以在编译时需要加上-lcurses
选项。
因此,需要执行以下命令安装 ncurses 库。
sudo apt-get install libncurses5-dev
四、开发思路
要实现字符界面版的 Flappy bird ,我们需要考虑实现以下三个关键点:
- 程序要能响应键盘事件
- 字符界面要能实时更新重绘
- 如何使 bird 有种在往前飞行的感觉
对于以上三个问题我们的解决方案如下:
- 使用 Linux 提供的系统接口获取键盘事件
- 使用 ncurses 库函数绘制字符界面
- 要使 bird 有往前飞行的感觉,最简单的可以让 bird 在水平方向上从左往右移动,但是这样的话会使得 bird 在某一时刻超出界面边界,所以既然 bird 不便移动,我们不妨让障碍物从右往左移动,这样最终得到的视觉效果是一样的,而且也不存在 bird 超出边界的问题。
五、开发步骤
前面介绍了项目的开发思路,接下来就是开发步骤啦,我们的教程分为4个步骤来完成开发:
- 常量定义:因为我们是终端字符界面,所以一切离不开 ASCII 字符,我们需要定义一些常量;
- 定时问题:解决如何让背景定时移动的问题;
- main 函数:在 main 函数里先做好初始化,然后在循环中接受键盘输入;
- 编译:执行 gcc 指令进行编译;
关于项目的详细开发文档、代码、步骤等,点击这里即可进行查看啦。
网友评论