pzg's blog

研究表明俄罗斯方块有助于排解忧愁(附HTML源代码)

俄罗斯方块我是玩的,排解忧愁不否认,不过这个游戏我玩多了晚上睡觉都会有方块的。

据香港《大公报》报道,遭受重大打击后,玩《俄罗斯方块》(Tetris)可以减低创伤后压力症的征状.
英国研究人员发现,遭受创伤后不久玩《俄罗斯方块》有助抹去痛苦记忆和减少不快的回忆突然重现的频率.这项发现可以帮助科学家找到新方法去治疗因为意外入 院或是从战区回来的人士.研究人员向40名健康的志愿人士展示不同来源的创伤性影像,包括突显醉酒驾驶的危机性的宣传海报,然后让其中20人玩了10分钟 的《俄罗斯方块》,而另一半人什么也没有做.研究人员发现,玩过游戏的人在接下来的一星期里,伤痛回忆突然重现的情况少得多.

负责领导这项研究的霍姆斯博士认为,俄罗斯方块有助阻止大脑贮存痛苦回忆,但必须是在事发后马上就玩.

研究人员解释,这是因为大脑分为两部分:一部分负责感官,另一部分负责分析.由于我们一心二用──例如一边跟人谈话一边解决数学问题──的能力有限,这种计算机游戏可以“干扰大脑保留记忆的方式”.

研究人员选择《俄罗斯方块》是因为它要求玩家将彩色的方块到处移动,能驱使大部分大脑参与活动.不过,他们不清楚其它计算机游戏是否同样有效.

霍姆斯说:“《俄罗斯方块》有效可能是因为它争夺大脑争取感官信息的资源.我们发现它明确地干预感官回忆在受到创伤后的时段被贮存下来的方式,从而减少了之后发生的回忆闪现的次数.”

另一位研究人员指出,事发后的6小时是关键:“以健康的志愿人士来说,在这个时间段内玩《俄罗斯方块》可以减少突现闪现式的回忆,而又不会影响理解那次事件的能力.”

以下附上HTML的俄罗斯方块源代码,和现在的应用程序比是很简陋的,不过也是很方便的。

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>俄罗斯方</title>
</head>

<body>
<style>
span.btn
{
BORDER-RIGHT: #7b9ebd 1px solid;
PADDING-RIGHT: 2px;
BORDER-TOP: #7b9ebd 1px solid;
PADDING-LEFT: 2px;
FONT-SIZE: 12px;
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#cecfde);
BORDER-LEFT: #7b9ebd 1px solid;
COLOR: black;
PADDING-TOP: 2px;
BORDER-BOTTOM: #7b9ebd 1px solid;
background-color: #CCCCCC;
}
</style>
<script language=”javascript”>
var doing;
var candown=0;
var wnum=13;
var hnum=18;
var grid=new Array();
var gridBuf=new Array();
for(i=0;i<=hnum;i++){
grid[i]=new Array();
gridBuf[i]=new Array();
for(j=0;j<=wnum;j++){
if(j>0 && j<wnum && i<hnum){
grid[i][j]=0;
gridBuf[i][j]=0;
}else{
grid[i][j]=1;
gridBuf[i][j]=1;
}
}
}

var boxdata=
[
[
[1,1,1,1],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]
],
[
[1,1,1,0],
[1,0,0,0],
[0,0,0,0],
[0,0,0,0],

],
[
[1,1,1,0],
[0,1,0,0],
[0,0,0,0],
[0,0,0,0]
],
[
[1,1,1,0],
[0,0,1,0],
[0,0,0,0],
[0,0,0,0]
],
[
[1,1,0,0],
[0,1,1,0],
[0,0,0,0],
[0,0,0,0]
],
[
[0,1,1,0],
[1,1,0,0],
[0,0,0,0],
[0,0,0,0]
],
[
[1,1,0,0],
[1,1,0,0],
[0,0,0,0],
[0,0,0,0]
]
];

var colors=[“black”,”#A0A0A0″,”red”,”#FF8000″,”yellow”,”pink”];
var gotLine=0;
var box;
var bGameOver=false;
function getHeight(arr)
{
var i,j;
for(i=3;i>=0;i–)
for(j=0;j<4;j++)
if(arr[i][j]) return i;
}
function getWidth(arr)
{
var i,j;
for(i=3;i>=0;i–)
for(j=0;j<4;j++)
if(arr[j][i]) return i;
}

function Box(x,y,arr,color)
{
this.arr=arr;
this.x=x;
this.y=y;
this.w=getWidth(arr);
this.h=getHeight(arr);
this.color=color;
this.active=true;

this.clearOldBox=function()
{
for(var j=0;j<=this.h;j++)
for(var i=0;i<=this.w;i++)
if(this.arr[j][i]>0) grid[this.y+j][this.x+i]=0;
}

this.putNewBox=function()
{
for(var j=0;j<=this.h;j++)
for(var i=0;i<=this.w;i++)
if(this.arr[j][i]>0) grid[this.y+j][this.x+i]=this.color;

}

this.moveLeft=function()
{
this.clearOldBox();
var _x=this.x-1;
if(this.canMove(_x,this.y)) this.x=_x;
this.putNewBox();
drawGrid();
}
this.moveRight=function()
{
this.clearOldBox();
var _x=this.x+1;
if(this.canMove(_x,this.y)) this.x=_x;
this.putNewBox();
drawGrid();
}

this.moveDown=function()
{
this.clearOldBox();

var _y=this.y+1;
if(this.canMove(this.x,_y)){
this.y=_y;
this.putNewBox();
drawGrid();

}else{
this.putNewBox();
drawGrid();
checkLineFull();
return;
}

}

this.rotate=function()
{
var tmp=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]];
for(j=0;j<=this.h;j++)
for(i=0;i<=this.w;i++)
tmp[this.w-i][j]=this.arr[j][i];
var newBox=new Box(this.x,this.y,tmp,this.color);
this.clearOldBox();
if(! newBox.canMove(this.x,this.y)) this.putNewBox();
else
{
box=newBox;
box.putNewBox();
drawGrid();
}
}
this.canMove=function(x,y)
{
for(var j=0;j<=this.h;j++)
for(var i=0;i<=this.w;i++)
{
if(grid[y+j][x+i]!=0 && this.arr[j][i]!=0){ candown=1;return false; }
}
return true;
}

}

function drawGrid()
{
for(var j=0;j<hnum;j++)
for(var i=0;i<wnum;i++)
{
if( grid[j][i]!=gridBuf[j][i])
{
paintCell(j,i,grid[j][i]);
}
gridBuf[j][i]=grid[j][i];

}
}

function paintCell(i,j,color)
{
var htmlGrid=document.getElementById(“TetrisGrid”).firstChild;
htmlGrid.childNodes[i].childNodes[j].style.backgroundColor=colors[color];

}
function init()
{
var html='<table id=”TetrisGrid” cellspacing=1 style=”background-color:green”><tbody>’;
for(var i=0;i<=hnum;i++)
{
html+='<tr>’;
for(var j=0;j<=wnum;j++)
{

html+='<td width=”20″ height=”20″ style=”background-color:’+colors[grid[i][j]]+’;”></td>’;
}
html+='</tr> \r\n’;
}
html+='</tbody></table>’;
document.write(html);

}

function checkLineFull()
{
var full,i,j,i2;
var y3=box.y+box.h;
var y4=box.y;
for(i=y3;i>=y4;)
{
full=1;
for(j=0;j<wnum;j++)
if(grid[i][j]==0){full=0; break;}
if(full==0){ –i; continue;}
for(i2=i; i2>0;i2–)
for(j=0;j<wnum;j++)
grid[i2][j]=grid[i2-1][j];
drawGrid();
y4++;
gotLine++;
}
checkGameOver();
}

function checkGameOver()
{
var bOver=false;
for(var j=1;j<wnum;j++)
if(grid[0][j]>0){ bOver=true; break;}
if(!bOver){
box=new Box((wnum-1)/2,0,boxdata[Math.floor(Math.random()*7)],Math.floor(Math.random()*5)+1);
box.putNewBox();
}
else
{
bGameOver=true;
msg.innerHTML=”游戏结束! 您的得分为”+gotLine*100;
window.clearTimeout(doing);
}
}
function document_onkeydown()
{
if(bGameOver) return;
switch(event.keyCode)
{
case 32:
down();
break;
case 37:
box.moveLeft();
break;
case 39:
box.moveRight();
break;
case 38:
box.rotate();
break;
case 40:
box.moveDown();
break;
case 80:
stop();
break;
case 66:
window.location.reload();
break;
case 67:
restart();
break;
}
}
function down(){
if(window.event.keyCode==32){
clearTimeout(doing);
for(i=0;i<hnum;i++){
if(candown==0){
box.moveDown();
}else{
break;
}
}
candown=0;
doing=window.setTimeout(‘moveDownBox()’,interval);
}
}
var interval;
function moveDownBox()
{
interval=1000-10*(gotLine>80?80 :gotLine);
msg.innerHTML=” 等级:”+Math.floor(gotLine/10)+”;得分:”+gotLine*100;
box.moveDown();
doing=window.setTimeout(‘moveDownBox()’,interval);
}
function startGame()
{
init();
doing=window.setTimeout(‘moveDownBox()’,1000);
bGameOver=false;
box=new Box((wnum-1)/2,0,boxdata[Math.floor(Math.random()*7)],Math.floor(Math.random()*5)+1);
box.putNewBox();
drawGrid();
}
var status;
function stop(){
status=1;
window.clearTimeout(doing);
}
function restart(){
if(status==1){
status=0;
doing=window.setTimeout(‘moveDownBox()’,1000);
}
}
function keydown(){
if (document.all)document_onkeydown()
}
</script>
<BODY onLoad=”window.focus()” onkeydown=”keydown()”>
<table width=”100%” height=”100%” border=”0″ align=”center” cellpadding=”0″ cellspacing=”0″>
<tr>
<td>
<table id=”maintable” border=”0″ align=”center” cellpadding=”0″ cellspacing=”0″>
<tr>
<td align=”center”>
<span class=”btn” style=”width:100%; height:24px;background-color:#F0C0C0;color:#0000FF;vertical-align:middle;text-align:center”>俄罗斯方块</span></td>
</tr>
<tr>
<td style=”height:20px;background-color:black;color:#00FF00;font-size:12px;”><table height=”20″ border=”0″ cellpadding=”0″ cellspacing=”0″>
<tr style=”font-size:12px; color:#FFFFFF”>
<td width=”100%”> <a style=”cursor:hand” onclick=”window.location.reload()”>开始(B)</a> <a style=”cursor:hand” onclick=”stop();”>暂停(P)</a> <a style=”cursor:hand” onclick=”restart();”>继续(C)</a></td>
</tr>
</table></td>
</tr>
<tr>
<td style=”height:20px;background-color:black;color:#00FF00;font-size:12px;” id=”msg”> 等级:0;得分:0</td>
</tr>
<tr>
<td height=”20″>
<script language=javascript>
maintable.style.width=(wnum+1)*20;
startGame();
</script>
</td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注