js实现带积分弹球小游戏


Posted in Javascript onJuly 21, 2020

本文实例为大家分享了js实现带积分的弹球小游戏的具体代码,供大家参考,具体内容如下

注:如果小球与底部方块的角碰撞,积分可能有些许bug

<style>
  #box {
   width: 400px;
   height: 400px;
   border: 1px solid #000000;
   margin: 50px auto;
   position: relative;
  }

  #ball {
   height: 60px;
   width: 60px;
   border-radius: 50%;
   background-color: red;
   position: absolute;
   left: 0;
   top: 0;
  }

  #block {
   width: 100px;
   height: 20px;
   position: absolute;
   left: 150px;
   bottom: 0;
   background-color: black;
  }

  #count {
   color: #ff0000;
   font-size: 18px;
   position: absolute;
   width: 20px;
   height: 20px;
   left: -20px;
   top: 0;
  }
</style>
<body>
 <div id="box">
  <div id="count">0</div>
  <div id="ball"></div>
  <div id="block"></div>
 </div>
</body>
<script>
 var oBox = document.querySelector('#box');
 var oBall = document.querySelector('#ball');
 var oBlock = document.querySelector('#block');
 var oCount = document.querySelector('#count');

 var speedBlock = 5;
 var speedX = 5;
 var speedY = 4;

 var maxLeft = oBox.clientWidth - oBall.offsetWidth;
 var maxTop = oBox.clientHeight - oBall.offsetHeight;
 var max = oBox.clientWidth - oBlock.offsetWidth;

 setInterval(function () {
  var left = oBall.offsetLeft;
  var top = oBall.offsetTop;

  left += speedX;
  top += speedY;

  if (left < 0 || left > maxLeft) {
   speedX = -speedX;
  }

  if (top < 0) {
   speedY *= -1;
  }

  var r = oBall.offsetWidth / 2;

  if (left >= oBlock.offsetLeft - r && // 左边线碰撞条件
   left <= oBlock.offsetLeft - r + oBlock.offsetWidth && // 右边线碰撞条件
   top >= maxTop - oBlock.offsetHeight   // 下边线碰撞条件
  ) {
   // console.log('撞上了');
   speedY = -Math.abs(speedY);
   // speedY *= -1;
   oCount.innerHTML = oCount.innerHTML * 1 + 1;
  }

  if (top > maxTop) {
   left = 0;
   top = 0;
  }

  oBall.style.left = left + 'px';
  oBall.style.top = top + 'px';

 }, 50);

 document.onkeydown = function (e) {
  var ev = event || e;
  var keyCode = ev.keyCode || ev.which;

  var left = oBlock.offsetLeft;

  if (keyCode === 37) {
   left -= speedBlock;
  }
  if (keyCode === 39) {
   left += speedBlock;
  }

  if (left <= 0) {
   left = 0
  }

  if (left >= max) {
   left = max;
  }

  oBlock.style.left = left + 'px';
 }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery实现的多选框多级联动插件
May 02 Javascript
从零学JS之你需要了解的几本书
May 19 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
Mar 05 Javascript
浅析JavaScript访问对象属性和方法及区别
Nov 16 Javascript
JavaScript中Window对象的属性及事件
Dec 25 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
Feb 14 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
Dec 07 Javascript
JavaScript数组操作详解
Feb 04 Javascript
JS获取input[file]的值并显示在页面的实现方法
Mar 09 Javascript
vue中使用微信公众号js-sdk踩坑记录
Mar 29 Javascript
electron 安装,调试,打包的具体使用
Nov 06 Javascript
在vue中created、mounted等方法使用小结
Jul 21 #Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 #Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
Jul 21 #Javascript
解决Vue中的生命周期beforeDestory不触发的问题
Jul 21 #Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 #Javascript
vue 清空input标签 中file的值操作
Jul 21 #Javascript
Vue-resource安装过程及使用方法解析
Jul 21 #Javascript
You might like
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
php中json_encode中文编码问题分析
2011/09/13 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
python使用urllib2模块获取gravatar头像实例
2013/12/18 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
python获取多线程及子线程的返回值
2017/11/15 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
汽车专业毕业生自荐信
2013/11/03 职场文书
日语专业个人的求职信
2013/12/03 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
医德医魂心得体会
2014/09/11 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
2021/06/08 Python
Python OpenCV之常用滤波器使用详解
2022/04/07 Python