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面向对象编程
Mar 04 Javascript
Raphael带文本标签可拖动的图形实现代码
Feb 20 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
May 19 Javascript
Knockout自定义绑定创建方法
Dec 26 Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
通过JS获取Request.QueryString()参数的值实现方法
Sep 27 Javascript
javascript实现鼠标点击页面 移动DIV
Dec 02 Javascript
canvas绘制多边形
Feb 24 Javascript
微信小程序实现多宫格抽奖活动
Apr 15 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
Moment.js实现多个同时倒计时
Aug 26 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析构函数的简单使用说明
2015/08/24 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
Javascript !!的作用
2008/12/04 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
原生js实现淘宝放大镜效果
2020/10/28 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
python迭代器实例简析
2014/09/25 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Python模拟登陆实现代码
2017/06/14 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
Python如何使用函数做字典的值
2019/11/30 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
Python截图并保存的具体实例
2021/01/14 Python
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
2014年三八妇女节活动方案
2014/02/28 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
六五普法学习心得体会
2016/01/21 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS