JAVA实现的俄罗斯方块

JavaScript08

JAVA实现的俄罗斯方块,第1张

这个是用HTML+JavaScript写的,你看看是不是你要的,也可以拿来做参考参考

<html>

<head>

<title>俄罗斯方块</title>

<meta content="text/htmlcharset=gb2312" http-equiv=Content-Type>

</head>

<body>

<style>BODY {

BACKGROUND: blackMARGIN: 0px

}

TD {

COLOR: #ffffffFONT-FAMILY: 宋体FONT-SIZE: 9ptHEIGHT: 20pxWIDTH: 20px

}

#block_div {

POSITION: absoluteWIDTH: 80pxZ-INDEX: 1

}

#table_div {

POSITION: absoluteWIDTH: 320px

}

#nblock_div {

COLOR: redFONT: 48px systemPOSITION: absoluteZ-INDEX: 2

}

#title_div {

COLOR: whiteFONT-SIZE: 14pxLEFT: 326pxPOSITION: absoluteTOP: 7px

}

#infobar_div {

LEFT: 5pxPOSITION: absoluteTOP: 460px

}

#infobar2_div {

COLOR: whiteFONT-SIZE: 14pxLEFT: 396pxPOSITION: absoluteTOP: 480px

}

#infobar2_div A {

COLOR: #99ccffTEXT-DECORATION: none

}

</style>

<script id=clientEventHandlersJS language=JavaScript>

<!--

top.window.moveTo(0, 0)

/*

Tetris Game by Xie Yong ([email protected])

Modifications by DynamicDrive.com for interface enhancements

For this script, visit http://www.dynamicdrive.com

*/

if (document.all){

var gameInterval=""

var gamestart=0

var n_width = 800

var n_height =640

var n_left = Math.round( screen.width/2 ) - n_width/2

var n_top = Math.round( screen.height/2 ) - n_height/2

var n_IncStep = 20

var curBlcok,nextBlock

var arr_curBlock = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

var curX,curY

var speed=1

var maxspeed=9

var clr_per_line=18

var pause=0

var gameover=0

var colors = new Array("#999999","#0000FF","#80FFFF","#80FF80","#FFFF00","#FF8000","#FF00FF","#FF0000"

)

var cid

var ncid

var blocks = new Array("tt_O1","tt_T2","tt_Z1","tt_S1","tt_L1","tt_J1","tt_I2")

var bid

var killedlines=0

var tt_O1 = new Array(0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0)

var tt_O2 = new Array(0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0)

var tt_O3 = new Array(0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0)

var tt_O4 = new Array(0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0)

var tt_T1 = new Array(0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0)

var tt_T2 = new Array(0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0)

var tt_T3 = new Array(0,0,0,0,0,1,0,0,0,1,1,0,0,1,0,0)

var tt_T4 = new Array(0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0)

var tt_Z1 = new Array(0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0)

var tt_Z2 = new Array(0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0)

var tt_Z3 = new Array(0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0)

var tt_Z4 = new Array(0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0)

var tt_S1 = new Array(0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0)

var tt_S2 = new Array(0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,0)

var tt_S3 = new Array(0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0)

var tt_S4 = new Array(0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0)

var tt_L1 = new Array(0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0)

var tt_L2 = new Array(0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0)

var tt_L3 = new Array(0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0)

var tt_L4 = new Array(0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0)

var tt_J1 = new Array(0,0,1,0,0,0,1,0,0,1,1,0,0,0,0,0)

var tt_J2 = new Array(0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0)

var tt_J3 = new Array(0,0,0,0,0,1,1,0,0,1,0,0,0,1,0,0)

var tt_J4 = new Array(0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0)

var tt_I1 = new Array(0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0)

var tt_I2 = new Array(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1)

var tt_I3 = new Array(0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0)

var tt_I4 = new Array(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1)

var table = new Array(

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)

}

else

alert("You need IE4+ to play Tetris!")

function dimension2(row,col,num){

var i = row * num + col

return (this[i])

}

Array.prototype.getd = dimension2

function ShowBlock(x,y,block_type,color){

for (var i=0i<block_tbl.rows.lengthi++){

for (var j=0j<block_tbl.rows(i).cells.lengthj++){

var d2 = i * 4 + j

if (block_type[d2]==1){

block_tbl.rows(i).cells(j).style.background = color

}

else{

block_tbl.rows(i).cells(j).style.background = ""

}

}

}

block_div.style.pixelLeft=x

block_div.style.pixelTop=y

}

function ShowBlock1(x,y,block_type,color,obj_tabID,obj_divID){

for (var i=0i<obj_tabID.rows.lengthi++){

for (var j=0j<obj_tabID.rows(i).cells.lengthj++){

var d2 = i * 4 + j

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=0i<4i++){

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

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(340,170," + nextBlock + ",colors[" + ncid + "],nblock_tbl,nblock_div)")

}

function SaveBlock(){

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

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

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=linei>0i--){

for(j=2j<14j++){

table[i*16+j]=table[(i-1)*16+j]

}

}

table_tbl.deleteRow(line)

table_tbl.insertRow(0)

for (i=0i<16i++){

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-1i--){

c=0

for(j=2j<14j++){

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=2i<14i++){

if (table[16+i]==1) return true

}

return false

}

function GameOver(){

gameover=1

clearInterval(gameInterval)

block_div.innerHTML=""

for (i=0i<21i++){

for (j=2j<14j++){

setTimeout("table_tbl.rows(" + i + ").cells(" + j + ").style.background = colors[Math.round(Math.random()*7)]",16*i*j)

}

}

nblock_div.innerHTML = "游戏结束<br><br><font size=2><input type=button onclick='javascript:location.href=location.href' value='再玩一次'></font>"

}

function document_onkeydown() {

if (gameover==1) return

with (block_div.style){

curX = pixelLeft

curY = pixelTop

switch (event.keyCode){

case 37:

if(pause==1||gamestart==0){break}

if (CanMove(curX-n_IncStep,curY,arr_curBlock))

pixelLeft-=n_IncStep

break

case 38:

if(pause==1||gamestart==0){break}

Change(1)

break

case 39:

if(pause==1||gamestart==0){break}

if (CanMove(curX+n_IncStep,curY,arr_curBlock))

pixelLeft+=n_IncStep

break

case 40:

if(pause==1||gamestart==0){break}

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){

if (gameInterval==""){break}

clearInterval(gameInterval)

pause=1

}

else{

gameInterval=window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60)

pause=0

}

break

case 90:

if(pause==1||gamestart==0){break}

Change(1)

break

case 88:

if(pause==1||gamestart==0){break}

Change(-1)

break

default:

}

}

}

function Handle_Interval(){

curX = block_div.style.pixelLeft

curY = block_div.style.pixelTop

if (CanMove(curX,curY+n_IncStep,arr_curBlock)){

block_div.style.pixelTop+=n_IncStep

}

else{

SaveBlock()

DelLines()

if (Lucifer()){

GameOver()

return

}

sco.innerText=parseInt(sco.innerText)+2

NewBlock()

}

if (killedlines>=clr_per_line){

killedlines-=clr_per_line

if (speed<maxspeed)

speed++

else

speed=maxspeed

spd.innerText=speed

clearInterval(gameInterval)

gameInterval=window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60)

}

}

//-->

</script>

<script event=onkeydown for=document language=javascript>

<!--

if (document.all)

document_onkeydown()

//-->

</script>

<div id=block_div style="LEFT: 60pxTOP: 0px">

<table border=0 cellpadding=0 cellspacing=0 id=block_tbl>

<script>

if (document.all){

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

document.write("<tr>")

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

document.write("<td style=\"border:1 solid black\"></td>")

}

document.write("</tr>")

}

}

</script>

<tbody></tbody>

</table>

</div>

<div id=nblock_div>

<table border=0 cellpadding=0 cellspacing=0 id=nblock_tbl>

<script>

if (document.all){

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

document.write("<tr>")

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

document.write("<td style=\"height:40width:40border:1 outset black\"></td>")

}

document.write("</tr>")

}

}

</script>

<tbody></tbody>

</table>

</div>

<div id=table_div>

<table border=0 cellpadding=0 cellspacing=0 id=table_tbl>

<script>

if (document.all){

for (var i=0i<22i++){

document.write("<tr>")

for (var j=0j<16j++){

var d2 = i * 16 + j

if (table[d2]==1)

document.write("<td bgcolor=navy></td>")

else

document.write("<td style=\"background:black\"></td>")

}

document.write("</tr>")

}

}

</script>

<tbody></tbody>

</table>

</div>

<div id=title_div noWrap><br>

请输入数字(1-9)<br>

<br>

起始速度:

<input id=speedin size=8 value=1>

<button id=but onClick=begintet()>开始</button><br>

<br>

<br>

<font color=999999>下一块:</font><br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

说明:<br>

<br>

<font color=999900>↑ :改变形状 ← :向左移动<br>

→ :向右移动 ↓ :向下移动<br>

<br>

空格键:暂停/继续</font><br>

<br>

<font color=009900>=======</font></div>

<div id=infobar_div>

<table border=1 bordercolor=navy cellpadding=0 cellspacing=0>

<tbody>

<tr align=middle>

<td style="COLOR: #99ccffFONT: 12px systemWIDTH: 56px"><font

size=2>速度</font>:</td>

<td id=spd style="COLOR: redFONT: 12px system">1</td>

<td style="COLOR: #99ccffFONT: 12px systemWIDTH: 86px">总分:</td>

<td id=sco style="COLOR: redFONT: 12px system">0</td>

<td style="COLOR: #99ccffFONT: 12px systemWIDTH: 96px">成绩:</td>

<td id=cll

style="COLOR: redFONT: 12px system">0</td>

</tr>

</tbody>

</table>

</div>

<div id=infobar2_div></div>

<script id=MainSection language=javascript>

<!--

if (document.all){

ncid = Math.round(Math.random()*(colors.length-1))

bid = Math.round(Math.random()*(blocks.length-1))

nextBlock = blocks[bid]

NewBlock()

}

function begintet(){

gamestart=1

document.all.speedin.disabled=true

document.all.but.disabled=true

speed=parseInt(document.all.speedin.value)

if (isNaN(speed)||speed==null||speed>maxspeed||speed<1) speed=1

spd.innerText=speed

gameInterval=window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60)

}

//-->

</script>

<div id='dh' style="position:absoluteleft:-800pxtop:-800pxwidth:0pxheight:0pxz-index:1">

<input type=button value='-' name='goppp' onClick='Javascript:window.close()' accesskey='q'>

</div>

</body>

</html>

这个是用HTML+JavaScript写的

这些语言都能写JAVA就更不用说了

<html>

<head>

<title>俄罗斯方块</title>

<meta content="text/htmlcharset=gb2312" http-equiv=Content-Type>

</head>

<body>

<style>BODY {

BACKGROUND: blackMARGIN: 0px

}

TD {

COLOR: #ffffffFONT-FAMILY: 宋体FONT-SIZE: 9ptHEIGHT: 20pxWIDTH: 20px

}

#block_div {

POSITION: absoluteWIDTH: 80pxZ-INDEX: 1

}

#table_div {

POSITION: absoluteWIDTH: 320px

}

#nblock_div {

COLOR: redFONT: 48px systemPOSITION: absoluteZ-INDEX: 2

}

#title_div {

COLOR: whiteFONT-SIZE: 14pxLEFT: 326pxPOSITION: absoluteTOP: 7px

}

#infobar_div {

LEFT: 5pxPOSITION: absoluteTOP: 460px

}

#infobar2_div {

COLOR: whiteFONT-SIZE: 14pxLEFT: 396pxPOSITION: absoluteTOP: 480px

}

#infobar2_div A {

COLOR: #99ccffTEXT-DECORATION: none

}

</style>

<script id=clientEventHandlersJS language=JavaScript>

<!--

top.window.moveTo(0, 0)

/*

Tetris Game by Xie Yong ([email protected])

Modifications by DynamicDrive.com for interface enhancements

For this script, visit http://www.dynamicdrive.com

*/

if (document.all){

var gameInterval=""

var gamestart=0

var n_width = 800

var n_height =640

var n_left = Math.round( screen.width/2 ) - n_width/2

var n_top = Math.round( screen.height/2 ) - n_height/2

var n_IncStep = 20

var curBlcok,nextBlock

var arr_curBlock = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

var curX,curY

var speed=1

var maxspeed=9

var clr_per_line=18

var pause=0

var gameover=0

var colors = new Array("#999999","#0000FF","#80FFFF","#80FF80","#FFFF00","#FF8000","#FF00FF","#FF0000"

)

var cid

var ncid

var blocks = new Array("tt_O1","tt_T2","tt_Z1","tt_S1","tt_L1","tt_J1","tt_I2")

var bid

var killedlines=0

var tt_O1 = new Array(0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0)

var tt_O2 = new Array(0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0)

var tt_O3 = new Array(0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0)

var tt_O4 = new Array(0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0)

var tt_T1 = new Array(0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0)

var tt_T2 = new Array(0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0)

var tt_T3 = new Array(0,0,0,0,0,1,0,0,0,1,1,0,0,1,0,0)

var tt_T4 = new Array(0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0)

var tt_Z1 = new Array(0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0)

var tt_Z2 = new Array(0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0)

var tt_Z3 = new Array(0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0)

var tt_Z4 = new Array(0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0)

var tt_S1 = new Array(0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0)

var tt_S2 = new Array(0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,0)

var tt_S3 = new Array(0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0)

var tt_S4 = new Array(0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0)

var tt_L1 = new Array(0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0)

var tt_L2 = new Array(0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0)

var tt_L3 = new Array(0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0)

var tt_L4 = new Array(0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0)

var tt_J1 = new Array(0,0,1,0,0,0,1,0,0,1,1,0,0,0,0,0)

var tt_J2 = new Array(0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0)

var tt_J3 = new Array(0,0,0,0,0,1,1,0,0,1,0,0,0,1,0,0)

var tt_J4 = new Array(0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0)

var tt_I1 = new Array(0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0)

var tt_I2 = new Array(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1)

var tt_I3 = new Array(0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0)

var tt_I4 = new Array(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1)

var table = new Array(

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)

}

else

alert("You need IE4+ to play Tetris!")

function dimension2(row,col,num){

var i = row * num + col

return (this[i])

}

Array.prototype.getd = dimension2

function ShowBlock(x,y,block_type,color){

for (var i=0i<block_tbl.rows.lengthi++){

for (var j=0j<block_tbl.rows(i).cells.lengthj++){

var d2 = i * 4 + j

if (block_type[d2]==1){

block_tbl.rows(i).cells(j).style.background = color

}

else{

block_tbl.rows(i).cells(j).style.background = ""

}

}

}

block_div.style.pixelLeft=x

block_div.style.pixelTop=y

}

function ShowBlock1(x,y,block_type,color,obj_tabID,obj_divID){

for (var i=0i<obj_tabID.rows.lengthi++){

for (var j=0j<obj_tabID.rows(i).cells.lengthj++){

var d2 = i * 4 + j

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=0i<4i++){

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

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(340,170," + nextBlock + ",colors[" + ncid + "],nblock_tbl,nblock_div)")

}

function SaveBlock(){

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

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

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=linei>0i--){

for(j=2j<14j++){

table[i*16+j]=table[(i-1)*16+j]

}

}

table_tbl.deleteRow(line)

table_tbl.insertRow(0)

for (i=0i<16i++){

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-1i--){

c=0

for(j=2j<14j++){

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=2i<14i++){

if (table[16+i]==1) return true

}

return false

}

function GameOver(){

gameover=1

clearInterval(gameInterval)

block_div.innerHTML=""

for (i=0i<21i++){

for (j=2j<14j++){

setTimeout("table_tbl.rows(" + i + ").cells(" + j + ").style.background = colors[Math.round(Math.random()*7)]",16*i*j)

}

}

nblock_div.innerHTML = "游戏结束<br><br><font size=2> <input type=button onclick='javascript:location.href=location.href' value='再玩一次'></font>"

}

function document_onkeydown() {

if (gameover==1) return

with (block_div.style){

curX = pixelLeft

curY = pixelTop

switch (event.keyCode){

case 37:

if(pause==1||gamestart==0){break}

if (CanMove(curX-n_IncStep,curY,arr_curBlock))

pixelLeft-=n_IncStep

break

case 38:

if(pause==1||gamestart==0){break}

Change(1)

break

case 39:

if(pause==1||gamestart==0){break}

if (CanMove(curX+n_IncStep,curY,arr_curBlock))

pixelLeft+=n_IncStep

break

case 40:

if(pause==1||gamestart==0){break}

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){

if (gameInterval==""){break}

clearInterval(gameInterval)

pause=1

}

else{

gameInterval=window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60)

pause=0

}

break

case 90:

if(pause==1||gamestart==0){break}

Change(1)

break

case 88:

if(pause==1||gamestart==0){break}

Change(-1)

break

default:

}

}

}

function Handle_Interval(){

curX = block_div.style.pixelLeft

curY = block_div.style.pixelTop

if (CanMove(curX,curY+n_IncStep,arr_curBlock)){

block_div.style.pixelTop+=n_IncStep

}

else{

SaveBlock()

DelLines()

if (Lucifer()){

GameOver()

return

}

sco.innerText=parseInt(sco.innerText)+2

NewBlock()

}

if (killedlines>=clr_per_line){

killedlines-=clr_per_line

if (speed<maxspeed)

speed++

else

speed=maxspeed

spd.innerText=speed

clearInterval(gameInterval)

gameInterval=window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60)

}

}

//-->

</script>

<script event=onkeydown for=document language=javascript>

<!--

if (document.all)

document_onkeydown()

//-->

</script>

<div id=block_div style="LEFT: 60pxTOP: 0px">

<table border=0 cellpadding=0 cellspacing=0 id=block_tbl>

<script>

if (document.all){

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

document.write("<tr>")

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

document.write("<td style=\"border:1 solid black\"></td>")

}

document.write("</tr>")

}

}

</script>

<tbody></tbody>

</table>

</div>

<div id=nblock_div>

<table border=0 cellpadding=0 cellspacing=0 id=nblock_tbl>

<script>

if (document.all){

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

document.write("<tr>")

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

document.write("<td style=\"height:40width:40border:1 outset black\"></td>")

}

document.write("</tr>")

}

}

</script>

<tbody></tbody>

</table>

</div>

<div id=table_div>

<table border=0 cellpadding=0 cellspacing=0 id=table_tbl>

<script>

if (document.all){

for (var i=0i<22i++){

document.write("<tr>")

for (var j=0j<16j++){

var d2 = i * 16 + j

if (table[d2]==1)

document.write("<td bgcolor=navy></td>")

else

document.write("<td style=\"background:black\"></td>")

}

document.write("</tr>")

}

}

</script>

<tbody></tbody>

</table>

</div>

<div id=title_div noWrap><br>

请输入数字(1-9)<br>

<br>

起始速度:

<input id=speedin size=8 value=1>

 <button id=but onClick=begintet()>开始</button><br>

<br>

<br>

<font color=999999>下一块:</font><br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

说明:<br>

<br>

<font color=999900> ↑ :改变形状 ← :向左移动<br>

 → :向右移动 ↓ :向下移动<br>

<br>

空格键:暂停/继续</font><br>

<br>

<font color=009900> 原作:未知 改编:BOBO娱乐网</font></div>

<div id=infobar_div>

<table border=1 bordercolor=navy cellpadding=0 cellspacing=0>

<tbody>

<tr align=middle>

<td style="COLOR: #99ccffFONT: 12px systemWIDTH: 56px"><font

size=2>速度</font>:</td>

<td id=spd style="COLOR: redFONT: 12px system">1</td>

<td style="COLOR: #99ccffFONT: 12px systemWIDTH: 86px">总分:</td>

<td id=sco style="COLOR: redFONT: 12px system">0</td>

<td style="COLOR: #99ccffFONT: 12px systemWIDTH: 96px">成绩:</td>

<td id=cll

style="COLOR: redFONT: 12px system">0</td>

</tr>

</tbody>

</table>

</div>

<div id=infobar2_div></div>

<script id=MainSection language=javascript>

<!--

if (document.all){

ncid = Math.round(Math.random()*(colors.length-1))

bid = Math.round(Math.random()*(blocks.length-1))

nextBlock = blocks[bid]

NewBlock()

}

function begintet(){

gamestart=1

document.all.speedin.disabled=true

document.all.but.disabled=true

speed=parseInt(document.all.speedin.value)

if (isNaN(speed)||speed==null||speed>maxspeed||speed<1) speed=1

spd.innerText=speed

gameInterval=window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60)

}

//-->

</script>

<div id='dh' style="position:absoluteleft:-800pxtop:-800pxwidth:0pxheight:0pxz-index:1">

<input type=button value='-' name='goppp' onClick='Javascript:window.close()' accesskey='q'>

</div>

</body>

</html>

Arix Tetris

顾名思义,俄罗斯方块自然是俄罗斯人发明的。这位伟人叫做阿列克谢·帕基特诺夫(Алексей Пажитнов 英文:Alexey Pazhitnov)。

俄罗斯方块原名是俄语Тетрис(英语是Tetris),这个名字来源于希腊语tetra,意思是“四”,而游戏的作者最喜欢网球(tennis)。于是,他把两个词tetra和tennis合而为一,命名为Tetris,这也就是俄罗斯方块名字的由来啦。

俄罗斯方块(Tetris, 俄文:Тетрис)是1980年末期至1990年代初期风靡全世界的电子游戏,是落下型益智游戏的始祖。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。它的规则简单,容易上手,且游戏过程变化无穷。