js实现带积分弹球小游戏
作者:你你你就你 发布时间:2024-04-10 16:19:15
标签:js,弹球
本文实例为大家分享了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>
来源:https://blog.csdn.net/Ga_b_c/article/details/107452362


猜你喜欢
- 一:原理: 先看一下点击事件的执行顺序: 单击(click):mousedown,mouseout,click; 双击(dblclick):
- Redis通常被认为是一种持久化的存储器关键字-值型存储,可以用于几台机子之间的数据共享平台。连接数据库 注意:假设现有几台在同一局域网内的
- 如下所示:import osimport reimport stringfile = open("data2.txt")
- 有需要的人可以参考一下,如果试用过,发现问题,欢迎留言告知,不胜感激。功能介绍:1、若页面无刷新,且第一次传值小于第二次传值或者圆环初始化时
- 在本文中,我挑选了15个最有用的软件包,介绍它们的功能和特点1. DashDash 是比较新的软件包,它是用纯 Python 构建数据可视化
- 本文实例主要实现给出任意字符串,获取字符串中某字符的位置以及出现的总次数。实现该功能代码的时候可以使用函数enumerate来将字符串分离成
- (一)什么是跨域同源请求就是指协议名、主机名、端口号三者一样跨域请求:是指协议名、主机名、端口号三者有任何一个不一样,而且跨域请求是请求发出
- vendorvendor概念最早是由Keith提出,用来存放依赖包。在版本1.5出现。例如gb项目提供了一个名为gsftp的示例项目,它有一
- 目录openpyxl介绍openpyxl安装openpyxl基本概念openpyxl对excel进行操作新建excel打开已存在的文件读取单
- 前言之前在网上看到过很多关于mysql联合索引最左前缀匹配的文章,自以为就了解了其原理,最近面试时和面试官交流,发现遗漏了些东西,这里自己整
- 1. set bakupfolder=F:\backup\ 备份文件存放于目录F:\backup\ (此目录需要事先建好) 2. 默认每个数
- 在许多用SQL Server实现的新的企业系统设计中,系统设计师需要在给数据结构和管理应用程序逻辑的定位上做出具有关键性意义的决定。SQL
- 双屏不是什么新鲜事,不过相信国内前端工程师还是用单屏的多,前端开发需要同时开启的屏幕太多了…你有没有迷失windows任务栏下n个窗口和AL
- 基于 RSA 加密算法的接口鉴权方案假设接口调用者是客户端,接口提供方是服务端,则此方案存在以下规则:客户端需要使用 RSA 算法(1024
- function toBreakWord(intLen, id){ var obj=document.getElementById(id);
- 实例如下所示:from xml.etree.cElementTree import ElementTree,Elementimport xl
- Timedelta转换为Int或Float方式Pandas处理import pandas as pddataSet['t']
- 一、说明 numpy.ufunc是什么函数?答
- 本文实例讲述了python读取word文档的方法。分享给大家供大家参考。具体如下:首先下载安装win32comfrom win32com i
- 本文实例为大家分享了微信小程序上传视频,供大家参考,具体内容如下微信开发者工具需要安装ffmpeg环境才能正常使用下面的官方方法。1、调用官