用 C 语言开发一个字符界面的 flappy bird

96
实验楼
2016.10.13 16:52* 字数 717

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 指令进行编译;

关于项目的详细开发文档、代码、步骤等,点击这里即可进行查看啦。

C/C++