清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <title>王二狗的节奏大师</title> <style> html,body,ul,li,p,a,input,div{ font-family: "微软雅黑"; margin: 0; padding: 0; } body{ background: rgb(39,40,34); } li {list-style:none;} .container{ overflow: hidden; position: absolute; left: 0; top: 0; right: 0; bottom: 0; margin: auto; width: 300px; height: 532.5px; background: #000; background: url(http://www.8king.cn/myproject-multi/music/a01.jpg); background-size: 100% 100%; border: 2px solid #fff; z-index: -100; } #start{ width: 100%; height: 100%; line-height: 100px; text-align: center; cursor: pointer; position: absolute; left: 0; top: 0; right: 0; bottom: 0; border: 0; margin: auto; color: #fff; z-index: 1000; text-shadow: 0 0 5px #fff, 0 0 10px #fff, 0 0 15px #fff, 0 0 40px #ff00de, 0 0 70px #ff00de; background: url(http://www.8king.cn/myproject-multi/music/acd.jpg); background-size: 100% 100%; z-index: 1000000000000; } .head_name{ font-size: 56px; width: 100%; height: 100px; position: absolute; left: 0; top: 0; right: 0; bottom: 150px; margin: auto; z-index: 10000001; text-shadow: none; background: rgba(0,0,0,0.8); } .start_inner{ font-size: 36px; width: 100%; height: 100px; position: absolute; left: 0; top: 50px; right: 0; bottom: 0; margin: auto; z-index: 10000001; } .score{ font-size: 16px; position: absolute; right: 0; top: 0; border: 0; padding: 10px 15px; color: #fff; background: rgba(166,226,46,0.5); } .score:before{content:"得分:";} .time{ font-size: 16px; padding: 10px 15px; left: 0; top: 0; border: 0; color: #fff; background: rgba(249,38,76,0.5); position: absolute; } .time:before{content:"时间:";} .status{ width: 100%; text-align: center; font-size: 16px; position: absolute; right: 0; top: 150px; border: 0; color: #fff; font-size: 40px; text-shadow: 0 0 5px #fff, 0 0 10px #fff, 0 0 15px #fff, 0 0 40px #ff00de, 0 0 70px #ff00de; -webkit-animation: track 0.1s linear 1; -webkit-transition: track 0.1s linear; } @-webkit-keyframes track { 0%{ transform: scale(1,1); } 100%{ transform: scale(1.3,1.3); } } .keyContainer{ position: absolute; bottom: 0; width: 100%; height: 62px; z-index: 1000000000; } .keyContainer p{ margin: 5px; margin-bottom: 2px; width: 63px; height: 50px; font-size: 30px; line-height: 50px; text-align: center; float: left; color: #fff; border: 1px solid #fff; background: rgba(255,255,255,0.5); cursor: pointer; z-index: 1000000000; } .container ul{ width:75px; height:100%; float:left; position:relative; overflow:-hidden;} .container ul li { position:absolute; margin:5px; width:65px; height:50px; background: -webkit-linear-gradient( top,#ccc,#000); text-align:center; line-height:60px; color:#fff; border-radius:4px; z-index: -1; } .ruler01{ width: 100%; height: 5px; background:rgba(255,255,255,0.7); position: absolute; top: 460px; } .ruler02{ width: 100%; height: 10px; background:rgba(0,0,0,0.7); position: absolute; top: 465px; } .gamePause{ font-size: 16px; position: absolute; right: 0; top: 100px; border: 0; padding: 10px 15px; color: #fff; z-index: 2000000; } .gameRestart{ font-size: 16px; position: absolute; right: 0; top: 50px; border: 0; padding: 10px 15px; color: #fff; z-index: 10000; cursor: pointer; } /*媒体查询*/ @media screen and (max-width:420px){ .container{ overflow: hidden; position: absolute; left: 0; top: 0; right: 0; bottom: 0; margin: auto; width: 100%; height: 100%; background: #000; background: url(http://www.8king.cn/myproject-multi/music/a01.jpg); background-size: 100% 100%; z-index: -100; } #start{ cursor: pointer; width: 100%; height: 100%; background: #000; position: absolute; left: 0; top: 0; border: 0; color: #fff; z-index: 10000000; background: url(http://www.8king.cn/myproject-multi/music/acd.jpg); background-size: 100% 100%; } .head_name{ font-size: 56px; width: 100%; height: 100px; position: absolute; left: 0; top: 0; right: 0; bottom: 150px; margin: auto; z-index: 10000001; text-shadow: none; background: rgba(0,0,0,0.8); } .start_inner{ font-size: 36px; width: 340px; height: 100px; position: absolute; left: 0; top: 50px; right: 0; bottom: 0; margin: auto; z-index: 10000001; } .score{ font-size: 16px; position: absolute; right: 0; top: 0; border: 0; padding: 10px 15px; color: #fff; background: rgba(166,226,46,0.5); } .score:before{content:"得分:";} .status{ width: 100%; text-align: center; font-size: 16px; position: absolute; right: 0; top: 150px; border: 0; color: #fff; font-size: 40px; text-shadow: 0 0 5px #fff, 0 0 10px #fff, 0 0 15px #fff, 0 0 40px #ff00de, 0 0 70px #ff00de; -webkit-animation: track 0.1s linear 1; -webkit-transition: track 0.1s linear; } @-webkit-keyframes track { 0%{ transform: scale(1,1); } 100%{ transform: scale(1.3,1.3); } } .keyContainer{ position: absolute; bottom: 0; width: 100%; height: 85px; z-index: 1000; } .keyContainer p{ margin:0; margin-right: 3px; margin-bottom: 2px; width: 23.5%; height: 85px; font-size: 30px; line-height: 85px; text-align: center; float: left; color: #fff; border: 1px solid #fff; background: rgba(255,255,255,0.5); cursor: pointer; z-index: 2000; } .keyContainer p:last-child{ margin-bottom: 0; } .container ul{ width:23.5%; margin-right: 5px; height:100%; float:left; position:relative; overflow:-hidden; } .container ul:last-child{ margin-right: 0; } .container ul li { position:absolute; margin:5px; width:100%; height:50px; background: -webkit-linear-gradient( top,#ccc,#000); text-align:center; line-height:60px; color:#fff; border-radius:4px; z-index: -1; } .ruler01{ width: 100%; height: 5px; background:rgba(255,255,255,0.4); position: absolute; top: 460px; z-index: -2; } .ruler02{ width: 100%; height: 50px; background:rgba(0,0,0,0.4); position: absolute; top: 465px; } } </style> </head> <body> <!-- 系统音效 --> <audio id="music" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/bg.m4a" type="audio/ogg"> </audio> <audio id="musicWelcome" preload="auto" autoplay="autoplay" loop="loop"> <source src="http://www.8king.cn/myproject-multi/music/welcome.mp3" type="audio/ogg"> </audio> <audio id="musicWin" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/win.mp3" type="audio/ogg"> </audio> <audio id="musicPause" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/pause.wav" type="audio/ogg"> </audio> <!-- 键盘音效 --> <audio id="musicBtn01" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/1.wav" type="audio/ogg"> </audio> <audio id="musicBtn02" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/2.wav" type="audio/ogg"> </audio> <audio id="musicBtn03" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/3.wav" type="audio/ogg"> </audio> <audio id="musicBtn04" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/4.wav" type="audio/ogg"> </audio> <!-- 特种音效 --> <audio id="music4" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/4.mp3" type="audio/ogg"> </audio> <audio id="musictime" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/time.mp3" type="audio/ogg"> </audio> <audio id="unbelieve" preload="auto"> <source src="http://www.8king.cn/myproject-multi/music/unbelieve.mp3" type="audio/ogg"> </audio> <div class="container" id="container"> <div id="start"> <div class="head_name">节奏大师</div> <div class="start_inner">开始游戏</div> </div> <div class="status" id="status"></div> <div class="score" id="score">0</div> <div class="time" id="time">120</div> <!-- <div class="gamePause" id="gamePause">暂停</div> --> <div class="gameRestart" id="gameRestart">重新开始</div> <div class="ruler01"></div> <div class="ruler02"></div> <div class="keyContainer"> <p id="p01">Q</p> <p id="p02">W</p> <p id="p03">O</p> <p id="p04">P</p> </div> </div> </body> <script> window.onload=function () { var p01 = document.getElementById('p01'); var p02 = document.getElementById('p02'); var p03 = document.getElementById('p03'); var p04 = document.getElementById('p04'); var container = document.getElementById('container'); var start = document.getElementById('start'); // var gamePause = document.getElementById('gamePause'); var gameRestart = document.getElementById('gameRestart'); var ul = container.getElementsByTagName('ul'); var p = container.getElementsByTagName('p'); var li = container.getElementsByTagName('li'); var score = document.getElementById('score'); var status = document.getElementById('status'); var timeSet = document.getElementById('time'); var music = document.getElementById('music'); var musicWelcome = document.getElementById('musicWelcome'); var musicWin = document.getElementById('musicWin'); var musicPause = document.getElementById('musicPause'); var musicBtn01 = document.getElementById('musicBtn01'); var musicBtn02 = document.getElementById('musicBtn02'); var musicBtn03 = document.getElementById('musicBtn03'); var musicBtn04 = document.getElementById('musicBtn04'); musicBtn01.volume = 0.1; musicBtn02.volume = 0.1; musicBtn03.volume = 0.1; musicBtn04.volume = 0.1; var music4 = document.getElementById('music4'); var musictime = document.getElementById('musictime'); var unbelieve = document.getElementById('unbelieve'); var scoreChange = 0; var speed = 7; var timer = null; var timer02 = null; var flag = 0; // 生成4个UL for (var i=0; i<4; i++){ var ulChange=document.createElement('ul'); container.appendChild(ulChange); } start.onclick=play; // 开始游戏 function play(){ music.play(); musicWelcome.pause(); window.setInterval(timeCheck, 1000); start.style.display="none"; status.innerHTML=""; function generate() { var num=numRandom(0, 4); var liChange=document.createElement('li'); liChange.style.background="-webkit-linear-gradient( top,transparent," + colorRandom() + ")"; ul[num].appendChild(liChange); move(liChange, function () { if (li.length>=20) { gotoEnd(); alert('德玛西亚!, 得分'+scoreChange); } }); // timer02=setInterval(cut, 3000); } generate(); timer=setInterval(generate, 500); } // 暂停游戏 function pasue (){ music.pause(); musicPause.play(); clearInterval(timer); for (var i=0; i<li.length; i++) { clearTimeout(li[i].timeout); } status.innerHTML="暂停" + '<br />' + "得分:" + scoreChange; for (i=0; i<ul.length; i++) { ul[i].innerHTML=''; } } // 结束游戏 function gotoEnd (){ music.pause(); musicWin.play(); clearInterval(timer); for (var i=0; i<li.length; i++) { clearTimeout(li[i].timeout); } for (i=0; i<ul.length; i++) { ul[i].innerHTML=''; } scoreChange=0; speed=7; } // 生成随机颜色 function colorRandom(){ return "#"+("00000"+((Math.random()*16777215+0.5)>>0).toString(16)).slice(-6); } // 生成随机数字 function numRandom(m, n){ return parseInt(Math.random()*(n-m)+m); } // 倒数计时 function timeCheck(){ if(timeSet.innerHTML == 0){ timeSet.innerHTML="时间到了"; if(scoreChange<100){ musictime.play(); status.innerHTML="青铜小学生!" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } if(scoreChange>100){ musictime.play(); status.innerHTML="你是猪吗?" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } if(scoreChange>200){ musictime.play(); status.innerHTML="666!" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } if(scoreChange>500){ music4.play(); status.innerHTML="超凡大师!" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } if(scoreChange>1000){ music4.play(); status.innerHTML="最强王者!" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } gotoEnd (); return false; } timeSet.innerHTML = timeSet.innerHTML * 1 - 1; } // 游戏速度加快/提示音 function testScoreChange(){ switch(scoreChange) { case 100: unbelieve.play(); speed = 8; break; case 150: unbelieve.play(); break; case 200: unbelieve.play(); speed = 10; break; case 250: unbelieve.play(); break; case 300: unbelieve.play(); break; case 350: unbelieve.play(); break; case 400: unbelieve.play(); break; case 500: unbelieve.play(); speed = 12; break; case 1000: unbelieve.play(); speed = 16; break; } } // 核心判断函数 function lazy(n){ if (!ul[n].children.length) { if(scoreChange<100){ status.innerHTML="青铜小学生!" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } if(scoreChange>100){ status.innerHTML="你是猪吗?" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } if(scoreChange>200){ status.innerHTML="666!" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } if(scoreChange>500){ music4.play(); status.innerHTML="超凡大师!" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } if(scoreChange>1000){ music4.play(); status.innerHTML="最强王者!" + '<br />' + " 得分: " + scoreChange + '<br />' + "按F重新开始"; } gotoEnd(); return; } var height = coll(ul[n].children[0], p[n]); console.log(typeof(height)); console.log(height); if (height){ // ul[n].children[0].style.background="#000"; ul[n].removeChild(ul[n].children[0]); // p[n].style.background="rgba(255,255,255,1.0)"; score.innerHTML=scoreChange; return; }else{ status.innerHTML="MISS"; ul[n].removeChild(ul[n].children[0]); return; } } function reload(){ document.location.reload(); } // 点击事件 // gamePause.onclick=pasue; gameRestart.onclick=reload; p01.onclick = function(){ testScoreChange() lazy(0); } p02.onclick = function(){ testScoreChange() lazy(1); } p03.onclick = function(){ testScoreChange() lazy(2); } p04.onclick = function(){ testScoreChange() lazy(3); } // 键盘事件 document.onkeydown=function (ev){ var ev=ev||event; // 当分数超过一定数目加速 testScoreChange(); // 判断键盘位置 switch(ev.keyCode) { case 81: musicBtn01.play(); lazy(0); break; case 87: musicBtn02.play(); lazy(1); break; case 79: musicBtn03.play(); lazy(2); break; case 80: musicBtn04.play(); lazy(3); break; case 13: if(flag == 0){ play(); //设置为1的状态,停止改变 flag =1; }else{ pasue(); flag=0; } break; case 70: reload(); break; } }; // 方块向下移动 function move (obj){ clearInterval(obj.timer); obj.timer=setInterval(function () { obj.style.top=obj.offsetTop+speed+'px'; // fnDuring && fnDuring.call(obj); }, 30); } // 获得位置 function getPos (obj){ var left=0; var top=0; while(obj) { left+=obj.offsetLeft; top+=obj.offsetTop; obj=obj.offsetParent } return {'left': left, 'top': top}; } // 判断是否得分 function coll (obj1, obj2){ var l1=getPos(obj1).left; var r1=getPos(obj1).left+obj1.offsetWidth; var t1=getPos(obj1).top; var b1=getPos(obj1).top+obj1.offsetHeight; // console.log("方块距离上部的高度:" + t1); var l2=getPos(obj2).left; var r2=getPos(obj2).left+obj2.offsetWidth; var t2=getPos(obj2).top; var b2=getPos(obj2).top+obj2.offsetHeight; if (l1>r2 || r1<l2){ // status.innerHTML="WRONG!"; return false; } console.log("距离左侧距离:" + l1); console.log("离上部的高度:" + b1); if(b1>460 && b1<560){ status.innerHTML="Good!"; if(b1>=485 && b1<=528){ status.innerHTML="Perfect!"; // unbelieve.play(); scoreChange+=10; return true; } scoreChange+=5; return true; } } }; </script> </html> <!-- 出现wrong 的问题 --> <!-- 暂停的问题 --> <!-- 停止的问题 --> <!-- status动画的问题 --> <!-- 滑块自动掉落status文字显示的问题 --> <!-- 积分录入数据库 --> <!-- 游戏等级 --> <!-- 背景音乐 --> <!-- 连击特效 --> <!-- 计时器/暂停计时器暂停 --> <!-- 四个按键的点击事件/点击特效 --> <!-- 暂停界面/死亡界面重新开始按钮 --> <!-- 开始界面/开始动效 --><!-- 按开始的声音 -->