微信demo游戏飞机大战从无到有

现在创建新项目会默认给飞机大战的demo,这里给大家从基础开始讲解游戏的从无到有是怎么实现的。

具体实现步骤:

创建背景图->背景图运动起来->创建飞机并随背景图一起动->控制飞机移动->飞机发射子弹->创建敌机->消灭敌机->玩家飞机被击毁->显示结算界面

首先删除所有自带文件,只保留game.js、game.json和project.config.json(原来的最好保留,因为等会要复制一些内容)

删除game.js中的内容,此时模拟器为一片漆黑,如下图所示

好,我们正式开始一步步开始编写飞机大战

官方提供了Adapter库,方便我们操作,官方的解释如下:

这里weapp-adapter足够用,就不用其它游戏引擎了!

1、weapp-adapter

新建JS文件夹,在js文件夹中新建libs文件夹,将weapp-adapter复制进来(原来保存中复制),然后js目录下新建一个main.js文件

2、在game.js中添加代码

main.js先空着,我们要先建立精灵类

3、创建精灵类

精灵,是构成游戏中活动体(比如,飞机、野兽等游戏人物)的最基本单元。

在JS目录下新建sprite.js文件,添加代码,定义背景图的文件,大小,位置等,并显示在画布上。

转存失败重新上传取消

4、显示背景图

然后添加背景图片images/bg.jpg,在background.js文件中添加代码

转存失败重新上传取消

背景图片的方法已经完成,现在到主函数main.js中实现图片显示,添加代码

即可实现图片加载,效果如下:

5、背景图运动起来

如果细心的朋友会发现,前面背景图方法里是绘制了两张图片的,一张是和铺满屏幕的,另一张是在屏幕上方看不到的。

如果让背景图运动起来,就要是图片向下移动,因为每一帧都会重新绘制,所以要再背景图方法中加一个向下运动的方法

然后再loop循环中添加

此时背景图就运动起来了

6、加载飞机,并随地图一起运动

新建玩家飞机类

转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消

在主函数中添加飞机相关

将loop循环中的内容拆分为重绘和更新

此时,玩家飞机出现,并可以和地图一起运动

转存失败重新上传取消正在上传…重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消正在上传…重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消

7、控制飞机移动

新增判断手指的相关动作,以及判断是否处于屏幕中

转存失败重新上传取消

此时,飞机的位置可以通过手指和鼠标进行控制

8、发射子弹

这个时候因为子弹会有很多个,而且超出屏幕的要回收掉,所以要加全局管理器和对象池

Base目录中新增pool.js文件(对象池),js目录中新增databus.js文件(全局管理器),这两个文件可以复制原来的

添加子弹类文件bullet.js,复制原来的即可

飞机类新增代码发射子弹

主函数文件中新增

Render中重绘子弹

Update中更新子弹的位置,并每隔20帧发射一枚子弹,数值越小,发射速度越快

已完成子弹发射的功能。

9、创建敌机

敌机会有爆炸的动画,所以要新建一个帧动画类和敌机类

帧动画类:base目录下的animation.js

敌机类:npc目录下enemy.js

(复制过来就行,具体不做详解)

主函数中新增生成敌机的代码

此时不会有敌机爆炸,也没有撞机的功能

10、消灭敌机

主函数中新增全局碰撞检测,被注释掉的是玩家飞机和敌机碰撞,暂时先不要

全局碰撞方法要放到update函数中,此时可以消灭敌机,但是没有爆炸动画,玩家也是出于无敌状态的。

新增代码,显示爆炸动画

11、玩家飞机被击毁,游戏结束

然后控制游戏不再更新

这个时候画面静止不动了,游戏结束了

12、显示结算界面

在runtime文件夹中新增gameinfo.js文件,用于积分和结算界面

判断游戏结束后,显示结算页面,并新增点击重新开始事件

游戏结束后,手指触摸事件

转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消

此时,如果游戏结束后,点击重新开始,会发现不正常,游戏立马结束了,原因是原来所有的游戏单元都还在。

新增代码

所有的单元全部重置,此时又有新的问题,游戏速度变的越来越快了

此时可以重新开始,但是飞机不能移动了,原因很简单,事件监听中还是开始的事件,要删除掉

至此,已经完成了飞机大战的制作了(音效就没管了,需要可以自己研究一下)

结束。。等等,游戏中的时候居然没有显示实时积分??这个居然漏了,现在补上

上面是显示积分,下面是积分增加,消灭一个敌机加一

至此,真的结束了,至少每一步是怎么实现的,应该有所了解,具体实现的逻辑可以自己研究,后续会有更多的实例提供大家参考。

如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!小编也会每天定时更新既有趣又有用的编程知识!

微信demo小游戏:飞机大战从无到有相关推荐

  1. 【游戏开发实战】使用Unity 2019制作仿微信小游戏飞机大战(七):主角飞机碰撞与爆炸

    文章目录 零.教程目录 一.前言 二.本篇目标 三.飞机机碰撞组件:BoxCollider2D.Rigidbody2D 四.添加Tag:Enemy 五.主角飞机碰撞处理:OnTriggerEnter2 ...

  2. c 语言500行小游戏代码,500行代码使用python写个微信小游戏飞机大战游戏.pdf

    500行行代代码码使使用用python写写个个微微信信小小游游戏戏飞飞机机大大战战游游戏戏 这篇文章主要介绍了500行代码使用python写个微信小游戏飞机大战游戏,本文通过实例代码给大家介绍的非常详 ...

  3. 【Python】Python小游戏--飞机大战

    一.前言 今天已经初四,舒服的在家躺尸的春节也算过去了,又要开始辛勤的(苦逼的)学习和工作了.说点题外话,今年春节的病毒疫情真的弄的人心惶惶,我也在这为国家和武汉加油,也向一线工作人员致敬,希望早日结 ...

  4. 用JAVA制作小游戏——飞机大战(三)

    本篇博客是对飞机大战游戏项目完整代码的展示 详细代码讲解: 用JAVA制作小游戏--飞机大战(一) 用JAVA制作小游戏--飞机大战(二) 最下方附整个程序的文件下载链接 代码展示 主界面 impor ...

  5. 用JAVA制作小游戏——飞机大战(二)

    本篇博客是对飞机大战游戏使用代码的展示 重难点: 首先需要鼠标能够控制战机,使鼠标在窗口内时始终能够使战机的位置与鼠标相同,实现鼠标控制战斗机移动. 其次需要能够以一定的速度产生子弹和敌机,并且以一定 ...

  6. java小游戏-java小游戏-飞机大战

    java小游戏-java小游戏-飞机大战 1 窗口创建 2 背景图片添加 3 启动页面制作 4 启动页面点击事件 5 游戏物体父类的编写 6 背景的移动 7 双缓存的添加 8 背景图片的循环出现 9 ...

  7. c语言小游戏-飞机大战

    今天我们来尝试用easyx图形库实现c语言小游戏-飞机大战(源代码和图片已经在结尾给出) 先引用头文件 #include<stdio.h> #include<time.h>// ...

  8. python代码示例500行源代码-500行代码使用python写个微信小游戏飞机大战游戏

    这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手. 帮助蹲厕族.YP族.饭圈女孩在无聊之余可以有一样东西让他们振作起来!让他们的左手 / 右 ...

  9. 微信小游戏-飞机大战(DoodlePlane)

    项目内容介绍 两种模式 经典模式 打落敌机可得分数,碰到敌机减少飞机携带的血瓶,当为血瓶数为零时碰到敌机游戏结束. 无敌模式 处于无敌状态的飞机一次可发射五发子弹,且飞机碰到敌机时飞机不受影响. 在两 ...

  10. cocos2d-x小游戏——飞机大战

    上周,我做了一个基于 cocos2d-x 的飞机大战的游戏,因为我刚学cocos2d-x没多久,所以这个飞机大战很多都是看着别人的教程,再加上自己的一些想法,来做的. 下面我想说一说我的思路. 飞机大 ...

最新文章

  1. 为 Django admin 登录页添加验证码
  2. AD5272数字变阻器
  3. 微软拿下美国国防部100亿美元云合同,亚马逊不干了...
  4. MongoDB 学习-MongoDB 的基本操作(二)
  5. 数据流中的中位数 Find Median from Data Stream
  6. 实习踩坑之路:ElasticSearch双写数据不同步?不实时?怎么优化?
  7. 题解【NOIP2013_火柴排序】— 问题与转化
  8. MATLAB在线网页链接使用
  9. origin 画热图
  10. 【高数】极限运算法则+两个重要极限
  11. 猿辅导2019 编程两道
  12. 公钥,私钥,数字签名,证书图解(转)
  13. 尚雯婕变芭比娃娃 你被雷到了还是被电到?
  14. kubernetes使用flannel网络插件服务状态显示CrashLoopBackOff
  15. To run in silent mode, OPatch requires a response file for Oracle Configuration Manager (OCM).
  16. python编程剪刀石头布思路_Python制作简单的剪刀石头布游戏
  17. 9点击按钮修改valu属性
  18. 重磅!百度怒告前高管王劲,真实原因竟然是因为....
  19. Spring自动注入
  20. 【LabVIEW】ELVIS III 、 myRIO 固件更新

热门文章

  1. IOS CA服务器和客户端的配置
  2. keil c51注册机2032
  3. AD09 PCB设计中频繁弹出“undeclared identifier........“
  4. 数据结构题集(C语言版 清华大学出版社)
  5. 测试手机游戏平均帧率软件,想测试手机游戏帧率吗?最Skr帧率测试步骤都在这里!...
  6. 【MATLAB调用Refprop】
  7. ATP-EMTP中利用LCC模块构建JMarti三相电缆模型原理(中压电缆)
  8. 学会提问pdf_原来只要1分钟,Word、PPT、PDF文件就能随意互相转换,快学学
  9. 软件 规则引擎_如何设计软件规则引擎
  10. java读取摄像头视屏流,Java 摄像头视频获取