天天看點

html網頁遊戲别踩白塊,原生JS實作《别踩白塊》遊戲(相容IE)

相容了IE,每得20分就加速一次!!!

效果如下:

html網頁遊戲别踩白塊,原生JS實作《别踩白塊》遊戲(相容IE)

圖(1) 遊戲初始

html網頁遊戲别踩白塊,原生JS實作《别踩白塊》遊戲(相容IE)

圖(2) 遊戲開始

代碼如下:

*{ margin: 0; padding: 0; }

.box {

margin: 50px auto 0 auto;

width: 400px;

height: auto;

border: solid 1px #222;

}

#cont {

width: 400px;

height: 600px;

position: relative;

overflow: hidden;

}

#go {

width: 100%;

height: 600px;

position: absolute;

top: 0;

font: 700 60px '微軟雅黑';

text-align: center;

z-index: 99;

}

#go span {

cursor: pointer;

background-color: #fff;

border-bottom: solid 1px #222;

}

#main {

width: 400px;

height: 600px;

position: relative;

top: -150px;

}

.row {

width: 400px;

height: 150px;

}

.row div {

width: 99px;

height: 149px;

border: solid 1px #222;

float: left;

border-top-width: 0;

border-left-width: 0;

cursor: pointer;

}

#count {

border-top: solid 1px #222;

width: 400px;

height: 50px;

font: 700 36px/50px '微軟雅黑';

text-align: center;

}

Game start

//得目前樣式

function getStyle(obj,arrt){

//相容IE

return obj.currentStyle ? obj.currentStyle[arrt] : getComputedStyle(obj,null)[arrt];

}

var main = document.getElementById('main');

var go = document.getElementById('go');

var count = document.getElementById('count');

var cols = ['#1AAB8A','#E15650','#121B39','#80A84E'];

//動态建立div

function cDiv(classname){

//建立div

var oDiv = document.createElement('div');

//随機值

var index = Math.floor(Math.random()*4);

//行 添加相應的class類

oDiv.className = classname;

//建立行之後再動态建立4個小div并添加到行裡面

for(var j =0;j<4;j++){

var iDiv = document.createElement('div');

oDiv.appendChild(iDiv);

}

//然後把行添加到main裡面

//判斷需要添加的位置

if(main.children.length == 0){

main.appendChild(oDiv);

}else {

main.insertBefore(oDiv, main.children[0]);

}

//随機給行裡面的某一個div添加背景色

oDiv.children[index].style.backgroundColor = cols[index];

//标記顔色盒子

oDiv.children[index].className = "i";

}

//移動div

function move(obj){

//關閉上一個定時器

clearInterval(obj.timer);

//預設速度與計分

var speed = 5,num = 0;

//定時器管理與開啟定時器

obj.timer = setInterval(function(){

//速度

var step = parseInt(getStyle(obj,'top')) + speed;

//移動盒子

obj.style.top = step + 'px';

//判斷并建立新的盒子

if(parseInt(getStyle(obj,'top')) >= 0){

cDiv('row');

obj.style.top = -150 + 'px';

}

//删除邊界外的盒子

if(obj.children.length == 6){

//删除前,如果有盒子沒有點選則結束遊戲

for(var i = 0;i<4;i++){

if(obj.children[obj.children.length - 1].children[i].className == 'i'){

//遊戲結束

obj.style.top = '-150px';

count.innerHTML = '遊戲結束,最高得分: ' + num;

//關閉定時器

clearInterval(obj.timer);

//顯示開始遊戲

go.children[0].innerHTML = 'Renew game';

go.style.display = "block";

}

}

obj.removeChild(obj.children[obj.children.length - 1]);

}

//點選與計分

obj.onclick = function(event){

//點選的不是白盒子

// 相容IE

event = event || window.event;

if((event.target? event.target : event.srcElement).className == 'i'){

//點選後的盒子顔色

(event.target? event.target : event.srcElement).style.backgroundColor = "#bbb";

//清除盒子标記

(event.target? event.target : event.srcElement).className = '';

//計分

num++;

//顯示得分

count.innerHTML = '目前得分: ' + num;

}else {

//遊戲結束

obj.style.top = 0;

count.innerHTML = '遊戲結束,最高得分: ' + num;

//關閉定時器

clearInterval(obj.timer);

//顯示開始遊戲

go.children[0].innerHTML = 'Renew game';

go.style.display = "block";

}

//盒子加速

if(num%20 == 0){

speed++;

}

}

},20)

}

//開始遊戲

go.children[0].onclick = function(){

//開始前判斷main裡面是否有盒子,有則全部删除

if(main.children.length){

//暴力清楚main裡面所有盒子

main.innerHTML = '';

}

//清空計分

count.innerHTML = '遊戲開始';

//隐藏開始盒子

this.parentNode.style.display = "none";

//調用定時器

move(main);

}

以上就是本文的全部内容,希望本文的内容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支援腳本之家!