别踩白块
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <style> #cont { margin-top:100px; width: 400px; height: 400px; border:1px solid blue; position: relative; } #main { width: 400px; height: 400px; position: relative; top:-100px; } .row { height: 100px; } .row div { width: 98px; height: 98px; border:1px solid gray; float: left; } .black { background: black; } </style> <body> <h1>别踩白块第7步:加速及加速时的bug处理</h1> <h2 id="sc">0</h2> <div id="cont"> <div id="main"></div> </div> </body> <script> var main = document.getElementById('main'); var clock = null; var state = true; var speed = 2; function getStyle(el , attr) { return el.currentStyle ? el.currentStyle[attr] : getComputedStyle(el,null)[attr]; } // 造div function cDiv(className) { var div = document.createElement('div'); if(className) { div.className = className; } return div; } // 造一行,即连造4个小div function cRow() { // 造一个0-3之间的随机数 var ind = Math.floor(Math.random()*4); // 造一个行div var row = cDiv('row'); for(var i=0; i<4; i++) { if(i == ind) { row.appendChild(cDiv('black')); } else { row.appendChild(cDiv()); } } // 把行row塞到main里 if(main.firstChild) { main.insertBefore(row , main.firstChild); }else { main.appendChild(row); } } function move() { var top = getStyle(main , 'top'); top = parseInt(top) + speed; main.style.top = top + 'px' if(top > 0){ cRow(); main.style.top = '-100px'; // 判断最后一行是否含有黑块 if(main.lastChild.pass == undefined) { fail(); } } if(main.children.length>=5) { main.removeChild(main.lastChild); } } function init() { for(var i=0; i<4; i++) { cRow(); } main.onclick = function(ev) { ev.target = ev.target || ev.srcElement; if(state == false) { alert('重开一局吧'); } else if(ev.target.className == '') { fail(); } else { ev.target.className = ''; ev.target.parentNode.pass = true; var score = document.getElementById('sc'); var sc = parseInt(score.innerHTML)+1; score.innerHTML = sc; if(sc%10==0) { speed +=2; } } } clock = window.setInterval('move();' , 40); } function fail() { clearInterval(clock); state = false; alert('输了'); } init(); </script> </html>