Кому тетрис на javascript?
Автор
Сообщение
04 сентября 2016
16:52
<script>
var tdw=tdh=20;
var tabh=20;
var tabw=10;
var level=1000;
var newx=5;
var newy=3;
var xx,yy,block,rotate;
var blx=new Array(4);
var bly=new Array(4);
var qqq=0;
document.write("<table id='tt' border='1'>");
for (var itr=0; itr<tabh; itr++){document.write("<tr height="+tdh+">");
for (var itd=0; itd<tabw; itd++){document.write("<td id='0' width="+tdw+" onclick='GET_TD(this)'></td>")}
document.write("</tr>")}
document.write("</table>");
document.write("<table><tr><td><input type=button id='lb' value=' LEFT ' onclick='LEFT()'></td><td><input type=button id='rtb' value='ROTATE' onclick='ROTATE()'></td><td><input type=button id='rb' value='RIGHT' onclick='RIGHT()'></td><td id='res'></td></tr><tr><td></td><td><input type=button id='db' value='DOWN' onclick='DOWN()'></td><td></td></tr></table>");
res.style.fontSize="30px";
rtb.style.height=rb.style.height=db.style.height=lb.style.height=40;
for(var i=0;i<tabh;i++){for(var ii=0;ii<tabw;ii++){tt.rows[i].cells[ii].style.background="white"}};
xx=newx; yy=newy; res.innerText="0"; RAND(); CREATEBLOCK(); MOVING();
function GET_TD(ttcell){
for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="white"};
if(ttcell.cellIndex<xx){LEFT()}; if(ttcell.cellIndex>xx){RIGHT()}}
function RAND(){block=Math.floor(Math.random()*7)+1; rotate=Math.floor(Math.random()*3);}
function CREATEBLOCK(){
if (block==1){if(rotate<4){blx[1]=blx[3]=xx-1; blx[2]=blx[4]=xx; bly[1]=bly[2]=yy-1; bly[3]=bly[4]=yy;}}
if (block==2){
if (rotate==2){rotate=0}; if (rotate==3){rotate=1};
if (rotate==0){blx[1]=xx-1; blx[2]=blx[3]=xx; blx[4]=xx+1; bly[1]=bly[2]=yy-1; bly[3]=bly[4]=yy}
if (rotate==1){blx[1]=blx[3]=xx; blx[2]=blx[4]=xx-1; bly[1]=yy-2; bly[2]=bly[3]=yy-1; bly[4]=yy}}
if (block==3){
if (rotate==2){rotate=0}; if (rotate==3){rotate=1};
if (rotate==0){blx[1]=blx[4]=xx; blx[2]=xx+1; blx[3]=xx-1; bly[1]=bly[2]=yy-1; bly[3]=bly[4]=yy}
if (rotate==1){blx[1]=blx[2]=xx-1; blx[3]=blx[4]=xx; bly[1]=yy-2; bly[2]=bly[3]=yy-1; bly[4]=yy}}
if (block==4){
if (rotate==0){blx[1]=blx[4]=xx+1; blx[2]=xx-1; blx[3]=xx; bly[1]=yy-1; bly[2]=bly[3]=bly[4]=yy}
if (rotate==1){blx[1]=xx-1; blx[2]=blx[3]=blx[4]=xx; bly[1]=bly[2]=yy-2; bly[3]=yy-1; bly[4]=yy}
if (rotate==2){blx[1]=blx[4]=xx-1; blx[2]=xx; blx[3]=xx+1; bly[1]=bly[2]=bly[3]=yy-1; bly[4]=yy}
if (rotate==3){blx[1]=blx[2]=blx[3]=xx; blx[4]=xx+1; bly[1]=yy-2; bly[2]=yy-1; bly[3]=bly[4]=yy}}
if (block==5){
if (rotate==0){blx[1]=blx[2]=xx-1; blx[3]=xx; blx[4]=xx+1; bly[1]=yy-1; bly[2]=bly[3]=bly[4]=yy}
if (rotate==1){blx[3]=xx-1; blx[1]=blx[2]=blx[4]=xx; bly[1]=yy-2; bly[2]=yy-1; bly[3]=bly[4]=yy}
if (rotate==2){blx[1]=xx-1; blx[2]=xx; blx[3]=blx[4]=xx+1; bly[1]=bly[2]=bly[3]=yy-1; bly[4]=yy}
if (rotate==3){blx[2]=xx+1; blx[1]=blx[3]=blx[4]=xx; bly[1]=bly[2]=yy-2; bly[3]=yy-1; bly[4]=yy}}
if (block==6){
if (rotate==0){blx[1]=blx[3]=xx; blx[2]=xx-1; blx[4]=xx+1; bly[1]=yy-1; bly[2]=bly[3]=bly[4]=yy}
if (rotate==1){blx[2]=xx-1; blx[1]=blx[3]=blx[4]=xx; bly[1]=yy-2; bly[2]=bly[3]=yy-1; bly[4]=yy}
if (rotate==2){blx[2]=blx[4]=xx; blx[1]=xx-1; blx[3]=xx+1; bly[4]=yy; bly[1]=bly[2]=bly[3]=yy-1}
if (rotate==3){blx[3]=xx+1; blx[1]=blx[2]=blx[4]=xx; bly[1]=yy-2; bly[2]=bly[3]=yy-1; bly[4]=yy}}
if (block==7){
if (rotate==2){rotate=0}; if (rotate==3){rotate=1};
if (rotate==0){blx[1]=xx-2;blx[2]=xx-1; blx[3]=xx; blx[4]=xx+1; bly[1]=bly[2]=bly[3]=bly[4]=yy}
if (rotate==1){bly[1]=yy-3;bly[2]=yy-2; bly[3]=yy-1; bly[4]=yy; blx[1]=blx[2]=blx[3]=blx[4]=xx}}
}
function Z(col){
if (col==0){for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="white"}}
if (col==1){for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="green"}}
if (col==2){for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="grey"}}
if (col==3){for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="red"}}}
function ROTATE(){var f=0; var pre=rotate;
if(rotate<3){rotate++}else{rotate=0}; Z(0); CREATEBLOCK();
if(blx[1]>=0 && blx[2]>=0 && blx[3]>=0 && blx[4]>=0){}else{xx++;CREATEBLOCK()}
if(blx[1]>=0 && blx[2]>=0 && blx[3]>=0 && blx[4]>=0){}else{xx++;CREATEBLOCK()}
if(blx[1]<=tabw-1 && blx[2]<=tabw-1 && blx[3]<=tabw-1 && blx[4]<=tabw-1){}else{xx--;CREATEBLOCK()}
if(blx[1]<=tabw-1 && blx[2]<=tabw-1 && blx[3]<=tabw-1 && blx[4]<=tabw-1){}else{xx--;CREATEBLOCK()}
for(var i=1;i<=4;i++){if(tt.rows[bly[i]].cells[blx[i]].style.background!="grey"){f++}}if(f!=4){rotate=pre; CREATEBLOCK()};Z(1)}
function LEFT(){var f=0; for(var i=1;i<=4;i++){if(blx[i]>0){f++}; if(tt.rows[bly[i]].cells[blx[i]-1].style.background!="grey"){f++}}
if(f==8){Z(0); xx--} CREATEBLOCK(); Z(1)}
function RIGHT(){var f=0; for(var i=1;i<=4;i++){if(blx[i]<tabw-1){f++}; if(tt.rows[bly[i]].cells[blx[i]+1].style.background!="grey"){f++}}
if(f==8){Z(0); xx++} CREATEBLOCK(); Z(1)}
function DOWN(){level=10}
function MOVING(){var f=0; setTimeout(MOVING,level);
if(bly[1]<tabh-1 && bly[2]<tabh-1 && bly[3]<tabh-1 && bly[4]<tabh-1){
for(var i=1;i<=4;i++){if(tt.rows[bly[i]+1].cells[blx[i]].style.background!="grey"){f++}}if(f==4){Z(0); yy++;}
else{CLEAR()}}else{CLEAR()}; CREATEBLOCK(); if(level!=1000000){Z(1);}else{Z(3)}}
function CLEAR(){var full=0; RAND(); level=1000; Z(2); xx=newx; yy=newy;
for(var i=0;i<tabh;i++){full=0; for(var ii=0;ii<tabw;ii++){
if(tt.rows[i].cells[ii].style.background=="grey"){full++;
if (full>0 && i<=newy){level=1000000;}
if (full==tabw){
for(var u=0;u<tabw;u++){tt.rows[i].cells[u].style.background="white"}
for (var j=0;j<tabw;j++){for (var jj=i;jj>0;jj--){
tt.rows[jj].cells[j].style.background=tt.rows[jj-1].cells[j].style.background}; tt.rows[0].cells[j].style.background=="white"};
qqq++; res.innerText=qqq;}}}}}
</script>
var tdw=tdh=20;
var tabh=20;
var tabw=10;
var level=1000;
var newx=5;
var newy=3;
var xx,yy,block,rotate;
var blx=new Array(4);
var bly=new Array(4);
var qqq=0;
document.write("<table id='tt' border='1'>");
for (var itr=0; itr<tabh; itr++){document.write("<tr height="+tdh+">");
for (var itd=0; itd<tabw; itd++){document.write("<td id='0' width="+tdw+" onclick='GET_TD(this)'></td>")}
document.write("</tr>")}
document.write("</table>");
document.write("<table><tr><td><input type=button id='lb' value=' LEFT ' onclick='LEFT()'></td><td><input type=button id='rtb' value='ROTATE' onclick='ROTATE()'></td><td><input type=button id='rb' value='RIGHT' onclick='RIGHT()'></td><td id='res'></td></tr><tr><td></td><td><input type=button id='db' value='DOWN' onclick='DOWN()'></td><td></td></tr></table>");
res.style.fontSize="30px";
rtb.style.height=rb.style.height=db.style.height=lb.style.height=40;
for(var i=0;i<tabh;i++){for(var ii=0;ii<tabw;ii++){tt.rows[i].cells[ii].style.background="white"}};
xx=newx; yy=newy; res.innerText="0"; RAND(); CREATEBLOCK(); MOVING();
function GET_TD(ttcell){
for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="white"};
if(ttcell.cellIndex<xx){LEFT()}; if(ttcell.cellIndex>xx){RIGHT()}}
function RAND(){block=Math.floor(Math.random()*7)+1; rotate=Math.floor(Math.random()*3);}
function CREATEBLOCK(){
if (block==1){if(rotate<4){blx[1]=blx[3]=xx-1; blx[2]=blx[4]=xx; bly[1]=bly[2]=yy-1; bly[3]=bly[4]=yy;}}
if (block==2){
if (rotate==2){rotate=0}; if (rotate==3){rotate=1};
if (rotate==0){blx[1]=xx-1; blx[2]=blx[3]=xx; blx[4]=xx+1; bly[1]=bly[2]=yy-1; bly[3]=bly[4]=yy}
if (rotate==1){blx[1]=blx[3]=xx; blx[2]=blx[4]=xx-1; bly[1]=yy-2; bly[2]=bly[3]=yy-1; bly[4]=yy}}
if (block==3){
if (rotate==2){rotate=0}; if (rotate==3){rotate=1};
if (rotate==0){blx[1]=blx[4]=xx; blx[2]=xx+1; blx[3]=xx-1; bly[1]=bly[2]=yy-1; bly[3]=bly[4]=yy}
if (rotate==1){blx[1]=blx[2]=xx-1; blx[3]=blx[4]=xx; bly[1]=yy-2; bly[2]=bly[3]=yy-1; bly[4]=yy}}
if (block==4){
if (rotate==0){blx[1]=blx[4]=xx+1; blx[2]=xx-1; blx[3]=xx; bly[1]=yy-1; bly[2]=bly[3]=bly[4]=yy}
if (rotate==1){blx[1]=xx-1; blx[2]=blx[3]=blx[4]=xx; bly[1]=bly[2]=yy-2; bly[3]=yy-1; bly[4]=yy}
if (rotate==2){blx[1]=blx[4]=xx-1; blx[2]=xx; blx[3]=xx+1; bly[1]=bly[2]=bly[3]=yy-1; bly[4]=yy}
if (rotate==3){blx[1]=blx[2]=blx[3]=xx; blx[4]=xx+1; bly[1]=yy-2; bly[2]=yy-1; bly[3]=bly[4]=yy}}
if (block==5){
if (rotate==0){blx[1]=blx[2]=xx-1; blx[3]=xx; blx[4]=xx+1; bly[1]=yy-1; bly[2]=bly[3]=bly[4]=yy}
if (rotate==1){blx[3]=xx-1; blx[1]=blx[2]=blx[4]=xx; bly[1]=yy-2; bly[2]=yy-1; bly[3]=bly[4]=yy}
if (rotate==2){blx[1]=xx-1; blx[2]=xx; blx[3]=blx[4]=xx+1; bly[1]=bly[2]=bly[3]=yy-1; bly[4]=yy}
if (rotate==3){blx[2]=xx+1; blx[1]=blx[3]=blx[4]=xx; bly[1]=bly[2]=yy-2; bly[3]=yy-1; bly[4]=yy}}
if (block==6){
if (rotate==0){blx[1]=blx[3]=xx; blx[2]=xx-1; blx[4]=xx+1; bly[1]=yy-1; bly[2]=bly[3]=bly[4]=yy}
if (rotate==1){blx[2]=xx-1; blx[1]=blx[3]=blx[4]=xx; bly[1]=yy-2; bly[2]=bly[3]=yy-1; bly[4]=yy}
if (rotate==2){blx[2]=blx[4]=xx; blx[1]=xx-1; blx[3]=xx+1; bly[4]=yy; bly[1]=bly[2]=bly[3]=yy-1}
if (rotate==3){blx[3]=xx+1; blx[1]=blx[2]=blx[4]=xx; bly[1]=yy-2; bly[2]=bly[3]=yy-1; bly[4]=yy}}
if (block==7){
if (rotate==2){rotate=0}; if (rotate==3){rotate=1};
if (rotate==0){blx[1]=xx-2;blx[2]=xx-1; blx[3]=xx; blx[4]=xx+1; bly[1]=bly[2]=bly[3]=bly[4]=yy}
if (rotate==1){bly[1]=yy-3;bly[2]=yy-2; bly[3]=yy-1; bly[4]=yy; blx[1]=blx[2]=blx[3]=blx[4]=xx}}
}
function Z(col){
if (col==0){for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="white"}}
if (col==1){for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="green"}}
if (col==2){for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="grey"}}
if (col==3){for(var i=1;i<=4;i++){tt.rows[bly[i]].cells[blx[i]].style.background="red"}}}
function ROTATE(){var f=0; var pre=rotate;
if(rotate<3){rotate++}else{rotate=0}; Z(0); CREATEBLOCK();
if(blx[1]>=0 && blx[2]>=0 && blx[3]>=0 && blx[4]>=0){}else{xx++;CREATEBLOCK()}
if(blx[1]>=0 && blx[2]>=0 && blx[3]>=0 && blx[4]>=0){}else{xx++;CREATEBLOCK()}
if(blx[1]<=tabw-1 && blx[2]<=tabw-1 && blx[3]<=tabw-1 && blx[4]<=tabw-1){}else{xx--;CREATEBLOCK()}
if(blx[1]<=tabw-1 && blx[2]<=tabw-1 && blx[3]<=tabw-1 && blx[4]<=tabw-1){}else{xx--;CREATEBLOCK()}
for(var i=1;i<=4;i++){if(tt.rows[bly[i]].cells[blx[i]].style.background!="grey"){f++}}if(f!=4){rotate=pre; CREATEBLOCK()};Z(1)}
function LEFT(){var f=0; for(var i=1;i<=4;i++){if(blx[i]>0){f++}; if(tt.rows[bly[i]].cells[blx[i]-1].style.background!="grey"){f++}}
if(f==8){Z(0); xx--} CREATEBLOCK(); Z(1)}
function RIGHT(){var f=0; for(var i=1;i<=4;i++){if(blx[i]<tabw-1){f++}; if(tt.rows[bly[i]].cells[blx[i]+1].style.background!="grey"){f++}}
if(f==8){Z(0); xx++} CREATEBLOCK(); Z(1)}
function DOWN(){level=10}
function MOVING(){var f=0; setTimeout(MOVING,level);
if(bly[1]<tabh-1 && bly[2]<tabh-1 && bly[3]<tabh-1 && bly[4]<tabh-1){
for(var i=1;i<=4;i++){if(tt.rows[bly[i]+1].cells[blx[i]].style.background!="grey"){f++}}if(f==4){Z(0); yy++;}
else{CLEAR()}}else{CLEAR()}; CREATEBLOCK(); if(level!=1000000){Z(1);}else{Z(3)}}
function CLEAR(){var full=0; RAND(); level=1000; Z(2); xx=newx; yy=newy;
for(var i=0;i<tabh;i++){full=0; for(var ii=0;ii<tabw;ii++){
if(tt.rows[i].cells[ii].style.background=="grey"){full++;
if (full>0 && i<=newy){level=1000000;}
if (full==tabw){
for(var u=0;u<tabw;u++){tt.rows[i].cells[u].style.background="white"}
for (var j=0;j<tabw;j++){for (var jj=i;jj>0;jj--){
tt.rows[jj].cells[j].style.background=tt.rows[jj-1].cells[j].style.background}; tt.rows[0].cells[j].style.background=="white"};
qqq++; res.innerText=qqq;}}}}}
</script>
5
+5
-0
04 сентября 2016
16:53
вставить полностью текст предыдущего сообщения в текстовый файл и сохранить. После поменять расширение на .htm, открыть в браузере и играть
0
+0
-0
04 сентября 2016
18:00
Круто работает ))))
0
+0
-0
04 сентября 2016
18:23
переменная левел скорость в миллисекундах
0
+0
-0
Для отправки сообщений вам необходимо Авторизоваться