(function () {var imageUrl = "images/";//获取画布对象var c = $("#game-box").get(0);//手机屏幕自适应(function () {$(window).on("resize", resize);resize();function resize() {$(c).attr("height", $(window).height() < 800 ? $(window).height() : 800);$(c).attr("width", $(window).width() < 480 ? $(window).width() : 480);}})();//创建画布var cxt = c.getContext("2d");//图片资源, 存放图片对象var sources = [];//新建图片方法function creatImg(src) {if (typeof sources[src] != "undefined") {return sources[src];}sources[src] = new Image();sources[src].src = src;return sources[src];}$(function () {var images = ['bg.jpg', 'loading1.png', 'loading2.png', 'loading3.png', 'logo.png'];loadImages(images, loading);});function loading() {var loadingTime = 0;var refresh = function () {drawBg();drawLogo();load();loadingTime++;}var loadingClock = setInterval(refresh, 1);function drawBg() {var bg_img = creatImg("bg.jpg");var bg_img_width = bg_img.width;var bg_img_height = bg_img.height;cxt.drawImage(bg_img, 0, 0, bg_img_width, bg_img_height);}function drawLogo() {var logo_img = creatImg("logo.png");var logo_width = logo_img.width;var logo_height = logo_img.height;var c_width = $(c).width();var x = (c_width - logo_width) / 2;var y = 100;cxt.drawImage(logo_img, x, y, logo_width, logo_height);}function load() {if (loadingTime == 600) {loadingTime = 0;}var pic = creatImg("loading" + (parseInt(loadingTime / 200) + 1) + ".png");var pic_width = pic.width;var pic_height = pic.height;var c_width = $(c).width();var x = (c_width - pic_width) / 2;cxt.drawImage(pic, x, 220, pic_width, pic_height);}var images = ['cartridge.png', 'die1.png', 'die2.png', 'me.png', 'plain1.png', 'plain2.png', 'plain3.png', 'plain1_die1.png', 'plain1_die2.png', 'plain1_die3.png', 'plain2_die1.png', 'plain2_die2.png', 'plain2_die3.png', 'plain2_die4.png', 'plain3_die1.png', 'plain3_die2.png', 'plain3_die3.png', 'plain3_die4.png', 'plain3_die5.png', 'plain3_die6.png', 'me_die1.png', 'me_die2.png', 'me_die3.png', 'me_die4.png'];loadImages(images, function () {main();clearInterval(loadingClock);});}function loadImages(images, callback) {var loadedImages = 0;var numImages = images.length;for (var i in images) {sources[images[i]] = new Image();sources[images[i]].src = imageUrl + images[i];sources[images[i]].onload = function () {loadedImages++;if (loadedImages >= numImages) {callback();}};}}function main() {var modal = {"show": function (s) {$("#modal").find(".content").html(s);$("#modal").removeClass("hide");},"hide": function () {$("#modal").addClass("hide");}};var bg_img = creatImg("bg.jpg");var bg_img_width = bg_img.width;var bg_img_height = bg_img.height;cxt.drawImage(bg_img, 0, 0, bg_img_width, bg_img_height);var c_width = $(c).width();var c_height = $(c).height();var me = {};me.status = true;me.model = creatImg("me.png");me.width = c_width / 480 * me.model.width;me.height = me.width / me.model.width * me.model.height;me.move = function (x, y) {me.x = x - me.width / 2;me.y = y - me.height / 2;var c_width = $(c).width();var c_height = $(c).height();me.x = me.x > c_width - me.width ? c_width - me.width : me.x;me.x = me.x < 0 ? 0 : me.x;me.y = me.y > c_height - me.height ? c_height - me.height : me.y;}me.moveing = function () {if (!me.status) {return;}cxt.drawImage(me.model, me.x, me.y, me.width, me.height);}me.cartridges = [];me.cartridge = function (x, y) {var cartridgeModel = creatImg("cartridge.png");this.model = cartridgeModel;this.x = x;this.y = y;this.width = c_width / 480 * cartridgeModel.width;this.height = this.width / cartridgeModel.width * cartridgeModel.height;}me.attackTime = 0;me.attack = function () {if (!me.status) {return;}me.attackTime++;if (me.attackTime % 20 != 0) {return;}me.attackTime = 0;var cartridge = new me.cartridge(0, 0);cartridge.x = me.x + (me.width - cartridge.width) / 2;cartridge.y = me.y - cartridge.height;me.cartridges.push(cartridge);}me.attacking = function () {me.attack();var cartridgeSpeed = 10;me.cartridges.map(function (cartridge, cartridgeIndex) {cxt.drawImage(cartridge.model, cartridge.x, cartridge.y, cartridge.width, cartridge.height);if (cartridge.y <= 0) {me.cartridges.splice(cartridgeIndex, 1);}game.plains.map(function (plain) {var X = cartridge.x;var nextY = cartridge.y - cartridgeSpeed;if (X > plain.x&& X < (plain.x + plain.width)&& nextY < (plain.y + plain.height + plain.speed)&& cartridge.y >= (plain.y + plain.height)) {me.cartridges.splice(cartridgeIndex, 1);plain.byAttack();}});cartridge.y = cartridge.y - cartridgeSpeed;  //子弹向上移动});}me.die = function () {if (!me.status) {return;}$(c).off("mousemove");c.removeEventListener("touchmove");me.status = false;var dieSpeed = 25;var x = this.x;var y = this.y;var h = this.height;var w = this.width;game.plainsDies.push((new die()));function die() {var dieTime = 4 * dieSpeed;this.animationTime = 4 * dieSpeed;this.call = function () {if (this.animationTime == 1) {game.over();}var dieModel = creatImg("me_die" + (parseInt((dieTime - this.animationTime) / dieSpeed) + 1) + ".png");cxt.drawImage(dieModel, x, y, w, h);this.animationTime--;}}}var game = {};game.score = 0;game.me = me;game.time = 0;game.refresh = function () {game.time += 0.001;game.bgScroll();game.addPlain();game.plainsScroll();game.me.moveing();game.me.attacking();game.plainsDying();$("#score").html(game.score);}game.bgScrollTime = 0;game.bgScroll = function () {game.bgScrollTime += 0.5;if (game.bgScrollTime > bg_img_height) {game.bgScrollTime = 0;}cxt.drawImage(bg_img, 0, game.bgScrollTime - bg_img_height, bg_img_width, bg_img_height);cxt.drawImage(bg_img, 0, game.bgScrollTime, bg_img_width, bg_img_height);}game.plains = [];game.plainsNum = 0;game.addPlain = function () {if (game.bgScrollTime % 60 != 0) {return;}if (game.plainsNum == 25) {game.plainsNum = 0;}game.plainsNum++;switch (true) {case game.plainsNum % 13 == 0:game.plains.push(new plain(3, 0.3));break;case game.plainsNum % 6 == 0:game.plains.push(new plain(2, 0.3));break;default:game.plains.push(new plain(1, 0.3));break;}}game.plainsScroll = function () {game.plains.map(function (plain, plainIndex) {if (!plain.status) {game.plains.splice(plainIndex, 1);return;}cxt.drawImage(plain.model, plain.x, plain.y, plain.width, plain.height);if (isCollide(plain)) {game.me.die();}if (plain.y > c_height) {game.plains.splice(plainIndex, 1);}plain.y = plain.y + plain.speed;});//推断是否和玩家的飞机碰撞function isCollide(plain) {var plainTopLeft = [plain.x, plain.y];var plainBottomRight = [plain.x + plain.width, plain.y + plain.height];var meTopLeft = [game.me.x + game.me.width / 3, game.me.y];var meBottomRight = [game.me.x + (game.me.width * 2 / 3), game.me.y + (game.me.height * 2 / 3)];var collideTopLeft = [Math.max(plainTopLeft[0], meTopLeft[0]), Math.max(plainTopLeft[1], meTopLeft[1])];var collideBottomRight = [Math.min(plainBottomRight[0], meBottomRight[0]), Math.min(plainBottomRight[1], meBottomRight[1])];if (collideTopLeft[0] < collideBottomRight[0] && collideTopLeft[1] < collideBottomRight[1]) {return true;}return false;}}game.plainsDies = [];game.plainsDying = function () {game.plainsDies.map(function (plainDie, plainDieIndex) {if (plainDie.animationTime == 0) {game.plainsDies.splice(plainDieIndex, 1);return;}plainDie.call();});}game.over = function () {$(c).removeClass("playing");clearInterval(game.clock);modal.show(game.score);}game.clear = function () {game.me.x = ($(c).width() - game.me.width) / 2;game.me.y = $(c).height() - game.me.height;game.plains = [];game.plainsDies = [];game.plainsNum = 0;game.time = 0;game.bgScrollTime = 0;game.score = 0;game.me.status = true;}game.start = function () {$(c).addClass("playing");$(c).on("mousemove", function (e) {var x = e.clientX - $(this).offset().left;var y = e.clientY;me.move(x, y);});c.addEventListener("touchmove", function (e) {e.preventDefault();var touch = e.targetTouches[0];me.move(touch.pageX, touch.pageY);});modal.hide();game.clear();game.clock = setInterval(function () {game.refresh();}, 7);}game.start();//飞机类function plain(type) {this.type = type;this.hp;  //飞机生命值this.height;this.width;this.maxSpeed;this.dieTime;this.status = true;  //飞机死了没var dieSpeed = 25;  //死亡动画播放速度switch (type) {case 1:this.hp = 1;this.score = 1000;this.modelimg = "plain1.png";this.maxSpeed = 5;this.dieTime = dieSpeed * 3;break;case 2:this.hp = 6;this.score = 8000;this.modelimg = "plain2.png";this.maxSpeed = 2;this.dieTime = dieSpeed * 4;break;case 3:this.hp = 15;this.score = 30000;this.modelimg = "plain3.png";this.maxSpeed = 1.5;this.dieTime = dieSpeed * 6;break;}this.model = creatImg(this.modelimg);this.width = c_width / 480 * this.model.width;this.height = this.width / this.model.width * this.model.height;this.x = Math.random() * (c_width - this.width);this.y = -(this.height);var maxSpeed = game.time > 10 ? 10 : game.time;this.speed = Math.random() * (maxSpeed - 1) + 1;this.speed = this.speed < 0.5 ? Math.random() * 0.5 + 0.5 : this.speed;this.speed = this.speed > this.maxSpeed ? this.maxSpeed : this.speed;this.die = function () {var plainType = this.type;var plainX = this.x;var plainY = this.y;var plainW = this.width;var plainH = this.height;game.plainsDies.push((new die(this.dieTime)));function die(dieTime) {var dieTime = dieTime;this.animationTime = dieTime;this.call = function () {if (this.animationTime <= 0) {return;}var dieModel = creatImg("plain" + plainType + "_die" + (parseInt((dieTime - this.animationTime) / dieSpeed) + 1) + ".png");cxt.drawImage(dieModel, plainX, plainY, plainW, plainH);this.animationTime--;}}}this.byAttack = function () {this.hp--;if (this.hp <= 0) {game.score += this.score;this.status = false;this.die();}}}$("#modal").on("click", "button", function () {game.start();});}
})();

演示出处:请点击打开

Html5 の 微信飞机大战相关推荐

  1. 【三】仿微信飞机大战cocos2d-x3.0rc1

    上一篇:[二]仿微信飞机大战cocos2d-x3.0rc1 今天的任务是: 1.我机子弹无限量发射 2.三种类型敌机的出现 3.敌机自己碰墙死掉 一.效果界面展示 暂时没有实现子弹打中敌机 二.工程解 ...

  2. cocos2d-x-3.3-022-仿微信飞机大战-开篇介绍

    原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接 写在最前面 微信飞机大战,触控的大神JackyStudio 已经在他的专栏微信飞机大战讲解中完整细致的实现了一遍,基于cocos2d- ...

  3. 【C语言游戏】微信飞机大战 | PlaneFight(EasyX,drawAlpha绘制透明贴图,计时器,计帧器,游戏难度自动调整,接受鼠标消息,源码素材免费分享)

    一.数据结构介绍 struct aircraft //所有飞机的结构体 typedef struct aircraft{ int type;//飞机类型 int HP;//剩余血量 int bomb_ ...

  4. 用Javascript模拟微信飞机大战游戏

    最近微信的飞机大战非常流行,下载量非常高. 利用JS进行模拟制作了一个简单的飞机大战[此源码有很多地方可以进行重构和优化] [此游戏中没有使用HTML5 任何浏览器都可以运行]. 效果图: 原理:利用 ...

  5. Android游戏之仿 微信飞机大战

    暑假实训的一个程序,也是我第一次接触java和android开发,模仿微信的飞机大战,效果图如下:                 一:素材整理 素材来自网络,下载地址在此:http://downlo ...

  6. cocos2dx一仿微信飞机大战游戏实战一

    学习cocos2dx的新手教程实例,简单做个打飞机的小游戏,嗯,先运行看看游戏的效果: 下面我们就开始编写吧,首先我们要解决的几个问题是这个游戏的设计思路,微信的飞机大战游戏,有几个技术点,一是游戏背 ...

  7. 【cocos2d-x入门实战】微信飞机大战之十:UFO层特殊道具

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/11961795 游戏的趣味性就在于不时的给你一些惊喜.当然如果只是简单的子弹打 ...

  8. cocos2d-x-3.3-024-仿微信飞机大战-如何引爆炸弹-实现范围攻击

    原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接 承上文 先回答拓展思考里的问题,'物理引擎可否用来做碰撞检测?',答案是肯定的,具体见下面 cocos2d-x-3.3-019-碰撞检 ...

  9. Html5版飞机大战游戏中(Boss战)制作

    内容在"60行代码,制作飞机大战游戏"的基础上,继续追加入了Boss战的功能. boss的血量默认设置为100了,可以二次开发调整--(^_^) 玩起来有一定难度哈. 试玩地址:点 ...

  10. 【cocos2d-x入门实战】微信飞机大战之一:搞个飞机来玩玩

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/11650413 学习了一个阶段的cocos2d-x,发现用起来还是蛮顺手的.然 ...

最新文章

  1. GLUT键盘控制(glutKeyboardFunc和glutSpecialFunc)
  2. 电脑编程教学_梁溪区在线少儿编程哪个机构比较靠谱
  3. c 对一个mysql数据库进行操作_用C语言操作MySQL数据库
  4. 虚拟机中centos安装gcc
  5. python语句分为什么语句_在python中如何分句
  6. 四元组相加获得target
  7. python实现简单爬虫功能
  8. dijit.layout.ContentPane--dojo学习
  9. caffe中Makefile.config配置
  10. 大学生创新创业实务 复习题(无答案)
  11. 判断系统误差的matlab,基于MATLAB的误差数据处理实验报告
  12. RS232 与 RS485的区别总结
  13. ThinkPad T61笔记本BIOS详细设置
  14. 一年风雨几度寒,一杯浊酒敬虎年
  15. OpenGL Frame Buffer Object (FBO)
  16. 数字集成电路:MOS管器件章(一)
  17. CMCT-FA修饰阿霉素纳米脂质体/ADR-HAS-MS单抗Hab18偶联阿霉素人血清白蛋白微球的制备方法
  18. BlinkOn9 - Layered APIs
  19. Problem D. S03-05 计算球体表面积和体积
  20. 深度学习故障诊断之-使用条件生成对抗网络CGAN生成泵流量信号

热门文章

  1. 小米3g刷高格固件_不走弯路:小米路由器3G 刷Padavan固件简单教程
  2. 【Qt学习之路】我的Qt历程
  3. 熊猫眼啦!头晕得写不鸟程序啦!来谈谈我已经过大半的大学生活吧
  4. 小程序调用百度api实现图像识别
  5. 研磨设计模式--抽象工厂模式
  6. office 公式编辑器 插入花体格式字母
  7. Java8-为什么选择java8
  8. 快速查看当前APP包名
  9. y7000p屏幕亮度低_联想拯救者y7000p怎么样 评测结果揭晓屏幕优点
  10. 多年收集的一些稀有软件4