JavaScript实现一个空中避难的小游戏


Posted in Javascript onJune 06, 2017

前言

最近在看js中的事件,之前也一直有用到事件,用到最多的就是onclick单击事件,还有填写表单信息时的用到的onfocus聚焦时间,和onblur事件,最近看到了onmousemove鼠标移动事件,觉得很神奇,就突然很想写一个小游戏,用到了setInterval函数。游戏的功能也很简单,就是天上掉纸片,小人儿要不停的躲,一旦纸片和小人儿相撞,就会game over!

代码如下:

<!DOCTYPE html>

<html>

<head>

<style>
 .move
 {
  margin-top: 0px;
  width:40px;
  height: 50px;
  background: #ff0;
  position:absolute;
  z-index: 999;
 }


 .self
 {
  width:40px;
  height: 50px;
  background: #f0f;
  position:absolute;
  margin-top: 600px;
  margin-left: 643px;
  z-index: 999;
 }

 .self img
 {
  width:40px;
  height: 50px;
  border-radius: 20px;
 }

</style>

<title>图图up up</title> 

</head>

<body onload="moveDiv()">
 <!--12个div就是空中的小纸片-->
 <div class="move" style="margin-left:100px">

 </div>

 <div class="move" style="margin-left:200px">

 </div>
 <div class="move" style="margin-left:300px">

 </div>
 <div class="move" style="margin-left:400px">

 </div>

 <div class="move" style="margin-left:500px">

 </div>
 <div class="move" style="margin-left:600px">

 </div>
 <div class="move" style="margin-left:700px">

 </div>
 <div class="move" style="margin-left:800px">

 </div>

 <div class="move" style="margin-left:900px">

 </div>
 <div class="move" style="margin-left:1000px">

 </div>
 <div class="move" style="margin-left:1100px">

 </div>
 <div class="move" style="margin-left:1200px">

 </div>

 <!--小人儿用一张图片代替-->
 <div id="self" class="self">
  <img src="images/tutu.jpg">
 </div>

</body>

<script type="text/javascript">

 var alldiv = document.querySelectorAll('.move');
 var selfdiv = document.getElementById("self");
 var timer, flag;
 function moveItem()
 {
  //用随机数决定哪一张纸片掉落
  for (var j = 0; j < Math.round(Math.random()*11); j++) 
  {

   var i = Math.round(Math.random()*11);
   alldiv[i].style.top = alldiv[i].offsetTop + 20 +"px";

   //掉落过程中改变纸片的颜色
   var rgb='rgb('+Math.floor(Math.random()*255)+','
      +Math.floor(Math.random()*255)+','
      +Math.floor(Math.random()*255)+')';
   alldiv[i].style.backgroundColor = rgb;

   if (alldiv[i].offsetTop >= 600)
   {
    alldiv[i].style.top = "50px"; //当纸片落到底部,又重新回到起点
   }
  }

 }

 function moveDiv()
 {
  timer = setInterval(moveItem,20); //每隔20ms掉落
  flag = setInterval(meeting,1); //间隔1ms判断是否相撞
 }

 var selfdiv = document.getElementById("self");
 selfdiv.onmousedown = function(e) //鼠标点击小人儿开始移动
 {
  document.onmousemove = function(e) //小人儿跟着鼠标移动
  {
   if (e.clientY > 600)
   {
    selfdiv.style.marginTop = "600px"; //如果到达屏幕底部就不再往下
   }
   else if(e.clientX > 1300)
   {
    selfdiv.style.marginLeft = "1300px"; //到达最右部就回到不再往右
   }
   else
   {
    //小人儿的位置始终等于鼠标的位置
    selfdiv.style.marginTop = e.clientY + "px";
    selfdiv.style.marginLeft = e.clientX + "px";
   }
  }
 }

 function meeting()
 {
  for (var i = 0; i < alldiv.length; i++)
  {
   //判断是否相撞
   if (Math.abs(alldiv[i].offsetTop-selfdiv.offsetTop) <= 50 && 
    Math.abs(alldiv[i].offsetLeft-selfdiv.offsetLeft) <= 40)
   {
    clearInterval(flag);
    clearInterval(timer);
    alert("一不小心撞到了!!!游戏结束");
   }
  }
 }

</script>

</html>

效果如图:

JavaScript实现一个空中避难的小游戏

全部的代码就这些,动图做的效果不是很好,第一次做动图,发现有很多在线网站都可以,做起来很简单,还是免费的,开心!!!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript实现的网页局布刷新效果
Dec 01 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
jQuery Ajax 实例全解析
Apr 20 Javascript
javascript中使用正则表达式清理table样式的代码
Apr 01 Javascript
javascript创建对象的3种方法
Nov 02 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
Dec 24 Javascript
three.js中文文档学习之如何本地运行详解
Nov 20 Javascript
js实现多个倒计时并行 js拼团倒计时
Feb 25 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 Javascript
layui之table checkbox初始化时选中对应选项的方法
Sep 02 Javascript
React冒泡和阻止冒泡的应用详解
Aug 18 Javascript
原生js实现俄罗斯方块
Oct 20 Javascript
vue脚手架vue-cli的学习使用教程
Jun 06 #Javascript
D3.js进阶系列之CSV表格文件的读取详解
Jun 06 #Javascript
JavaScript实现移动端轮播效果
Jun 06 #Javascript
js评分组件使用详解
Jun 06 #Javascript
javascript中mouseenter与mouseover的异同
Jun 06 #Javascript
jquery仿京东商品放大浏览页面
Jun 06 #jQuery
Node.js连接mongodb实例代码
Jun 06 #Javascript
You might like
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
js同时按下两个方向键
2007/12/01 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
详解javascript函数的参数
2015/11/10 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
python 实现归并排序算法
2012/06/05 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
Python中扩展包的安装方法详解
2017/06/14 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
python3 pygame实现接小球游戏
2019/05/14 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
Python流程控制 if else实现解析
2019/09/02 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
纬创Java面试题笔试题
2014/10/02 面试题
表扬信格式
2014/01/12 职场文书
护理专业自荐书
2014/06/04 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
行政文员岗位职责
2015/02/04 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书