js實(shí)現(xiàn)帶積分彈球小游戲
本文實(shí)例為大家分享了js實(shí)現(xiàn)帶積分的彈球小游戲的具體代碼,供大家參考,具體內(nèi)容如下
注:如果小球與底部方塊的角碰撞,積分可能有些許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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序 動(dòng)態(tài)綁定數(shù)據(jù)及動(dòng)態(tài)事件處理
這篇文章主要介紹了微信小程序 動(dòng)態(tài)綁定數(shù)據(jù)及動(dòng)態(tài)事件處理的相關(guān)資料,需要的朋友可以參考下2017-03-03
20170918 前端開(kāi)發(fā)周報(bào)之JS前端開(kāi)發(fā)必看
本文給大家分享了最新版js 前端開(kāi)發(fā)周報(bào),內(nèi)容非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09
BootStrap 智能表單實(shí)戰(zhàn)系列(五) 表單依賴插件處理
這篇文章主要介紹了BootStrap 智能表單實(shí)戰(zhàn)系列(五) 表單依賴插件處理 的相關(guān)資料,比較簡(jiǎn)單,主要介紹生產(chǎn)表單元素后的一些后續(xù)處理操作,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-06-06
js利用遞歸與promise 按順序請(qǐng)求數(shù)據(jù)的方法
這篇文章主要介紹了js利用遞歸與promise 按順序請(qǐng)求數(shù)據(jù),需要的朋友可以參考下2019-08-08
JavaScript talbe表中指定位置插入一行的實(shí)現(xiàn)代碼 腳本之家修正版
用js實(shí)現(xiàn)的在table中指定的位置插入一行,先點(diǎn)一下表中你想插入的位置,點(diǎn)擊即可。2009-06-06
微信小程序如何同時(shí)獲取用戶信息和用戶手機(jī)號(hào)
小程序登錄是現(xiàn)在小程序里面很普遍的一個(gè)功能,因?yàn)楣俜教峁┑姆椒?可以一鍵獲取到用戶信息,一鍵拿到手機(jī)號(hào),這篇文章主要給大家介紹了關(guān)于微信小程序如何同時(shí)獲取用戶信息和用戶手機(jī)號(hào)的相關(guān)資料,需要的朋友可以參考下2021-08-08
bootstrap常用組件之頭部導(dǎo)航實(shí)現(xiàn)代碼
這篇文章主要介紹了bootstrap常用組件之頭部導(dǎo)航實(shí)現(xiàn)代碼,然后對(duì)個(gè)別常用屬性進(jìn)行了解釋,需要的的朋友參考下吧2017-04-04

