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-TreeView父子联动效果保持节点状态一致
Aug 12 Javascript
javascript 多种搜索引擎集成的页面实现代码
Jan 02 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
Mar 20 Javascript
arguments对象验证函数的参数是否合法
Jun 26 Javascript
jQuery获取DOM节点实例分析(2种方式)
Dec 15 Javascript
Validform+layer实现漂亮的表单验证特效
Jan 17 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
深入理解jquery中的each用法
Dec 14 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
VUE简单的定时器实时刷新的实现方法
Jan 20 Javascript
vue用elementui写form表单时,在label里添加空格操作
Aug 13 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
jQuery的end()方法使用详解
2015/07/15 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
详谈python http长连接客户端
2017/06/12 Python
pandas通过loc生成新的列方法
2018/11/28 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
机械制造专业毕业生求职信
2014/03/02 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
2014年连锁店圣诞节活动方案
2014/12/09 职场文书
中秋节寄语2015
2015/03/24 职场文书
投诉信范文
2015/07/02 职场文书
餐馆开业致辞
2015/08/01 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
JS高级程序设计之class继承重点详解
2022/07/07 Javascript