您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“怎么用jQuery實(shí)現(xiàn)彈彈球小游戲”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
本文實(shí)例為大家分享了jQuery實(shí)現(xiàn)彈彈球小游戲的具體代碼,供大家參考,具體內(nèi)容如下
效果展示:
CSS樣式:
#box { width: 600px; height: 650px; border: 5px solid rgb(245, 164, 96); position: relative; left: 500px; top: 50px; background: -webkit-gradient(linear, 0 0, 0 bottom, from(#ffffff),to(rgba(0, 0, 255, 0.5))); } /*小球的設(shè)置*/ #ball { width: 20px; height: 20px; border-radius: 10px; background-color: white; position: absolute; top: 560px; box-shadow: 0px 0px 3px 3px aqua; } /*開(kāi)始游戲按鈕設(shè)置*/ #btn { width: 150px; height: 90px; position: fixed; left: 730px; top: 400px; border-radius: 10px; box-shadow: #BBBBBB; font-size: 24px; cursor: pointer; } /*滑塊的設(shè)置*/ #slider { width: 120px; height: 20px; background-color: lightpink; position: absolute; top: 585px; border-radius: 10px; box-shadow: 0px 0px 2px 2px white; cursor: pointer; } /*每個(gè)方塊的邊框*/ #brick div { width: 98px; height: 20px; float: left; border: 1px solid black; } /*游戲規(guī)則邊框*/ #tip { width: 280px; position: fixed; top: 200px; left: 100px; border: 1px solid black; text-indent: 2em; padding: 10px; border-radius: 20px; } /*難度得分邊框*/ #grade { width: 180px; position: fixed; top: 100px; left: 1150px; border: 1px solid black; text-indent: 2em; padding: 10px; border-radius: 20px; } /*h4字體設(shè)置*/ #grade h4 { font-weight: 500; } #phb{ width: 180px; position: fixed; top: 50px; left: 1150px; border: 1px solid black; text-indent: 2em; padding: 10px; border-radius: 10px; }
js代碼:
js完整代碼:
<script type="text/javascript"> var box = document.getElementById("box"); var ball = document.getElementById("ball"); var btn = document.getElementById("btn"); var slider = document.getElementById("slider"); var obrick = document.getElementById("brick"); var brickArr = obrick.getElementsByTagName("div"); var grade = document.getElementById("grade"); var rank = grade.children[1] var score = grade.children[3] var sco = 0; //分?jǐn)?shù) var timer; //小球運(yùn)行 var isRunning = false; var speedX = rand(3, 12); var speedY = -rand(3, 12); var num = speedX - speedY; //隨機(jī)選擇難度 var num = Math.ceil((Math.random() * 9)); console.log("num為:" + num); switch (num) { case 1: case 2: case 3: rank.innerHTML = "簡(jiǎn)單"; break; case 4: case 5: case 6: rank.innerHTML = "中等"; slider.style.width = 80 + "px"; break; case 7: case 8: case 9: rank.innerHTML = "困難"; slider.style.width = 60 + "px"; break; } //隨機(jī)生成小球與滑塊的初始位置 var beginGo = rand(100, 500); ball.style.left = beginGo + 40 + "px"; slider.style.left = beginGo + "px"; //開(kāi)始按鈕點(diǎn)擊事件 btn.onclick = function() { btn.style.display = "none"; //隱藏按鈕 isRunning = true; clearInterval(timer); timer = setInterval(function() { //獲取小球初始位置 var ballLeft = ball.offsetLeft; var ballTop = ball.offsetTop; //獲取小球運(yùn)動(dòng)之后位置 var nextleft = ballLeft + speedX; var nexttop = ballTop + speedY; //水平邊界判斷,當(dāng)小球的left值小于容器左邊界或者大于容器右邊界時(shí),將水平方向速度取反 if (nextleft <= 0 || nextleft >= box.offsetWidth - ball.offsetWidth - 10) { speedX = -speedX; } //垂直邊界判斷,當(dāng)小球的top值小于容器上邊界時(shí),將垂直方向速度取反 if (nexttop <= 0) { speedY = -speedY; } //當(dāng)小球觸碰到下邊界時(shí),提示“游戲失敗”,重新刷新頁(yè)面 if (nexttop > box.offsetHeight - ball.offsetHeight) { location.reload(); alert("Game Over!"); } //將運(yùn)動(dòng)后的位置重新賦值給小球 ball.style.left = nextleft + "px"; ball.style.top = nexttop + "px"; //小球與滑塊的碰撞 if (knock(ball, slider)) { speedY = -speedY; } //小球與方塊的碰撞 for (var j = 0; j < brickArr.length; j++) { if (knock(brickArr[j], ball)) { speedY = -speedY obrick.removeChild(brickArr[j]); sco++; score.innerHTML = sco; break; } } //當(dāng)容器中方塊數(shù)量為0時(shí),宣布“游戲勝利”,刷新頁(yè)面 if (brickArr.length <= 0) { location.reload(); alert("You win!"); } }, 20) } //鼠標(biāo)控制滑塊 slider.onmousedown = function(e) { var e = e || window.event; //獲取滑塊初始位置 var offsetX = e.clientX - slider.offsetLeft; if (isRunning) { document.onmousemove = function(e) { var e = e || window.event; var l = e.clientX - offsetX; if (l <= 0) { l = 0; } if (l >= box.offsetWidth - slider.offsetWidth - 10) { l = box.offsetWidth - slider.offsetWidth - 10; } slider.style.left = l + "px"; } } } document.onmouseup = function() { document.onmousemove = null; //鼠標(biāo)移動(dòng)時(shí) } //按鍵控制滑塊 document.onkeydown = function(e) { var e = e || window.event; var code = e.keyCode || e.which; var offsetX = slider.offsetLeft; if (isRunning) { switch (code) { case 37: //左 if (offsetX <= 0) { slider.style.left = 0 break; } slider.style.left = offsetX * 4 / 5 + "px"; break; case 39: //右 if (offsetX >= box.offsetWidth - slider.offsetWidth - 10) { slider.style.left = box.offsetWidth - slider.offsetWidth; break; } slider.style.left = (box.offsetWidth - slider.offsetWidth - offsetX) / 5 + offsetX + "px"; break; } } } //一共有66塊方塊 createBrick(66); //容器內(nèi)創(chuàng)建方塊 function createBrick(n) { var oBrick = document.getElementById("brick"); //在大盒子brick中插入n個(gè)div方塊,并給予隨機(jī)顏色 for (var i = 0; i < n; i++) { var node = document.createElement("div"); node.style.backgroundColor = color(); oBrick.appendChild(node); } //獲取所有的方塊 var brickArr = obrick.getElementsByTagName("div") //根據(jù)每個(gè)方塊當(dāng)前所在位置,將left與top值賦給方塊 for (var i = 0; i < brickArr.length; i++) { brickArr[i].style.left = brickArr[i].offsetLeft + "px"; brickArr[i].style.top = brickArr[i].offsetTop + "px"; } //將所有方塊設(shè)置成絕對(duì)定位,注意這一步與上一步順序不能調(diào)換 for (var i = 0; i < brickArr.length; i++) { brickArr[i].style.position = "absolute"; } } //隨機(jī)生成顏色 function color() { var result = "#"; for (var i = 0; i < 6; i++) { result += rand(0, 15).toString(16) } return result; } //隨機(jī)數(shù)生成 function rand(n, m) { return n + parseInt(Math.random() * (m - n + 1)); } //碰撞檢測(cè)函數(shù) function knock(node1, node2) { var l1 = node1.offsetLeft; var r1 = node1.offsetLeft + node1.offsetWidth; var t1 = node1.offsetTop; var b1 = node1.offsetTop + node1.offsetHeight; var l2 = node2.offsetLeft; var r2 = node2.offsetLeft + node2.offsetWidth; var t2 = node2.offsetTop; var b2 = node2.offsetTop + node2.offsetHeight; if (l2 > r1 || r2 < l1 || t2 > b1 || b2 < t1) { return false; } else { return true; } } </script>
“怎么用jQuery實(shí)現(xiàn)彈彈球小游戲”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。