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
>
查看全文
相关阅读:
刷题系列
元类编程
Python内置方法与面向对象知识点进阶系列
json反序列化的时候字符串为单引号的一个坑
刨根问底,完美解决Django2版本连接MySQL报错的问题
使用mkdocs撰写技术文档并免费部署上线
关于Python的源文件编译看这一篇就够了
SQL查询where语句后面字符串大小写问题
configparser模块获取settings.ini文件中的配置数据
Sharepoint 2013列表视图和字段权限扩展插件(免费下载)!
原文地址:https://www.cnblogs.com/xiaodi/p/126831.html
最新文章
linux下将Python环境默认更改为Python3.6
Teradata 数据库
Mac 环境 Hadoop 提交 job 报错 /bin/bash: /bin/java: No such file or directory
Java后台开发规范
MySQL Structured Query Language
Mac Golang 开发环境配置
12306 快速抢票购票程序
Docker 构建镜像
Python Web 程序使用 uWSGI 部署
Python Scrapy 实战
热门文章
Linux 常见压缩格式详解
Spring Boot Aop
Python归结与web服务端知识点杂记
个人Django资源
Python可变数据类型list填坑一则
异步任务分发模块Celery
rbac权限组件整合到实际项目的全过程详述
当时年轻的我在做项目时遇到的坑2
当时年轻的我在做项目时遇到的坑
windows下GitHub的安装、配置以及项目的上传过程详细介绍
Copyright © 2011-2022 走看看