JavaScript实现的躲避球小游戏
自己搜集了很多资料,看了很多视频,写了一个躲避球的游戏,本人还在学习阶段,写次文章也算是对自己所学的再一次领悟吧,请大神勿喷。
好了,话不多说了,直接进入主题。
首先创建一个游戏画面,当然本人只为实现功能,没有注重美观。
<body><div id="big"><ul id="start">开始</ul><ul id="again">再玩一次</ul></div>
</body>
<style type="text/css">
*{margin: 0px;padding: 0px;}
#big{width: 800px;height:500px;background: #000;margin: 0px auto;position: absolute;overflow: hidden;}
#start{width: 100px;height: 40px;background: #ff0000;position: absolute;top: 500px;left: 350px;text-align: center;line-height: 40px;font-size: 25px;color: #aaa;z-index: 2;cursor: pointer;}
#again{width: 100px;height: 40px;background: #ff0000;position: absolute;top: 500px;left: 350px;text-align: center;line-height: 40px;font-size: 25px;color: #aaa;z-index: 3;cursor: pointer;}
</style>
另外还需要从<head>标签里引入一个animate的脚本文件,自己把路径改了就行。http://yun.baidu.com/share/link?shareid=1591801040&uk=522145410 可以去网盘里下载。
<head><script src="animate.js"></script>
</head>
下面就开始写我们的脚本了,我直接把注释写在页面里了,大家可以根据注释学习
<script>window.onload = function(){var big = document.getElementById('big');var start = document.getElementById('start');var again = document.getElementById('again');//myAnimate是写在animate.js里的myAnimate(start,{top:(big.offsetHeight-start.offsetHeight)/2},400);//设置开始按钮的位置again.onclick=start.onclick = function(){//开始按钮和再玩一次调用同一个函数myAnimate(start,{top:big.offsetHeight},400);//点击开始按钮后,开始按钮回到游戏框的下方。myAnimate(again,{top:big.offsetHeight},400);//点击再玩一次按钮,同样的效果。var alldivs = big.getElementsByTagName('div');//将游戏角色和障碍物放在一个数组里var length = alldivs.length;//数组的长度if(lenth>0){//数组的长度大于0,说明游戏窗体里有存在的divfor(var i =0;i<length;i++){big.removeChild(alldivs[0]);//清楚游戏窗体的div(此处是游戏结束时发生的)}}//创建游戏角色var target = document.createElement('div');big.appendChild(target);//设置游戏角色的样式css(target,"width",25);css(target,"height",25);css(target,"backgroundColor","#ff0000");css(target,"position","absolute");css(target,"top",(big.offsetHeight-target.offsetHeight)/2);css(target,"left",(big.offsetWidth-target.offsetWidth)/2);//创建障碍物,并让障碍物运动起来function create(){var arr = [];//创建一个数组,为了将障碍物都放进去var arrl = [];//设置障碍物的offsetLeftvar arrt = [];//设置障碍物的offsetTop//创建游戏窗体左右两边的障碍物for(var i=0;i<=30;i++){var attr1 = [0,800];//800是游戏窗体的widthvar attr1index = Math.floor(Math.random()*attr1.length);//生成随机数var l = attr1[attr1index];//取出随机数var divs = document.createElement('div');big.appendChild(divs);//设置障碍物的样式css(divs,"width",(1+Math.random())*4);css(divs,"height",(1+Math.random())*4);css(divs,"backgroundColor",randcolor());css(divs,"position","absolute");css(divs,"top",big.offsetHeight*Math.random());判断游戏窗体的左右if(l==0){css(divs,"left",l-Math.random()*20);//此处的20随便更改}else{css(divs,"left",l+Math.random()*20);}arr.push(divs);arrl.push(divs.offsetLeft);arrt.push(divs.offsetTop);}//创建游戏窗体上下的障碍物for(var i=0;i<=30;i++){var attr2 = [0,500];var attr2index = Math.floor(Math.random()*attr2.length);//生成随机数var l = attr2[attr2index];//取出随机数var divs = document.createElement('div');big.appendChild(divs);css(divs,"width",(1+Math.random())*4);css(divs,"height",(1+Math.random())*4);css(divs,"backgroundColor",randcolor());css(divs,"position","absolute");css(divs,"left",big.offsetWidth*Math.random());判断游戏窗体的上下if(t==0){css(divs,"top",t-Math.random()*20);}else{css(divs,"top",t+Math.random()*20);}arr.push(divs);arrl.push(divs.offsetLeft);arrt.push(divs.offsetTop);}//让障碍物朝着游戏角色的方向运动起来for(var i=0;i<arr.length;i++){(function(){myAnimate(arr[i],{top:(target.offsetTop)*2-arrt[i]+Math.random()*120,le ft:(target.offsetLeft)*2-arrl[i]+Math.random()*120},5000*(1+Math.random ()),Tween.Leaner,function(){big.removeChild(arr[i]);arrt=[];arrl=[];},target,again);})(i)}}create();target.time = setInterval(function(){create();},6000)//方向键控制游戏角色的运动document.onkeydown =function(){var ev = e||window.event;//区分IE和其他浏览器//左方向键if(ev.keyCode==37){document.t = setInterval(function(){if(target.offsetLeft<=0){clearInterval(document.t);target.style.left = 0+"px";}else{target.style.left = target.offsetLeft-7 +"px";}},30)}//上方向键if(ev.keyCode==38){document.t = setInterval(function(){if(target.offsetTop<=0){clearInterval(document.t);target.style.top = 0+"px";}else{target.style.top = target.top-7+"px";}},30)}//右方向键if(ev.keyCode==39){document.t = setInterval(function(){if(target.offsetLeft>=big.offsetWidth-target.offsetWidth){//需要自己体会clearInterval(document.t);target.style.left = big.offsetWidth-target.offsetWidth+"px";}else{target.style.left = target.left+7+"px"; }},30)}//下方向键if(ev.keyCode==40){document.t = setInterval(function(){if(target.offsetTop>=big.offsetHeight-target.offsetHeight){clearInterval(document.t);target.style.top = big.offsetHeight-target.offsetHeigth+"px";}else{target.style.top = target.top+7+"px";}},30)}}//按键弹起时取消计时器document.onkeyup = function(){clearInterval(document.t);document.t = null;}//创建随机颜色function randcolor(){return "rgb("+Math.ceil(255*Math.random())+","+Math.ceil(255*Math.random())+"," +Math.ceil(255*Math.random())+")";} }}
</script>
关于躲避球游戏的代码就是以上这些了,本人还是个新手,也是第一次写这种博客,代码的质量不高,逻辑可能也不够清晰,请大家见谅。
转载于:https://my.oschina.net/u/1991426/blog/295870
JavaScript实现的躲避球小游戏相关推荐
- python小游戏-16行代码实现3D撞球小游戏!-源码下载
python小游戏-16行代码实现3D撞球小游戏!-源码下载 所属网站分类: 资源下载 > python小游戏 作者:搞笑 链接: http://www.pythonheidong.com/bl ...
- Stack Ball 堆栈球小游戏unity3d开发教程
Stack Ball 堆栈球小游戏unity3d开发教程 介绍 <Stack Ball>是一款3D街机游戏,玩家需要通过旋转的螺旋平台来打碎.撞击和弹跳,以达到终点. 听起来很容易?你可错 ...
- html5+canvas+javascript开发打灰机小游戏
今天不出太阳,整个人都有点颓废.为了我的大前端计划,不得已找点代码练练手. 打灰机是很早就流行的手机游戏,那时候智能手机还很贵,我还是学生一枚.现在出来工作了,发现别人写的打灰机游戏,然后游戏逻辑很差 ...
- python海龟画图模块制作的拦球小游戏,谁说小海龟只会画图
""" 拦球小游戏.py 海龟本身的图形有"arrow", "turtle", "circle", & ...
- Android陀螺仪应用:平衡球小游戏
平衡球小游戏 在手机硬件还不够发达的早些时候,简易的"体感游戏"成为了手机游戏中的一个大头. 利用设备上自带的动态传感器,通过摇晃手机等方式,移动游戏物体来游玩的游戏. 为了成功理 ...
- Android陀螺仪应用_平衡球小游戏
平衡球小游戏 在手机硬件还不够发达的早些时候,简易的"体感游戏"成为了手机游戏中的一个大头. 利用设备上自带的动态传感器,通过摇晃手机等方式,移动游戏物体来游玩的游戏. 为了成功理 ...
- 使用javascript实现简单的龟兔赛跑小游戏
使用javascript实现简单的龟兔赛跑小游戏 以下是实现代码 //javascript实现代码 function start(){t=document.getElementById('t')r=d ...
- java写弹力球游戏,用Qt5做的弹力球小游戏
[实例简介] 用Qt5做的一个弹力球小游戏,Qt5及版本以上能直接运行.这个小游戏代码比较多,希望下载的同学能改进,一起交流. [实例截图] [核心代码] 9137bea4-84cc-4b28-9ae ...
- 安卓期末大作业——Android弹力球小游戏
功能描述: 弹力球小游戏,使用AndEnginePhysicsBox2D游戏开发引擎开发,适合新手学习.搭建方法请看入门教程菜单中的androidstudio项目搭建教程.关于怎么实现的问题请不要问我 ...
- Android弹力球小游戏案例
功能描述: 弹力球小游戏,使用AndEnginePhysicsBox2D游戏开发引擎开发,适合新手学习. 开发语言: java 技术框架: mvc,AndEnginePhysicsBox2D引擎 开发 ...
最新文章
- pytorch 动态调整学习率 重点
- Windows下通过MinGW进行WxWidgets的动态编译与静态编译
- CSS3 flexbox 布局 ---- flex项目属性介绍
- UVA11825 黑客的攻击 Hackers' Crackdown 状压DP,二进制,子集枚举
- Linux环境:NFS--网络文件系统部署
- mysql数据中文乱码_win10 系统解决mysql中文乱码问题
- c语言二级考试真题新疆,新疆自治区计算机二级C语言考试题库.doc
- 工作中,我们经常用到哪些SQL语句呢?
- ftpclient怎么获取到该目录下面得文件_你应该知道的10种Python文件系统方法
- 由于供不应求 部分新款Apple Watch机型推迟至11月交付
- 3、数据库的事务、并发和锁机制
- 基于Surface的视频编解码与OpenGL ES渲染
- sigar 网络 java_使用Sigar获取服务器内存、IP、CPU、IO、MAC地址、操作系统等信息...
- 怎么制止qq刷屏代码-vbs
- 阿里云短信验证码发送类
- Linux一键安装部署环境
- 计算机的集成显卡是什么意思,IGD、PEG、PCI的含义,我的电脑是集成显卡该选哪一项...
- 用代码写一个炫酷的地球
- linux configure 的 --prefix 参数的作用
- java 给word加水印,Java 实现在线给word 文档添加水印
热门文章
- 契约精神,姜戈里的医生为什么要杀奴隶主 (标题有剧透),及编程等乱七八糟的...
- 一些webGL地球的网址
- 基于Java Servlet图片服务器
- Self-Supervised Learning of Pretext-Invariant Representation
- Help library 安装arcobjects for .NET异常问题
- Snapper:通过同义、分类关键词快速定位并调用WAV文件
- 生活中图像处理的一个小应用
- 信用卡上了“灰名单”怎么办?如何解除?
- 接近开关 NPN PNP
- Derby 数据库内涵