
显示界面如上图所示
自己找的背景和飞机素材,先将素材奉上.



![]()

接下来我先简单分析一下这个单机游戏的运行逻辑:
就像显示界面所显示的那样,我们想要实现的是自己的飞机在发射子弹(子弹在上图没显示),然后当子弹射到敌方飞机,这里设置了两种类型的飞机,如果读者想定义更多类型的,直接添加属性就可以.当子弹射到飞机的时候,飞机的血量减少,就像CS一样,并不一定是一发子弹就死亡,读者可以根据自己喜欢去设置,博主这里设置大飞机的血量是3发子弹,而小飞机的血量是1发子弹,也就是说,当有3发子弹射到大飞机的时候,大飞机就消失,一发子弹小飞机消失.至于其他的动态效果,博主这里暂时不做介绍.具体往下看:
面向对象开发,每一个对象我们都需要给他设置相对应的对象属性,在语言当中,我们将其设置成结构体就可以:
enum My
{
WIDTH = 500,
HIGHT = 700,
BULLET_NUM = 100,//玩家子弹数量
ENEMY_NUM = 10,//敌机的数量
BIG,
SMALL,
};
struct Plane
{
int x;
int y;
bool live;//是否存活
int width;
int hight;
int hp;
int type;//敌机类型 big small
}player,bull[BULLET_NUM],enemy[ENEMY_NUM];
首先设定了一个联合,用于设置弹出窗口的基本参数和其他属性.
上面是不是把敌方飞机,自己飞机和自己发射的子弹都定义成了一个结构体.下面我们就可以直接用了.
(x,y)代表的是对象在窗口当中的坐标,width和hight是对象自身的尺寸,而hp是血量,type是博主自己定义了两种敌机类型.布尔类型live判断飞机是否存活状态.
第一步我们应该是要先创建图形窗口
/*测试
circle(50, 50, 50);//画空心圆
setfillcolor(GREEN);//圆的颜色
fillcircle(100, 100, 50);///实心⚪*/
//创建图形窗口
initgraph(WIDTH, HIGHT,SHOWCONSOLE);//宽长
initgraph()函数直接用
第二步加载窗口里面使用到的图片 //无论什么时候用,我们都要进行图片加载的,因此此处我们将其设定到一个函数下,方便之后也可以随时添加和删除.
//把图片加载进程序
IMAGE bk;//背景图
//保存玩家图片
IMAGE img_role;
//保存子弹
IMAGE img_bull;
//
IMAGE img_enemy[4];
void loadImg()
{
//加载图片
loadimage(&bk, "D:/program/飞机大战/images/bk.png");
//加载玩家图片
loadimage(&img_role, "D:/program/飞机大战/images/fly.png");
//加载子弹图片
loadimage(&img_bull, "D:/program/飞机大战/images/子弹.jpg");
//加载敌机的图片
loadimage(&img_enemy[0], "D:/program/飞机大战/images/enemy1.png");
loadimage(&img_enemy[1], "D:/program/飞机大战/images/enemy2.png");
//loadimage(&img_enemy[2], "D:/program/飞机大战/images/enemy3.jpg");
//loadimage(&img_enemy[3], "D:/program/飞机大战/images/enemy4.jpg");
}
IMAGE 是easyx里面的一个参数,直接用
此案例当中,需要我们加载的图片有背景图,自己飞机图,子弹图,敌方飞机1和敌方飞机2,如果读者也自己添加第三台和第四台敌机,也可以直接添加,不过要注意,当一种对象,存在多个类型的时候,要采用数组将其存储,方便之后进行使用.
第三步,要干嘛?设置好窗口了,加载完图片了,是不是要把图片添加进去了?
那图片添加到哪里去?怎么添加?哪一种图片应该添加在哪里呢?
这里我们是不是首先要初始化一下图片的基本属性?of course,买衣服我总的知道我适合穿多大尺码的衣服吧?
void gameinit()//初始化数据
{
player.x = WIDTH / 2;
player.y = HIGHT - 120;
player.live = true

本文详细介绍了一个简单的单机版“飞机大战”游戏的开发过程。通过面向对象的方式,定义了玩家飞机、子弹及不同类型的敌机等游戏元素,并实现了游戏逻辑,包括玩家控制、子弹发射、敌机生成及碰撞检测等功能。

9290

被折叠的 条评论
为什么被折叠?



