所谓游戏图像,就是不断绘制更新绘制更新的一个连续过程,所以我们的主函数为一个循环体。然后游戏代码分为 定义、初始化、更新数据、游戏结束判定几个过程。
该游戏运用exayx图形库运行,请读者自行在官网进行环境配置(此游戏仅作为读者参考,作者并非专业开发者,若有不当请给与批评指正)。
我们应该先找到游戏中使用的游戏素材,将找好的音乐、小鸟图片、背景等素材导入代码的文件夹中,以备调用,如图所示(图片对应的黑底白色图片是对应图片的掩码图,掩码图的使用目的是为了实现图像的透明,具体参见其他文章对掩码图的解释,百度就有,作者使用ps自行制作):
然后我们使用结构体定义游戏各个组件的数据,定义窗口大小,声明调用函数。
我们知道小鸟x坐标是不变的,其实只是图片中的地面(round.png)在不断向右边移动,所以小鸟的参数为坐标x,y、而且我们用一个g参数模拟重力,使得小鸟在不受控制的情况下不断下落,用结构体定义小鸟,而且你会发现,定义中还有一个IMAGE img2[3][2]数组,这个数组的作用是每个小鸟彩图对应一个其掩码图,如果不加上掩码图你会发现图像在运行的过程中给有黑框,会比较影响观感。
其他物体的参数也是如此,具体读者请参考代码,里面我标注的非常详细。
定义之后我们要先初始化,初始化的作用是把各个游戏部件的坐标、速度、游戏音乐播放的初始定义在一起,不管定义什么我们都要注意,一定要先行进行初始化!
初始化之后我们就可以开始写绘制函数,绘制函数的作用就是控制动画,让地图和小鸟动起来的前提是先要绘制图像,绘制函数的用法请参考代码。注意:绘制的图像图层与代码的先后有一定关系,读者可以自行根据需要进行调节。
之后我们就需要完成数据更新这一部分,我们知道,数据更新分为两部分,自动更新(动画自行演示,路面自己走动,小鸟煽动翅膀等等),另一部分为手动更新(鼠标操作之后小鸟往上飞),运用函数实现鼠标与计算机的交互,具体请参考代码。
最后我们需要进行游戏结束的判断,运用if语句,当小鸟的坐标与管道、地面、边界重叠时,让小鸟的垂直速度瞬间变大,这样就模拟了小鸟死亡掉落画面,同时停止播放音乐,播放死亡音乐。
文章只给读者提供一个大概思想,具体代码如下,请读者自行进行理解,注释标注得比较多,方便读者阅读。请多多支持作者,谢谢大家,有问题请给我留言,我会第一时间答复!
#include<stdio.h>
#include<graphics.h>
#include<easyx.h>
#include<time.h>
#include<mmsystem.h>
#include<windows.h&g