飞机大战C语言实现

这是大一下学期结束的大作业,因为不想去写千篇一律的学生管理系统之类的东西,所以就想着做一个游戏,正好在童晶老师的书上看到一个C语言实现飞机大战的教程,就想着在此基础上加以改进,写一个豪华版 乱搞版的飞机大战 。

由于时间与技术的限制,只增添了以下4个功能:
一、玩家飞机的血量与能量机制的实现
二、激光武器的实现
三、画面中同时出现多架敌机
四、轰炸机boss的实现

下面分享一下具体功能的实现思路:

①玩家飞机的血量与能量机制
定义两个全局变量hp=10(血量值),mp=100(能量值),当玩家飞机与敌机或轰炸机的炸弹发生碰撞时hp-1,当按下鼠标右键发射激光时mp-10;当
hp=0时游戏结束,当mp=0时将无法再发射激光。

②按下鼠标右键发射激光
首先初始化将激光的位置定义在画面之外(不显示),当检测到按下鼠标右键时,将激光的位置坐标赋值为当前飞机的位置坐标;在updateWithoutInput()中
依次判断是否有敌机位于激光所在位置的宽度范围(激光位置-50<=飞机位置<=激光位置+50)内,若第i台敌机在范围值内则随机刷新第i台敌机的位置;遍历
完enemyNum台敌机后将所有处于宽度范围内的敌机都会被刷新,达到清除前方小范围内所有敌机的目的,循环结束后再次激光位置定义在画面外(不显示)。

③画面同时出现多架敌机
首先用一个enemy数组存储敌机变量,数组长度为enemyNum(每帧画面上敌机数量),初始化时用rand()函数随机生成每架飞机的x坐标,y坐标则固定为画
面长度上限,在updateWithoutInput()函数中用for循环遍历enemyNum架敌机,每当一架敌机被击败后或离开画面范围后,画面会随机生成一架新敌机,达到使画面中时刻容纳有enemyNum架敌机的目的。

④轰炸机的实现
首先初始化将轰炸机的位置定义在画面之外(不显示)并且定义一个全局变量储存轰炸机血量(默认为5),当分数达到30分时,将轰炸机的x坐标设置为画面
最左边,y坐标则固定为画面长度上限,达到使初始轰炸机出现在左上角的目的;每当玩家飞机获得两分时或轰炸机被击中时(hp-1),轰炸机位置会刷新出一
颗炸弹(朝玩家飞机方向移动)并且向右移动50像素(当超出画面边界时位置又会回到左上角),以达到增加玩家得分难度的目的;分数每增加100分会刷新出新的轰炸机。

然后是做完之后的一些效果图(名字瞎取的):

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这个过程中花了好几个晚上实现了相关功能的雏形,但改很多乱七八糟的小bug也花了不少时间,好在最终结果还算不错,也算是圆满地为我的大一学习画上了一个句号,在此发个文章留个纪念哈哈哈。

*PS:代码资源链接 (提取码:d5da)

  • 18
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值