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中OnLoad几种使用方法
Dec 15 Javascript
JavaScript使用function定义对象并调用的方法
Mar 23 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
Jul 12 Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 Javascript
ionic2懒加载配置详解
Sep 01 Javascript
Js经典案例的实例代码
May 10 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
Sep 14 Javascript
JQuery中queue方法用法示例
Jan 31 jQuery
小程序实现按下录音松开识别语音
Nov 22 Javascript
微信小程序图片右边加两行文字的代码
Apr 23 Javascript
Vue3不支持Filters过滤器的问题
Sep 24 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 flv视频时间获取函数
2010/06/29 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
Javascript - HTML的request类
2006/07/15 Javascript
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
Python实现通讯录功能
2018/02/22 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
Python多图片合并PDF的方法
2019/01/03 Python
Python编写打字训练小程序
2019/09/26 Python
Python中私有属性的定义方式
2020/03/05 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
普通大学毕业生自荐信
2013/11/04 职场文书
初中物理教学反思
2014/01/14 职场文书
民生工作实施方案
2014/05/31 职场文书
师范大学生求职信
2014/06/13 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript
nginx之queue的具体使用
2022/06/28 Servers