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 相关文章推荐
js 得到文件后缀(通过正则实现)
Jul 08 Javascript
jQuery中replaceWith()方法用法实例
Dec 25 Javascript
简介AngularJS的视图功能应用
Jun 17 Javascript
jQuery事件处理的特征(事件命名机制)
Aug 23 Javascript
vue.js实现仿原生ios时间选择组件实例代码
Dec 21 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
Jan 04 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
js判断数组是否包含某个字符串变量的实例
Nov 24 Javascript
微信小程序实现刷脸登录
May 25 Javascript
vue实现学生录入系统之添加删除功能
Jul 11 Javascript
微信小程序实现页面浮动导航
Jan 28 Javascript
微信小程序地图绘制线段并且测量(实例代码)
Jan 02 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
PHP分页显示制作详细讲解
2008/11/19 PHP
php简单获取目录列表的方法
2015/03/24 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
javascript 原型继承介绍
2011/08/30 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
python使用pymysql实现操作mysql
2016/09/13 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
使用matplotlib画散点图的方法
2018/05/25 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
虚拟机下载python是否需要联网
2020/07/27 Python
python 如何在测试中使用 Mock
2021/03/01 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
英国办公用品商店:Office Outlet
2018/04/04 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
工会主席岗位责任制
2014/02/11 职场文书
协议书怎么写
2014/04/21 职场文书
学校安全防火方案
2014/06/07 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
市级三好生竞选稿
2015/11/21 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL