日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

js實現(xiàn)跳一跳小游戲

瀏覽:241日期:2024-04-27 11:54:43

本文實例為大家分享了js實現(xiàn)跳一跳小游戲的具體代碼,供大家參考,具體內容如下

效果

js實現(xiàn)跳一跳小游戲

流程分析

1、鼠標按下開始蓄力2、鼠標松開,根據鼠標按下的時間讓小球運動相應的距離3、判斷小球落點是否在平臺內4、如果在平臺范圍內,產生下一個平臺,分數(shù)加10.如果不在游戲結束,判斷分數(shù)是否大于歷史最高分,更新歷史最高分。

動畫效果

5、鼠標按下小球所在平臺要有蓄力效果,鼠標松開后慢慢恢復,6、小球在空中的運動曲線要平滑7、小球和平臺要有3D效果

注意事項

8、運動涉及到計算器和延時器,要注意清除定時器以免擾亂動畫效果9、鼠標按下和松開為一個完整的流程,在小球運動完之前不能重復觸發(fā)10、確保小球運動的時間與鼠標按下的時間相關聯(lián)

布局

<div class='wrap'> <h3 class='tit'>鼠標按下蓄力,松開鼠標小球開始運動</h3> <h1>分數(shù):</h1> <h2>歷史最高:</h2> <div class='con'></div> <div class='blc1'></div></div>

樣式

* { margin: 0; padding: 0; } .wrap { height: 500px; position: relative; overflow: hidden; } .con { background-color: hotpink; /*左邊的沒有背景色,右邊的加了背景色*/ background-image: radial-gradient(10px at 4px 4px, rgba(0, 0, 0, 0), rgba(2, 2, 2, 1)); width: 20px; height: 20px; border-radius: 50%; position: absolute; left: 30px; bottom: 30px; z-index: 2; } .blc1 { box-shadow: 10px 10px 7px #000; border-radius: 30%; width: 40px; height: 40px; background-color: midnightblue; position: absolute; left: 20px; bottom: 20px; } .tit { text-align: center; }

js

function randomInt(min, max) { //產生[min,max]范圍內的整數(shù) return Math.round(Math.random() * (max - min)) + min; } function randomColor() { //產生隨機的顏色 var map = [1, 2, 3, 4, 5, 6, 7, 8, 9, ’a’, ’b’, ’c’, ’d’, ’e’, ’f’]; var str = ’#’; for (var i = 0; i < 6; i++) { var index = randomInt(0, 15); str += map[index]; } return str; } var wrap = document.querySelector(’.wrap’); var con = document.querySelector(’.con’); var oldtime = 0; //記錄鼠標按下的時間 var timer2 = null; //小球平拋運動定時器 var timer3 = null; //鼠標按下變形定時器 var num = 0; //游戲成績 var mouseD = false; //記錄鼠標是否按下 var mouseUp = true; //記錄鼠標是否松開 var h1 = document.querySelector(’h1’); var h2 = document.querySelector(’h2’); var max = localStorage.getItem(’max’); var div = document.createElement(’div’); //創(chuàng)建下一個平臺 h2.innerText = ’歷史最高:’ + localStorage.getItem(’max’); //從瀏覽器數(shù)據庫獲取最高分 div.style.left = 35 + randomInt(30, 60) + ’px’; //初始化平臺距離左邊的值 var div_sex = randomInt(30, 70); //初始化平臺大小,范圍 div.style.bottom = 40 - div_sex / 2 + ’px’; //平臺距離底部為小球底部減去平臺 div.style.height = div_sex + ’px’; div.style.width = div_sex + ’px’; div.className = ’blc1’; //添加初始化樣式 div.style.backgroundColor = randomColor(); //隨機顏色 wrap.appendChild(div); //存入平臺 document.onmousedown = function () { //監(jiān)聽頁面點擊事件 if (!mouseD) { //如果鼠標按下沒有抬起 var blc = document.querySelectorAll(’.blc1’); //獲取所有平臺 oldtime = Date.now(); //記錄鼠標按下的時間 var target = blc[blc.length - 2]; //小球所在的平臺 var down_c = 10; //平臺最大下沉距離 var left = target.offsetLeft; //記錄鼠標按下后下沉效果之前平臺的left值 var bottom = 40 - target.offsetHeight / 2; //記錄鼠標按下后下沉效果之前平臺的bottom值 var con_l = con.offsetLeft; //記錄鼠標按下后下沉效果之前小球的left值 var con_b = 30; //記錄鼠標按下后下沉效果之前小球的bottom值 timer3 = setInterval(() => { //下沉效果定時器 down_c -= 0.03; //每一次變化0.03px if (down_c <= 0) { //最小值為0 down_c = 0.03; } target.style.boxShadow = down_c + ’px ’ + down_c + ’px ’ + down_c + ’px #000’; //邊框陰影向里縮,實現(xiàn)3D效果 target.style.left = left + 10 - down_c + ’px’; target.style.bottom = bottom + -10 + down_c + ’px’; con.style.left = con_l + 10 - down_c + ’px’; con.style.bottom = con_b - 10 + down_c + ’px’; //小球和平臺一起向右下角移動,配合陰影達到3D效果 }, 1); mouseD = true; //鼠標已經按下 mouseUp = false; //鼠標即將松開 } } document.onmouseup = function () { if (!mouseUp) { //如果沒有觸發(fā)mousedown事件不會執(zhí)行以下代碼 mouseUp = true; //鎖定事件,小球運動結束前不能執(zhí)行以下代碼 clearInterval(timer3); //清除下沉動畫 var timer4 = null; //上升動畫 var blc = document.querySelectorAll(’.blc1’); //獲取所有平臺 var target = blc[blc.length - 2]; //同下沉動畫 var left = target.offsetLeft; var down_time = 0; var down_c = 0; var click_time = Date.now() - oldtime; //鼠標按下的時間 var bottom = 40 - target.offsetHeight / 2 - (click_time * 0.03 > 10 ? 10 : click_time * 0.03); //原來的bottom-下沉的距離,最大為10 timer4 = setInterval(() => { //恢復原來的狀態(tài) down_time++; if (down_time > click_time) { clearInterval(timer4); } down_c += 0.03; if (down_c >= 10) { down_c = 10; } target.style.boxShadow = down_c + ’px ’ + down_c + ’px ’ + down_c + ’px #000’; target.style.left = left - down_c + ’px’; target.style.bottom = bottom + down_c + ’px’; }, 1); var clicktime = (Date.now() - oldtime) * 1.5; //小球運動時間為鼠標按下的1.5倍,減少蓄力時間 var time2 = 0; //小球跳一跳計時器 var y = 30; //小球初始bottom值 var x = con.offsetLeft; //小球初始left值 clearTimeout(tout); //清除延時器 timer2 = setInterval(() => { //小球彈跳計時器 time2 += 20; y = 30 + clicktime / 50 * Math.sin(time2 * Math.PI / clicktime); //將總的時間分成180份通過sin(0,180)從0到0的特性完成一個圓滑的拋物線 con.style.left = x + time2 / 20 + ’px’; con.style.bottom = y + ’px’; }, 20); var tout = setTimeout(function () { //控制小球運動的時間與鼠標按下的時間*1.5相等,控制小球運動的時間 clearInterval(timer2); //結束小球運動 x = con.offsetLeft; //獲取運動結束后小球的left值 var blc = document.querySelectorAll(’.blc1’); //獲取所有的平臺 if (con.offsetLeft >= wrap.lastElementChild.offsetLeft && con.offsetLeft <= wrap .lastElementChild.offsetLeft + wrap.lastElementChild.offsetHeight - 10 ) { //判斷小球是否位于平臺里面 num += 10; //每跳一次加10分 h1.innerText = ’分數(shù):’ + num; //動態(tài)展示分數(shù) //生成下一個平臺 var div_sex2 = randomInt(40, 60); var newdiv = document.createElement(’div’); newdiv.style.bottom = 40 - div_sex2 / 2 + ’px’; newdiv.style.height = div_sex2 + ’px’; newdiv.style.width = div_sex2 + ’px’; newdiv.style.left = x + randomInt(80, 120) + ’px’; newdiv.style.backgroundColor = randomColor(); newdiv.className = ’blc1’; wrap.appendChild(newdiv); } else { alert(’游戲結束,分數(shù):’ + num); max = max > num ? max : num; localStorage.setItem(’max’, max) //更新最高分 location.reload(); //刷新當前頁面 } wrap.scrollLeft = wrap.scrollWidth; //控制滾動條位于最右邊 mouseD = false; //完成一次事件,重新開啟 mouseUp = true; // }, clicktime) } }

更多有趣的經典小游戲實現(xiàn)專題,分享給大家:

C++經典小游戲匯總

python經典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經典游戲 玩不停

java經典小游戲匯總

javascript經典小游戲匯總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费日韩一区二区| 久久久久午夜电影| 国产一区不卡| 国产一区二区三区天码| 国产一区二区精品久| 日产精品一区二区| 日韩在线不卡| 国产综合精品一区| 精品中文一区| 国产农村妇女精品一二区| 香蕉精品视频在线观看| 国产一级一区二区| 一区二区国产精品| 亚洲精品免费观看| 国产精品一区高清| 日韩国产激情| 国产精品普通话对白| 精品三级av在线导航| 亚洲v天堂v手机在线| 日本午夜精品视频在线观看| 日韩精品成人| 国产精品自在| 日韩国产激情| 国产精品婷婷| 日本欧美大码aⅴ在线播放| 蜜桃av一区二区在线观看| 欧美日韩国产精品一区二区亚洲| 欧美精品一二| 99pao成人国产永久免费视频| 美女91精品| 久久成人福利| 国产99精品| 一区二区三区国产盗摄| 国产精品欧美在线观看| а√天堂8资源在线| 合欧美一区二区三区| 国产亚洲欧美日韩精品一区二区三区 | 亚洲精品九九| 精品视频国产| 国产精品日韩欧美一区| 国产精品一区二区美女视频免费看| 国产一区精品福利| 亚洲欧美日韩在线观看a三区| 久久国产人妖系列| | 国产日韩一区二区三免费高清| 国产精品麻豆久久| 亚洲影院天堂中文av色| 国产一区日韩| 中文字幕免费一区二区| 中文字幕在线高清| 亚洲精品福利| 久久九九精品| 日韩av资源网| 99久久久久久中文字幕一区| 日本不卡视频一二三区| 精品欧美一区二区三区在线观看| 亚洲精品系列| 亚洲视频综合| 精品久久精品| 日本不卡一二三区黄网| 久久狠狠婷婷| 久久99精品久久久久久园产越南| 亚洲高清毛片| 麻豆精品在线视频| 在线国产精品一区| 色婷婷精品视频| 国产图片一区| 久久成人一区| 特黄毛片在线观看| 欧美一级网址| 亚洲国产日韩欧美在线| 国产精品久久久久9999高清| 99国产精品久久久久久久成人热| 精品免费在线| 日日夜夜免费精品视频| 99久久亚洲精品蜜臀| 精品国内亚洲2022精品成人| 视频在线观看一区| 日韩精品免费一区二区三区| 国产精品久久久免费| 亚洲人成精品久久久| 免费成人网www| 国产传媒在线| 国产视频一区二| 三级在线观看一区二区 | 99在线精品视频在线观看| 日产午夜精品一线二线三线| 日本午夜精品久久久久| 每日更新成人在线视频| 九九综合九九| 日本精品影院| 日韩在线观看一区| 色一区二区三区四区| 欧美激情综合| 国产精品第一| 国产女人18毛片水真多18精品| 西西人体一区二区| 欧美在线网站| 亚洲国产一区二区三区在线播放 | 精品国产一区二区三区av片| 日韩高清电影免费| 亚洲精品在线a| 免费久久精品视频| 久久av一区二区三区| 午夜精品影院| 91精品二区| 亚洲二区在线| 一区二区三区四区在线看| 欧美三区四区| av一区在线| 韩国久久久久久| 视频在线不卡免费观看| 精品91福利视频| 国产精品99视频| 国产不卡精品| 日韩精品2区| 亲子伦视频一区二区三区| 久久九九电影| 五月婷婷亚洲| 国产精品老牛| 亚洲精一区二区三区| 日韩精品一区二区三区免费视频| 日韩欧美美女在线观看| 日韩av在线免费观看不卡| 欧美天堂一区| 国产精品传媒麻豆hd| 国产精品激情电影| 精品国产亚洲一区二区三区| 国产成人精品福利| 伊人久久高清| 欧美粗暴jizz性欧美20| 亚洲一级二级| 久久国产精品久久w女人spa| 蜜臀91精品一区二区三区| 免费成人性网站| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 日韩精品免费一区二区夜夜嗨| 亚洲精品系列| 国产精品一区二区免费福利视频| 欧美黑人做爰爽爽爽| 麻豆一区二区在线| 麻豆视频一区| 日韩国产欧美| 99国产精品视频免费观看一公开| 一区二区高清| 国产精品欧美日韩一区| 色一区二区三区四区| 亚洲特色特黄| 在线视频亚洲欧美中文| 日韩不卡一区二区三区| 久久麻豆视频| 久久精品国语| 亚洲伊人精品酒店| 国产精品.xx视频.xxtv| 欧美日韩视频网站| 国产一区91| 国产探花一区| www.com.cn成人| 麻豆精品91| 国产精品超碰| 成人精品亚洲| 视频一区日韩精品| 国产一区二区三区不卡视频网站 | 国产亚洲欧美日韩在线观看一区二区| 国产一区二区视频在线看| 国产一区日韩一区| 日本国产欧美| 麻豆视频在线看| 免费高清在线一区| 成人在线黄色| 亚洲成人三区| 欧美在线看片| 久久激情网站| 国产欧美亚洲一区| 国产91精品对白在线播放| 青青在线精品| 九一国产精品| 国产精品久久久免费| 免费精品国产| 你懂的国产精品永久在线| 五月综合激情| 久久久精品国产**网站| 六月丁香综合| 日产精品一区二区| 亚洲精品一级| 日韩一区二区三区免费| 欧美亚洲一级| 99香蕉国产精品偷在线观看| 免费精品一区| 麻豆亚洲精品| 日韩中文首页| 欧美日韩亚洲一区在线观看| 国产精品99一区二区| 国产精品久av福利在线观看| 9色国产精品| 天堂av在线| 国产精品观看| 中文无码久久精品| 99久久夜色精品国产亚洲狼 |