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 相关文章推荐
event.X和event.clientX的区别分析
Oct 06 Javascript
EditPlus注册码生成器(js代码实现)
Mar 25 Javascript
js和jquery设置disabled属性为true使按钮失效
Aug 07 Javascript
14个有用的Jquery技巧分享
Jan 08 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 Javascript
JavaScript判断按钮被点击的方法
Dec 13 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
Sep 21 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
vue-cli脚手架引入图片的几种方法总结
Mar 13 Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 Javascript
JS数组中对象去重操作示例
Jun 04 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
Aug 08 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中如何调用用户自定义函数
2013/08/06 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
Django中的文件的上传的几种方式
2018/07/23 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
物流管理专业求职信
2014/05/29 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
教师个人成长总结
2015/02/11 职场文书
教导主任个人总结
2015/03/03 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
机械生产实习心得体会
2016/01/22 职场文书
python实现网络五子棋
2021/04/11 Python
Python字符串格式化方式
2022/04/07 Python