全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JavaScript仿微信打飞机游戏

本文实例为大家分享了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

<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8"/ >
 <title></title>
 <script type="text/javascript" src = "./fightFlight.js"></script>
 <script src = "../jQuery/jquery-3.2.0.min.js"></script>
 <style type="text/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;
 }
 </style>
</head>

<body>
<div id = "main">
<canvas id = "background"></canvas>
<canvas id = "my"></canvas>
<div id = "score">当前得分:0</div>
</div>

</body>
</html>

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();

} 

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

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

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


# js微信打飞机游戏  # js微信打飞机  # js打飞机游戏  # JS面向对象实现飞机大战  # js实现飞机大战游戏  # JavaScript用200行代码制作打飞机小游戏实例  # three.js绘制地球、飞机与轨迹的效果示例  # JavaScript原生编写《飞机大战坦克》游戏完整实例  # 纯javascript模仿微信打飞机小游戏  # JavaScript制作简易的微信打飞机  # JavaScript 小型打飞机游戏实现原理说明  # js实现飞机大战小游戏  # 移除  # 组中  # 经典小游戏  # 右键  # 使其  # 每隔  # 很遗憾  # 自己的  # 的是  # 移出  # 打飞机  # 会有  # 不太  # 出现在  # 两种  # 就没  # 微软  # 可以通过  # 给大家  # 可以直接 


相关文章: 微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  家庭建站与云服务器建站,如何选择更优?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  红河网站制作公司,红河事业单位身份证如何上传?  深圳网站制作培训,深圳哪些招聘网站比较好?  如何在阿里云部署织梦网站?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何在Tomcat中配置并部署网站项目?  建站上市公司网站建设方案与SEO优化服务定制指南  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  建站之星代理商如何保障技术支持与售后服务?  Bpmn 2.0的XML文件怎么画流程图  开封网站制作公司,网络用语开封是什么意思?  南宁网站建设制作定制,南宁网站建设可以定制吗?  Python多线程使用规范_线程安全解析【教程】  建站主机默认首页配置指南:核心功能与访问路径优化  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  制作电商网页,电商供应链怎么做?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  PHP正则匹配日期和时间(时间戳转换)的实例代码  建站主机助手选型指南:2025年热门推荐与高效部署技巧  公司网站制作需要多少钱,找人做公司网站需要多少钱?  制作网站外包平台,自动化接单网站有哪些?  制作表格网站有哪些,线上表格怎么弄?  制作农业网站的软件,比较好的农业网站推荐一下?  ,怎么用自己头像做动态表情包?  建站之星导航如何优化提升用户体验?  音响网站制作视频教程,隆霸音响官方网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  怎么将XML数据可视化 D3.js加载XML  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  建站10G流量真的够用吗?如何应对访问高峰?  如何用好域名打造高点击率的自主建站?  如何在橙子建站上传落地页?操作指南详解  制作网页的网站有哪些,电脑上怎么做网页?  建站主机选购指南与交易推荐:核心配置解析  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  如何零基础开发自助建站系统?完整教程解析  平台云上自助建站如何快速打造专业网站?  宝塔新建站点报错如何解决?  网站制作的步骤包括,正确网址格式怎么写?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  建站主机是否等同于虚拟主机?  在线教育网站制作平台,山西立德教育官网?  黑客如何利用漏洞与弱口令入侵网站服务器?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  建站之星如何取消后台验证码生成? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。