zoukankan
html css js c++ java
JavaScriptjs写的俄罗斯方块
<
HTML
>
<
HEAD
>
<
title
>
俄罗斯方块
</
title
>
<
style
>
<!--
BODY
{
}
{
}
.MB
{
}
{
BACKGROUND-COLOR
:
firebrick
;
CURSOR
:
default
;
HEIGHT
:
22px
;
WIDTH
:
22px
}
.SB
{
}
{
BACKGROUND-COLOR
:
slategray
;
CURSOR
:
default
;
HEIGHT
:
22px
;
WIDTH
:
22px
}
.BK
{
}
{
BACKGROUND-COLOR
:
white
;
CURSOR
:
default
;
HEIGHT
:
22px
;
WIDTH
:
22px
}
.GT
{
}
{
BORDER-BOTTOM
:
deepskyblue thin solid
;
BORDER-LEFT
:
deepskyblue thin solid
;
BORDER-RIGHT
:
deepskyblue thin solid
;
BORDER-TOP
:
deepskyblue thin solid
;
CURSOR
:
default
}
-->
</
style
>
<
script
>
<!--
var
BX
=
new
Array(
4
);
var
BY
=
new
Array(
4
);
var
PX
=
new
Array(
4
);
var
PY
=
new
Array(
4
);
var
mTimer
var
firstView
function
beginGame()
{
gameState
=
0
;
speed
=
1
;
outTime
=
1100
-
speed
*
100
;
score
=
0
;
if
(gameState
!=
0
)
return
;
firstView
=
true
;
for
(j
=
0
;j
<
16
;j
++
)
for
(i
=
0
;i
<
10
;i
++
)
setClass(i,j,
"
BK
"
);
randBar();
gameState
=
1
;
Play.disabled
=
true
;
window.clearInterval(mTimer);
mTimer
=
window.setInterval(
"
moveBar()
"
,outTime);
}
function
keyControl()
{
if
(gameState
!=
1
)
return
;
switch
(event.keyCode)
{
case
37
:
{
//
left
for
(i
=
0
;i
<
4
;i
++
)
if
(BX[i]
==
0
)
return
;
for
(i
=
0
;i
<
4
;i
++
)
if
(getClass(BX[i]
-
1
,BY[i])
==
"
SB
"
)
return
;
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
BK
"
);
for
(i
=
0
;i
<
4
;i
++
)BX[i]
=
BX[i]
-
1
;
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
MB
"
);
break
;}
case
38
:
{
//
up
var
preMBarX
=
new
Array(
4
);
var
preMBarY
=
new
Array(
4
);
var
cx
=
Math.round((BX[
0
]
+
BX[
1
]
+
BX[
2
]
+
BX[
3
])
/
4
);
var
cy
=
Math.round((BY[
0
]
+
BY[
1
]
+
BY[
2
]
+
BY[
3
])
/
4
);
for
(i
=
0
;i
<
4
;i
++
)
{
preMBarX[i]
=
Math.round(cx
-
cy
+
BY[i]);
preMBarY[i]
=
Math.round(cx
+
cy
-
BX[i]);
if
(preMBarX[i]
<
0
||
preMBarX[i]
>
9
||
preMBarY[i]
<
0
||
preMBarY[i]
>
15
)
return
;
if
(getClass(preMBarX[i],preMBarY[i])
==
"
SB
"
)
return
;
}
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
BK
"
);
for
(i
=
0
;i
<
4
;i
++
)
{
BX[i]
=
preMBarX[i];
BY[i]
=
preMBarY[i];
}
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
MB
"
);
break
;}
case
39
:
{
//
right
for
(i
=
0
;i
<
4
;i
++
)
if
(BX[i]
==
9
)
return
;
for
(i
=
0
;i
<
4
;i
++
)
if
(getClass(BX[i]
+
1
,BY[i])
==
"
SB
"
)
return
;
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
BK
"
);
for
(i
=
0
;i
<
4
;i
++
)BX[i]
=
BX[i]
+
1
;
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
MB
"
);
break
;}
case
40
:
{
//
down
moveBar();
break
;}
}
}
function
delLine()
{
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
SB
"
);
for
(j
=
0
;j
<
16
;j
++
)
{
dLine
=
true
;
for
(i
=
0
;i
<
9
;i
++
)
{
if
(getClass(i,j)
!=
"
SB
"
)
{
dLine
=
false
;
break
;
}
}
if
(dLine)
{
score
=
score
+
100
;
for
(k
=
j;k
>
0
;k
--
)
for
(l
=
0
;l
<
10
;l
++
)
setClass(l,k,getClass(l,k
-
1
));
for
(l
=
0
;l
<
10
;l
++
)setClass(l,
0
,
"
BK
"
);
}
}
randBar();
speed
=
Math.floor(score
/
3000
)
+
1
;
outTime
=
1100
-
speed
*
100
;
scoreBar.innerHTML
=
"
Score :
"
+
score;
speedBar.innerHTML
=
"
Speed :
"
+
speed;
window.clearInterval(mTimer);
mTimer
=
window.setInterval(
"
moveBar()
"
,outTime);
}
function
getClass(x,y)
{
return
GameBar.children[y].children[x].className;}
function
setClass(x,y,cName)
{GameBar.children[y].children[x].className
=
cName;}
function
moveBar()
{
if
(gameState
!=
1
)
return
;
dropLine
=
true
;
for
(i
=
0
;i
<
4
;i
++
)
if
(BY[i]
==
15
)dropLine
=
false
;
if
(dropLine)
for
(i
=
0
;i
<
4
;i
++
)
if
(getClass(BX[i],BY[i]
+
1
)
==
"
SB
"
)dropLine
=
false
;
if
(
!
dropLine)
{
window.clearInterval(mTimer);
delLine();
return
;
}
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
BK
"
);
for
(i
=
0
;i
<
4
;i
++
)BY[i]
=
BY[i]
+
1
;
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
MB
"
);
}
function
pauseGame()
{
if
(gameState
==
0
)
return
;
if
(event.srcElement.value
==
"
Pause
"
)
{
gameState
=
2
;
event.srcElement.value
=
"
Continue
"
;
window.clearInterval(mTimer);
}
else
{
gameState
=
1
;
event.srcElement.value
=
"
Pause
"
;
mTimer
=
window.setInterval(
"
moveBar()
"
,outTime);
}
}
function
fMnu()
{
return
false
;}
document.oncontextmenu
=
fMnu;
function
preview()
{
if
(previewBar.style.display
!=
"
none
"
)
previewBar.style.display
=
"
none
"
;
else
previewBar.style.display
=
"
block
"
;
}
function
replayGame()
{
if
(gameState
!=
1
)
return
;
if
(
!
confirm(
"
你真的要重新开始么?
"
))
return
;
gameState
=
0
;
window.clearInterval(mTimer);
beginGame();
}
function
randBar()
{
randNum
=
Math.floor(Math.random()
*
20
)
+
1
;
if
(
!
firstView)
for
(i
=
0
;i
<
4
;i
++
)
{
BX[i]
=
PX[i];
BY[i]
=
PY[i];
}
switch
(randNum)
{
case
1
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
4
;
PY[
1
]
=
1
;
PX[
2
]
=
5
;
PY[
2
]
=
1
;
PX[
3
]
=
6
;
PY[
3
]
=
1
;
break
;}
case
2
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
0
;
PX[
2
]
=
4
;
PY[
2
]
=
1
;
PX[
3
]
=
4
;
PY[
3
]
=
2
;
break
;}
case
3
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
0
;
PX[
2
]
=
6
;
PY[
2
]
=
0
;
PX[
3
]
=
6
;
PY[
3
]
=
1
;
break
;}
case
4
:
{
PX[
0
]
=
5
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
1
;
PX[
2
]
=
5
;
PY[
2
]
=
2
;
PX[
3
]
=
4
;
PY[
3
]
=
2
;
break
;}
case
5
:
{
PX[
0
]
=
6
;
PY[
0
]
=
0
;
PX[
1
]
=
6
;
PY[
1
]
=
1
;
PX[
2
]
=
4
;
PY[
2
]
=
1
;
PX[
3
]
=
5
;
PY[
3
]
=
1
;
break
;}
case
6
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
4
;
PY[
1
]
=
1
;
PX[
2
]
=
4
;
PY[
2
]
=
2
;
PX[
3
]
=
5
;
PY[
3
]
=
2
;
break
;}
case
7
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
4
;
PY[
1
]
=
1
;
PX[
2
]
=
5
;
PY[
2
]
=
0
;
PX[
3
]
=
6
;
PY[
3
]
=
0
;
break
;}
case
8
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
0
;
PX[
2
]
=
5
;
PY[
2
]
=
1
;
PX[
3
]
=
5
;
PY[
3
]
=
2
;
break
;}
case
9
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
0
;
PX[
2
]
=
5
;
PY[
2
]
=
1
;
PX[
3
]
=
6
;
PY[
3
]
=
1
;
break
;}
case
10
:
{
PX[
0
]
=
5
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
1
;
PX[
2
]
=
4
;
PY[
2
]
=
1
;
PX[
3
]
=
4
;
PY[
3
]
=
2
;
break
;}
case
11
:
{
PX[
0
]
=
4
;
PY[
0
]
=
1
;
PX[
1
]
=
5
;
PY[
1
]
=
1
;
PX[
2
]
=
5
;
PY[
2
]
=
0
;
PX[
3
]
=
6
;
PY[
3
]
=
0
;
break
;}
case
12
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
4
;
PY[
1
]
=
1
;
PX[
2
]
=
5
;
PY[
2
]
=
1
;
PX[
3
]
=
5
;
PY[
3
]
=
2
;
break
;}
case
13
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
0
;
PX[
2
]
=
6
;
PY[
2
]
=
0
;
PX[
3
]
=
5
;
PY[
3
]
=
1
;
break
;}
case
14
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
4
;
PY[
1
]
=
1
;
PX[
2
]
=
4
;
PY[
2
]
=
2
;
PX[
3
]
=
5
;
PY[
3
]
=
1
;
break
;}
case
15
:
{
PX[
0
]
=
5
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
1
;
PX[
2
]
=
4
;
PY[
2
]
=
1
;
PX[
3
]
=
6
;
PY[
3
]
=
1
;
break
;}
case
16
:
{
PX[
0
]
=
5
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
1
;
PX[
2
]
=
5
;
PY[
2
]
=
2
;
PX[
3
]
=
4
;
PY[
3
]
=
1
;
break
;}
case
17
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
0
;
PX[
2
]
=
4
;
PY[
2
]
=
1
;
PX[
3
]
=
5
;
PY[
3
]
=
1
;
break
;}
case
18
:
{
PX[
0
]
=
4
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
0
;
PX[
2
]
=
4
;
PY[
2
]
=
1
;
PX[
3
]
=
5
;
PY[
3
]
=
1
;
break
;}
case
19
:
{
PX[
0
]
=
3
;
PY[
0
]
=
0
;
PX[
1
]
=
4
;
PY[
1
]
=
0
;
PX[
2
]
=
5
;
PY[
2
]
=
0
;
PX[
3
]
=
6
;
PY[
3
]
=
0
;
break
;}
case
20
:
{
PX[
0
]
=
5
;
PY[
0
]
=
0
;
PX[
1
]
=
5
;
PY[
1
]
=
1
;
PX[
2
]
=
5
;
PY[
2
]
=
2
;
PX[
3
]
=
5
;
PY[
3
]
=
3
;
break
;}
}
if
(firstView)
{
firstView
=
false
;
randBar();
return
;
}
for
(i
=
0
;i
<
4
;i
++
)
{
for
(j
=
0
;j
<
4
;j
++
)
{
previewBar.children[j].children[i].className
=
"
BK
"
;
}
}
for
(i
=
0
;i
<
4
;i
++
)previewBar.children[PY[i]].children[PX[i]
-
3
].className
=
"
MB
"
;
for
(i
=
0
;i
<
4
;i
++
)
{
if
(getClass(BX[i],BY[i])
!=
"
BK
"
)
{
alert(
"
Game Over!
"
);
window.clearInterval(mTimer);
Play.disabled
=
false
;
gameState
=
0
;
return
;
}
}
for
(i
=
0
;i
<
4
;i
++
)setClass(BX[i],BY[i],
"
MB
"
);
}
//
-->
</
script
>
</
HEAD
>
<
BODY
bgcolor
=Black
onkeydown
="return keyControl();"
>
<
center
>
<
P
><
b
><
font
color
=red>俄罗斯方块</font></b></P>
<table cellspacing
=0
cellpadding
=0
class
=gt
border
=1
bordercolor
="LightYellow "
style
="position:absolute;left:220px;top:53px;"
>
<
Tbody
id
=GameBar>
<tr
><
td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr>
</tbody
>
</
table
>
</
center
>
<
table
style
="position:absolute;top=100px;left:50px"
>
<
tr
><
td
id
=scoreBar
style
="color:white"
>
Score : 0
</
td
></
tr
>
<
tr
><
td
id
=speedBar
style
="color:white"
>
Speed : 1
</
td
></
tr
>
</
table
>
<
table
cellspacing
=0
cellpadding
=0
class
=gt
border
=1
bordercolor
="LightYellow "
style
="position:absolute;left:570px;top:53px;"
>
<
Tbody
id
=previewBar>
<tr
><
td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr><tr><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td><td
class
=BK> </td></tr>
</tbody
>
</
table
>
<
table
style
="position:absolute;left:570px;top:180px;"
>
<
tr
><
td
><
input
type
=button
id
="Play"
style
="100px"
value
="Play"
onclick
="return beginGame();"
></
td
></
tr
>
<
tr
><
td
><
input
type
=button
id
="Pause"
style
="100px"
value
="Pause"
onclick
="return pauseGame();"
></
td
></
tr
>
<
tr
><
td
><
input
type
=button
id
="Preview"
style
="100px"
value
="Preview"
onclick
="preview();"
></
td
></
tr
>
<
tr
><
td
><
input
type
=button
id
="Replay"
style
="100px"
value
="Replay"
onclick
="replayGame();"
></
td
></
tr
>
<
tr
><
td
><
input
type
=button
id
="Quit"
style
="100px"
value
="Quit"
onclick
="window.close();"
></
td
></
tr
>
</
table
>
<
div
style
="position:absolute;left:590px;top:390px;color:white;font-size:9pt"
>
如有问题请与我
<
a
href
="mailto:sor@263.net"
><
font
color
=white>联系</font></a></div>
</BODY
>
</
HTML
>
<
script
>
function
unSel()
{
document.execCommand(
"
Unselect
"
);
window.setTimeout(
"
unSel()
"
,
10
);
}
unSel();
window.onunload
=
rel;
function
rel()
{
location.reload();
return
false
;
}
</
script
>
查看全文
相关阅读:
Session共享的解决方案
用IIS配置反向代理
authorization配置
git之https或http方式设置记住用户名和密码的方法
微信分享接口
为你的Visual Studio单独设置代理服务器
HTTP错误404.13
MVC5的AuthorizeAttribute详解
【MVC5】画面多按钮提交
PetaPoco dynamic
原文地址:https://www.cnblogs.com/xiaodi/p/126831.html
最新文章
PageBase
nuget包重装
Linq 中按照多个值进行分组(GroupBy)
owin要跑起来
软件下载站
使用EntityFramework6.1的DbCommandInterceptor拦截生成的SQL语句
EF事务
vs2013 支持C#6.0 Install-Package Microsoft.Net.Compilers
shutdown命令用法
SQLserver中用convert函数转换日期格式
热门文章
SQL DatePart函数使用
asp.net mvc 在View中获取Url参数的值
RouteData
使用 Elmah一些要注意的问题
Elmah 日志记录组件
Senparc.Weixin.MP.Sample 配置redis服务器密码
PetaPoco初体验(转)
迟延执行
微型orm fluentdata
mvc 路由
Copyright © 2011-2022 走看看