本文实例为大家分享了js微信打飞机游戏的具体代码,供大家参考,具体内容如下

首先实现微信打飞机游戏,首先会有自己和敌机,采用canvas绘图来生成自己和敌人。

1、生成自己,且可以通过左右键来进行左右移动。

//生成自己,且可以左右移动

//控制飞机向右移动的函数

function moveRight(event){

context.clearRect(aligh,100,47,47);

//防止飞机移除背景外

if(aligh < 260){

var img = new Image();

img.src = "../images/self.png";

img.onload = function(){

context.drawImage(img, aligh,100);

}

aligh += 10 ;

}

//当飞机即将移出背景外时,让它停在最右端

if (aligh == 260){

var img = new Image();

img.src = "../images/self.png";

img.onload = function(){

context.drawImage(img, 260,100);

}

}

}

//控制飞机向左移动的函数

function moveLeft(event){

context.clearRect(aligh,100,47,47);

//防止飞机移出最左边的边界

if(aligh > 0){

var img = new Image();

img.src = "../images/self.png";

img.onload = function(){

context.drawImage(img, aligh,100);

}

aligh -= 10 ;

}

//使其控制在最左侧

if (aligh == 0){

var img = new Image();

img.src = "../images/self.png";

img.onload = function(){

context.drawImage(img, 0,100);

}

}

}

//判断按下的是哪个键,然后控制飞机左右移动

document.onkeydown = function(event){

if(event.keyCode == 37){

moveLeft();

}

if(event.keyCode == 39){

moveRight();

}

}

2、生成敌机。敌机就是在背景上随机生成图片。每隔一秒使其从上面下落。

var createId = setInterval(function(){

var top = 0+'px';

var enemy = document.createElement("img");

enemy.src = "../images/enemy.png";

//生成随机的位置

var randomleft = Math.floor(Math.random() * 300) ;

//如果生成的位置出现在背景外,则就取260

left = randomleft > 260 ? 260 + 'px': randomleft + 'px';

leftArr.push(left); //保存每个敌机的距左边的距离,方便碰撞检测的计算

arrPic.push(enemy); //将每个敌机的图片保存在数组中,方便碰撞检测后移除

main.appendChild(enemy);

enemy.style.paddingLeft = left ;

enemy.style.paddingTop = top;

var spandom = $("#main>img:last-child");//这儿利用jquery找到最后一个img

//让最后一个img动起来。则就相当于为每一个img都绑定了动画

spandom.animate({"paddingTop":420},6000,function(){

//当下落到底部时移除元素

this.remove();

arrPic.splice(0,1); //从数组中移除图片

leftArr.splice(0,1); //从数组中移除距离

fallCount ++; //检测下落了多少个飞机,超过十个没被打中,游戏就结束

});

//如果落下的飞机数超过十个没有被打中,则游戏结束

if(fallCount > 10){

clearInterval(createId);

clearInterval(crashId);

alert("当前得分 :"+count+" , 很遗憾,游戏结束!")

}

},1000);

3、现在主要是碰撞检测。每隔2.2秒进行一次检测,因为检测台频繁的话,直接长按向左向右键,都可以直接消除。就没有意义了

function checkCrash(){

crashId = setInterval(function(){

//由于每次自由落下的飞机在上面函数中都被移除了。所以leftArr数组中保存的就是当前页面存在的飞机的左距离数组。

for(var i = 0; i < leftArr.length; i++)

{

//首先将两种都转换成int型进行比较

var tempL = parseInt(leftArr[i]);

var tempA = parseInt(aligh); //表示自己距左侧的位置

//当自己的中心距离处于敌机的左右两侧范围内,则表示被击中

if(tempL <= (tempA + 20) && (tempA + 20) <= (tempL + 40)){

arrPic[i].remove(); //碰撞检测,移除敌机的图片

arrPic.splice(i,1); //从图片数组中移除图片

leftArr.splice(i,1); //从记录敌机左侧距离数组中移除该敌机的距离

count++;

score.innerHTML = "当前得分 "+count;

break; //检测到之后直接跳出循环,进行下一个2.2秒的碰撞检测

}

}

},2200);

}

checkCrash();

这个游戏还不太完整,没有生成子弹。大部分功能都已经实现了。

4、效果图如下:

最后附上源代码:

html&css

*{

margin: 0px;

padding: 0px;

}

#main{

width: 300px;

height: 500px;

border:1px solid red;

margin: 0 auto;

}

#my{

position: absolute;

z-index: 2;

top:350px;

}

#background{

position: absolute;

z-index: 1;

width: 300px;

height:500px;

border: 1px solid green;

background-image: url(../images/background.jpg);

}

img{

position: absolute;

z-index: 2;

}

#enmey{

width: 50px;

height: 50px;

}

#score{

position: absolute;

margin-left: 50%;

left: 150px;

top:100px;

width: 160px;

font-size: 20px;

font-family: "微软雅黑";

font-weight: bold;

line-height: 70px;

text-align: center;

}

当前得分:0

JavaScript

var main = document.getElementById('main');

var my = document.getElementById('my');

var score = document.getElementById("score");

var context = my.getContext('2d');

var crashId;

var fallCount = 0; //记录没被打中的飞机数,如果超过10,游戏结束

var aligh = 0 ;

var count = 0; //记录打中的飞机数,即当前得分

var leftArr = [];

var arrPic = [];

var left;

var img = new Image();

img.src = "../images/self.png";

img.onload = function(){

context.drawImage(img,aligh,100);

}

//生成自己,且可以左右移动

function move(event){

event = EventUtil.getEvent(event);

context.clearRect(aligh,100,47,47);

if(event.keyCode == 39 && aligh < 260 ){

var img = new Image();

img.src = "../images/self.png";

img.onload = function(){

context.drawImage(img, aligh,100);

}

aligh += 10 ;

}

if (aligh == 260){

var img = new Image();

img.src = "../images/self.png";

img.onload = function(){

context.drawImage(img, 260,100);

}

}

}

document.onkeypress = move;

//随机生成敌机

(function(){

var createId = setInterval(function(){

var top = 0+'px';

var enemy = document.createElement("img");

enemy.src = "../images/enemy.png";

var randomleft = Math.floor(Math.random() * 300) ;

left = randomleft > 260 ? 260 + 'px': randomleft + 'px';

leftArr.push(left); //保存每个敌机的距左边的距离,方便碰撞检测的计算

arrPic.push(enemy); //将每个敌机的图片保存在数组中,方便碰撞检测后移除

main.appendChild(enemy);

enemy.style.paddingLeft = left ;

enemy.style.paddingTop = top;

var spandom = $("#main>img:last-child");//找到最后一个span

spandom.animate({"paddingTop":420},6000,function(){

//移除元素

this.remove();

arrPic.splice(0,1); //移除图片

leftArr.splice(0,1); //从数组中移除距离

fallCount ++;

});

//如果落下的飞机数超过十个没有被打中,则游戏结束

if(fallCount >= 10){

clearInterval(createId);

clearInterval(crashId);

alert("当前得分 :"+count+" , 很遗憾,游戏结束!")

}

},1000);

})();

//碰撞检测

function checkCrash(){

crashId = setInterval(function(){

for(var i = 0; i < leftArr.length; i++)

{

var tempL = parseInt(leftArr[i]);

var tempA = parseInt(aligh);

if(tempL <= (tempA + 20) && (tempA + 20) <= (tempL + 40)){

arrPic[i].remove(); //碰撞检测,移除敌机的图片

count++;

score.innerHTML = "当前得分 "+count;

continue;

}

}

console.log(count);

},2200);

}

checkCrash();

}

更多有趣的经典小游戏实现专题,分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

微信打飞机html 游戏代码,JavaScript仿微信打飞机游戏相关推荐

  1. 网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点

    前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. 本文讲描述, 如何在网页端实现一个仿微信 ...

  2. php仿微信朋友圈网站源码,Smobiler仿微信朋友圈的消息代码实例

    这篇文章主要介绍了.Net语言Smobiler开发平台如何仿微信朋友圈的消息样式?本文为大家揭晓答案 最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xam ...

  3. linux打地鼠游戏代码,JavaScript实现打地鼠小游戏

    一.实验说明 1. 环境介绍 本实验环境采用Ubuntu Linux桌面环境,实验中会用到桌面上的程序: Xfce终端: Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令 Fir ...

  4. php仿微信朋友圈源码,Android开发仿微信发朋友圈浏览图片效果实例代码

    这篇文章主要介绍了Android仿微信发朋友圈浏览图片效果的相关资料,需要的朋友可以参考下 先看一下效果吧: 下面就来说一下具体怎么实现的: 实现思路1.首先我们要获取数据源,数据源就是我们的每条说说 ...

  5. 纯javascript仿金山苹果打字游戏

    周末2天在家无聊,女朋友要练打字,一直都是在用金山的苹果打字,哈哈,干脆就自己用JS写一个苹果打字游戏,内容比较简单,本人不会美工,页面没有美化,贴出来跟大家一起学习. 本打字游戏共分10关,第一关: ...

  6. android仿微信图片上传进度,android高仿微信发布动态(选择图片)

    [实例简介]Android 超高仿微信图片选择器 [实例截图] [核心代码] public class MainActivity extends Activity implements OnImage ...

  7. android 仿微信选取相册_Android--选择图片(仿微信发朋友圈)第一篇

    这篇博客主要写仿微信朋友圈选择图片发朋友圈.整个功能包括加载图片,显示图片.相册文件夹.预览图片,九宫格显示已经选择好的图片等等,大概会有三篇博客. 效果图 看上面的图,加载图片肯定是异步加载,耗时任 ...

  8. android仿微信发布动态功能,Android GridView扩展仿微信微博发图动态添加删除图片功能.pdf...

    Android GridView扩扩展展仿仿微微信信微微博博发发图图动动态态添添加加删删除除图图片片功功能能 这篇文章主要为大家详细介绍了Android GridView扩展仿微信微博发图动态添加删除 ...

  9. html5 网页游戏论文,JavaScript编写的网页小游戏,很给力

    以下为游戏代码: var timerID = null; var INT = 40; var loadFLG = 0; var gameFLG = 0; var missFLG = 0; var ti ...

  10. android 仿微信朋友圈 评论,2020年android 仿微信朋友圈 评论

    2020年android 仿微信朋友圈 评论 1.如果有人问我:那些艰难的岁月你是怎么熬过来的?我想我只有一句话回答:我有一种强大的精神力量支撑着我,这种力量名字叫"想死又不敢" ...

最新文章

  1. SAP MM初阶事务代码MEK1维护PB00价格
  2. 100G 最新技术学习资料大全分享 (2020 年最新)
  3. [Microsoft][ODBC SQL Server Driver][SQl Server]参数数据类型 text 对于 replace 函数的参数 1 无效。...
  4. shell脚本删除linux中的文件
  5. SDWC2017游记
  6. 英语语法---单词总结
  7. 世界上有条件JavaScript是什么?
  8. 用循环语句编程打印如下图案
  9. ObjC学习5-变量和数据类型
  10. vc屏幕录像存为wmv文件_最好用的录像软件,三步实现高清录制?
  11. Win10下Eclipse运行环境的安装及使用
  12. Python解压zip和rar文件
  13. DHCP Option 82
  14. 手把手教使用阿里云短信接口发送短信验证码
  15. Leetcode 刷题 - 排序(day4)_颜色排序
  16. java——获取网页源代码
  17. 三重积分平均值_质心计算
  18. linux vim无法退格,Cygwin下安装vim后,vim中退格键无法正常使用的解决方法
  19. Hibernate的事务级别控制与查询对象的API(Query查询与Criterial查询+离线查询)
  20. ubuntu 下 ssd磁盘检测

热门文章

  1. 【计算机图形学】画线算法——Bresenham算法(任意斜率)
  2. AliSQL编译安装
  3. 从OpenJDK官网下载JDK源码
  4. 【C语言】初学者写基础代码的基本步骤
  5. 光纤尾纤的型号和作用有哪些?
  6. 第二章 身份验证——《跟我学Shiro》[张开涛]
  7. 基于matlab的锁相环频率合成器,基于simulink的电荷泵锁相环频率合成器建模与仿真.pdf...
  8. 银行卡号与开户行对照文档
  9. jquery开发手册(详细全面)
  10. 根据快手账号的分享链接下载无水印视频,思路