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 相关文章推荐
Javascript中的数学函数集合
May 08 Javascript
JavaScript与DropDownList 区别分析
Jan 01 Javascript
在JS中最常看到切最容易迷惑的语法(转)
Oct 29 Javascript
lyhucSelect基于Jquery的Select数据联动插件
Mar 29 Javascript
正则表达式搭配js轻松处理json文本方便而老古
Feb 17 Javascript
JS实现两表格里数据来回转移的方法
May 28 Javascript
javascript实现根据时间段显示问候语的方法
Jun 18 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
Sep 01 Javascript
Bootstrap基本组件学习笔记之面板(14)
Dec 08 Javascript
jQuery动态移除和添加背景图片的方法详解
Mar 07 Javascript
Node.js pipe实现源码解析
Aug 12 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
Apr 10 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
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
asp批量修改记录的代码
2008/06/25 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
Bootstrap每天必学之导航组件
2016/04/25 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
Python实现的简单算术游戏实例
2015/05/26 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
物流司机岗位职责
2013/12/28 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
微型企业创业投资计划书
2014/01/10 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
道歉信怎么写
2015/05/12 职场文书