基于xhtml+Javascript的俄罗斯方块游戏源程序
2011年01月17日
[b]http://www.w3.org/1999/xhtml">
俄罗斯方块
BODY {
BACKGROUND: black; MARGIN: 0px
}
TD {
COLOR: #ffffff; FONT-FAMILY: 宋体; FONT-SIZE: 9pt; HEIGHT: 20px; WIDTH: 20px
}
#block_div {
POSITION: absolute; WIDTH: 80px; Z-INDEX: 1
}
#table_div {
POSITION: absolute; WIDTH: 320px
}
#nblock_div {
COLOR: red; FONT: 48px system; POSITION: absolute; Z-INDEX: 2
}
#title_div {
COLOR: white; FONT-SIZE: 14px; LEFT: 326px; POSITION: absolute; TOP: 7px
}
#infobar_div {
LEFT: 5px; POSITION: absolute; TOP: 460px
}
#infobar2_div {
COLOR: white; FONT-SIZE: 14px; LEFT: 396px; POSITION: absolute; TOP: 480px
}
#infobar2_div A {
COLOR: #99ccff; TEXT-DECORATION: none
}
[b]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);
}
Array.prototype.getd = dimension2;
function ShowBlock(x,y,block_type,color){
for (var i=0;ifor (var j=0;jfor (var i=0;ifor (var j=0;j4||numfor (i=0;ifor (j=0;jfor (i=0;ifor (j=0;j1)&&(curX/n_IncStep+j14))
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;j14;j++){
table[i*16+j]=table[(i-1)*16+j];
}
}
table_tbl.deleteRow(line);
table_tbl.insertRow(0);
for (i=0;i13) 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;j14;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;i14;i++){
if (table[16+i]==1) return true;
}
return false;
}
function GameOver(){
gameover=1;
clearInterval(gameInterval);
block_div.innerHTML="";
for (i=0;ifor (j=2;j14;j++){
setTimeout("table_tbl.rows(" + i + ").cells(" + j + ").style.background = colors[Math.round(Math.random()*7)];",16*i*j);
}
}
nblock_div.innerHTML = "游戏结束
";
}
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 (speedspeed=maxspeed;
spd.innerText=speed;
clearInterval(gameInterval);
gameInterval=window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60);
}
}
//-->
for=document language=javascript>
if (document.all){
for (var i=0;i");
for (var j=0;j");
}
document.write("");
}
}
if (document.all){
for (var i=0;i");
for (var j=0;j");
}
document.write("");
}
}
if (document.all){
for (var i=0;i");
for (var j=0;j");
else
document.write("");
}
document.write("");
}
}
请输入数字(1-9)
起始速度:
开始
下一块:
说明:
↑ :改变形状 ← :向左移动
→ :向右移动 ↓ :向下移动
空格键:暂停/继续
=======
速度:
1
总分:
0
成绩:
0
speed=parseInt(document.all.speedin.value);
if (isNaN(speed)||speed==null||speed>maxspeed||speedspeed=1;
spd.innerText=speed;
gameInterval=window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60);
}
//-->
;input type=button value='-' name='goppp' onClick='Javascript:window.close();' accesskey='q'>
发表评论
-
select, poll区别及使用
2012-01-20 09:16 797select, poll区别及使用 2011年05月10日 ... -
apache1.3.39源码alloc.c阅读笔记
2012-01-20 09:16 568apache1.3.39源码alloc.c阅读笔记 2011 ... -
Web安全漏洞之:JDK1.5环境下扫描远程调试端口导致JVM崩溃【JDWP exit error JVMTI_ERROR_NONE(0)】
2012-01-20 09:16 711Web安全漏洞之:JDK1.5环境 ... -
PowerTalkBox和飞信结合搞定在线客户端(.net)
2012-01-20 09:16 590PowerTalkBox和飞信结合搞 ... -
Lua的协同程序
2012-01-20 09:15 876Lua的协同程序 2011年03 ... -
演讲稿 ―― 一生有你
2012-01-19 14:17 581演讲稿 ―― 一生有你 2011年06月04日 一生 ... -
公司主管竞聘演讲稿
2012-01-19 14:17 788公司主管竞聘演讲稿 20 ... -
爱心演讲稿-用爱拥抱每一天用心感动每个人
2012-01-19 14:17 529爱心演讲稿-用爱拥抱每 ... -
有谁可以帮帮忙 帮我写一篇竞聘药店储备店长的演讲稿 急用
2012-01-19 14:17 904有谁可以帮帮忙 帮我写 ... -
三亚市二 一一年初中毕业考试
2012-01-17 04:07 631三亚市二 一一年初中毕业考试 2012年01月12日 ... -
2010-12-26
2012-01-17 04:07 7072010-12-26 2011年12月22日 Unit ... -
Translation.
2012-01-17 04:07 864Translation. 2012年01月10日 1. ... -
超右脑英语学习法
2012-01-17 04:07 684超右脑英语学习法 2012年01月14日 ... -
吸引力法则的正面效应
2012-01-16 02:55 748吸引力法则的正面效应 ... -
又一天
2012-01-16 02:55 606又一天 2012年01月11日 ... -
2011-12-4
2012-01-16 02:55 6222011-12-4 2011年12月04日 (转载)20 ... -
那个在市桥易发街正门的“7-11”便利店工作的死肥婆。
2012-01-16 02:55 1153那个在市桥易发街正门的“7-11”便利店工作的死肥婆。 20 ... -
香港情夜――禁室培欲3
2012-01-16 02:55 58442香港情夜――禁室培欲3 2011年12月03日 ...
相关推荐
CSS+XHTML+JavaScript完全学习手册 非常不错哦
HTML+XHTML+CSS+JavaScript+DOM+AJAX语法及范例实用辞典是一本系统、全面的语法和范例辞典,详尽介绍了html、xhtml、css、javascript、dom、ajax这6种技术的语法。全书共分5章,书中不但对语法进行了理论讲解,而且...
《CSS+XHTML+ JavaScript完全学习手册》,第6、12、14章,pdf格式,请用7-zip解压。
xhtml-transitional.html XHTML1.0 Transitional的文档的代码 xhtml.html 一个简单的XHTML示例 xhtml-show.html XHTML与浏览器 xhtml.html 软件开发的XHTML代码
xhtml+css页面xhtml+css页面xhtml+css页面xhtml+css页面xhtml+css页面
《HTML+XHTML+CSS+JavaScript+DOM+AJAX语法及范例实用辞典》这本书的附赠光盘,内容有从chapter1-chapter5的所有网站源码。
xhtml+cssxhtml+cssxhtml+cssxhtml+cssxhtml+css
xhtml+css页面xhtml+css页面xhtml+css页面xhtml+css页面xhtml+css页面
css基础、高级、实例;html基础教程、高级教程、实例、参考手册;HTML DOM:DOM简介、DOM实例、DOM对象;XHTML教程、XHTML参考手册;JavaScript:基础、高级、对象、实例、参考手册;TCP/IP教程
asp、javascript、xhtml+css、sql功能优化; asp、javascript、xhtml+css、sql功能优化
xhtml+css页面xhtml+css页面xhtml+css页面xhtml+css页面xhtml+css页面
xHTML+CSS+Dreamweaver CS3原书实例代码,从第二章到最后一章。
这是我做的笔记,包含了XHTML,DIV+CSS技术,可以制作静态网页。
XHTML 符合XML标准的HTML DHTML Dy’namic HTML (X)HTML / CSS / JavaScript的综合运用 CSS—Cascade Style Sheet层叠样式表 1998/5/12,CSS level2成为W3C标准 用来装饰HTML/XML的标记集合 特点: 样式表由...
100套自由免费的XHTML+CSS网页模板100套自由免费的XHTML+CSS网页模板100套自由免费的XHTML+CSS网页模板100套自由免费的XHTML+CSS网页模板100套自由免费的XHTML+CSS网页模板
XHTML+CSS标准化网页开发,前端主要职能:把web界面更好的呈现给用户
妙味视频+JavaScript+jquery+html5+css3视频教程(88GB)+项目实战
Head+First+HTML与CSS、XHTML++(中文版).pdf
XHTML MP (XHTML Mobile Profile) 是 WAP 2.0 标记语言. XHTML MP 是 XHTML 的子集, HTML 和 XML 的结合. 本 XHTML MP 教程从对 XHTML MP 的介绍和各种标记语言, 如 WML, XHTML, XHTML Basic 和 XHTML MP, 之间的...
50个经典XHTML+CSS模版 50个经典XHTML+CSS模版 50个经典XHTML+CSS模版 50个经典XHTML+CSS模版