if (block_type[d2]==1){ obj_tabid.rows(i).cells(j).style.background = color; } else{ obj_tabid.rows(i).cells(j).style.background = ""; } } } obj_divid.style.pixelleft=x; obj_divid.style.pixeltop=y; } function change(inc){ var type = curblock.substr(0,4); var num = curblock.substr(curblock.length-1); num = parseint(num) + inc; if (num>4||num<1) num -= 4*inc; type += num; eval("arr_tmp = " + type + ";"); if (canmove(curx,cury,arr_tmp)){ curblock = type; eval("arr_curblock = " + curblock + ";"); eval("showblock(block_div.style.pixelleft,block_div.style.pixeltop," + curblock + ",colors[" + cid + "]);"); } } function canmove(x,y,block){ for (i=0;i<4;i++){ for (j=0;j<4;j++){ if (block.getd(i,j,4)&table.getd(y/n_incstep+i,x/n_incstep+j,16)) return false; } } return true; } function newblock(){ curblock = nextblock; cid = ncid; bid = math.round(math.random()*(blocks.length-1)); ncid = math.round(math.random()*(colors.length-1)); nextblock = blocks[bid]; eval("arr_curblock = " + curblock + ";"); eval("showblock(120,0," + curblock + ",colors[" + cid + "]);"); eval("arr_curblock = " + curblock + ";"); eval("showblock1(466,116," + nextblock + ",colors[" + ncid + "],nblock_tbl,nblock_div);"); } function saveblock(){ for (i=0;i<4;i++){ for (j=0;j<4;j++){ table[(cury/n_incstep+i)*16+curx/n_incstep+j]|=arr_curblock[i*4+j]; if (arr_curblock[i*4+j]==1) if ((cury/n_incstep+i<21)&&(curx/n_incstep+j>1)&&(curx/n_incstep+j<14)) table_tbl.rows(cury/n_incstep+i).cells(curx/n_incstep+j).style.background = colors[cid]; if (table[(cury/n_incstep+i)*16+curx/n_incstep+j]!=1) table_tbl.rows(cury/n_incstep+i).cells(curx/n_incstep+j).style.background = "black"; } } } function delline(line){ for(i=line;i>0;i--){ for(j=2;j<14;j++){ table[i*16+j]=table[(i-1)*16+j]; } } table_tbl.deleterow(line); table_tbl.insertrow(0); for (i=0;i<16;i++){ table_tbl.rows(0).insertcell(); if (i<2||i>13) table_tbl.rows(0).cells(i).style.background="navy"; } killedlines++; cll.innertext=parseint(cll.innertext)+1; } function dellines(){ var c,d,i,j; d=0; cury=block_div.style.pixeltop; for(i=(cury/20+3);i>cury/20-1;i--){ c=0; for(j=2;j<14;j++){ if (isnan(table[i*16+j])||i==21) break; c+=table[i*16+j]; } if(c==12){ delline(i); i++; d++; } } if (d>0) sco.innertext=parseint(sco.innertext)+d*d*36; } function lucifer(){ for(var i=2;i<14;i++){ if (table[16+i]==1) return true; } return false; } function gameover(){ gameover=1; clearinterval(gameinterval); block_div.innerhtml=""; for (i=0;i<21;i++){ for (j=2;j<14;j++){ settimeout("table_tbl.rows(" + i + ").cells(" + j + ").style.background = colors[math.round(math.random()*7)];",16*i*j); } } nblock_div.innerhtml = "game over"; } function document_onkeydown() { if (gameover==1) return; with (block_div.style){ curx = pixelleft; cury = pixeltop; switch (event.keycode){ case 37: if (canmove(curx-n_incstep,cury,arr_curblock)) pixelleft-=n_incstep; break; case 38: change(1); break; case 39: if (canmove(curx+n_incstep,cury,arr_curblock)) pixelleft+=n_incstep; break; case 40: if (canmove(curx,cury+n_incstep,arr_curblock)){ pixeltop+=n_incstep; } else{ saveblock(); dellines(); if (lucifer()){ gameover(); return; } sco.innertext=parseint(sco.innertext)+2; newblock(); } break; case 32: if (pause==0){ clearinterval(gameinterval); pause=1; } else{ gameinterval=window.setinterval("handle_interval()",(maxspeed-speed+1)*60); pause=0; } break; case 90: change(1); break; case 88: change(-1); break; default: } } } function handle_interval(){