<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>pzg&#039;s blog &#187; 俄罗斯方块</title>
	<atom:link href="http://pzg.me/tag/%e4%bf%84%e7%bd%97%e6%96%af%e6%96%b9%e5%9d%97/feed/" rel="self" type="application/rss+xml" />
	<link>http://pzg.me</link>
	<description>苦了一辈子，一路走好</description>
	<lastBuildDate>Thu, 26 Apr 2012 08:13:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>俄罗斯方块25周年</title>
		<link>http://pzg.me/game/448/25th-anniversary-of-the-russian-box/</link>
		<comments>http://pzg.me/game/448/25th-anniversary-of-the-russian-box/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 23:53:46 +0000</pubDate>
		<dc:creator>countmeon</dc:creator>
				<category><![CDATA[游戏世界]]></category>
		<category><![CDATA[俄罗斯方块]]></category>

		<guid isPermaLink="false">http://pzg.me/?p=448</guid>
		<description><![CDATA[1984年6月，在俄罗斯科学院计算机中心工作的数学家帕基特诺夫利用空闲时间编出一个游戏程序，用来测试当时一种计算机的性能。帕基特诺夫爱玩拼图，从拼图游戏里得到灵感，设计出了俄罗... ]]></description>
			<content:encoded><![CDATA[<p>1984年6月，在俄罗斯科学院计算机中心工作的数学家帕基特诺夫利用空闲时间编出一个游戏程序，用来测试当时一种计算机的性能。帕基特诺夫爱玩拼图，从拼图游戏里得到灵感，设计出了俄罗斯方块。1985年，他把这个程序移植到个人电脑上，俄罗斯方块从此开始传播开来。</p>
<p>1988年，罗杰斯在美国拉斯韦加斯的一个展览上看到了俄罗斯方块，觉得非常好玩，并且发现他问到的人也都喜欢玩。作为一个生于荷兰、在美国受教育、在日本从事视频游戏业的专业人士，罗杰斯立刻嗅到了巨大商机。他与日本游戏厂商任天堂达成口头协议，然后出发前往莫斯科。</p>
<p>帕基特诺夫把俄罗斯方块授权给了他工作的计算机中心，使其成为公有财产，所以罗杰斯面对的谈判对象是当时苏联政府的代表。谈判过程充满了文化、价值观和工作方式上的磨合，最终罗杰斯于1989年代表任天堂取得了俄罗斯方块在家用机上的授权。</p>
<p>罗杰斯与帕基特诺夫因这次谈判而相识，并且成了好朋友，这奠定了此后许多年中他们围绕俄罗斯方块进行密切合作的基础。</p>
<p>苏联解体后，帕基特诺夫在罗杰斯的帮助下移居美国，继续从事游戏开发。1996年，他拿回了俄罗斯方块的知识产权，与罗杰斯一起成立了蓝色行星软件公司，该公司独家代理俄罗斯方块向各游戏厂商授予版权的事务。</p>
<p>小 方块的魅力经久不衰。截至2009年，俄罗斯方块发售了1．25亿份，受到50多个国家和地区的玩家喜爱，有超过50种语言的版本，运行在几十种游戏平台 上，从掌机、街机、个人电脑，到手机和PDA。罗杰斯说，移动设备已经成为俄罗斯方块新的主要平台，该领域的发售量已超过7500万份，并且还在快速增 长。在俄罗斯方块网络版的北美和欧洲官方网站上，每天超过100万人次玩这个游戏。</p>
<p>俄 罗斯方块获得许多奖励，在多项评选中被评为最经典游戏之一。它还创造了一些世界纪录，比如它是在最多平台上运行的视频游戏，也是直接连累玩家坐牢时间最长 的游戏。2002年，一名过分沉迷的英国玩家不听机组人员的劝阻，在飞机上用手机玩俄罗斯方块，结果被判刑入狱4个月。</p>
<p>俄 罗斯方块成功的奥妙在哪里？它的创造者帕基特诺夫认为，可能在于这个游戏非常简单，而且拼图的过程有“从混乱中寻找秩序”的成就感。罗杰斯则说，俄罗斯方 块是一个建设性的游戏，这一点与中国的围棋相似，“国际象棋就是杀杀杀，围棋则重视构建领地，是建设性的，俄罗斯方块也是”。</p>
<p>25 年过去了，电脑业和电子游戏业都发生了巨大变化，拥有华丽画面、震撼音效和丰富剧情的大型游戏包括网络游戏纷纷出现，开辟并占据了新的市场。俄罗斯方块这 样的游戏还有前途吗？帕基特诺夫认为还很有前途。他说，俄罗斯方块是一个休闲游戏，它面对的是那些没有精力或兴趣玩大型游戏的玩家，这些人需要一类简单好 玩的游戏，拿起来就能进入状态，在忙碌的生活中寻求片刻放松。</p>
<p>帕基特诺夫表示，将对俄罗斯方块进行改进，使人们能够更容易从中获得休闲乐趣。罗杰斯说，今后的努力方向包括发展俄罗斯方块的竞技性，开发能够适应玩家特点的“智能”俄罗斯方块，并使来自世界各地、说不同语言的人们能够一起娱乐，通过这个游戏寻求共同点。</p>
<p>对于中国市场，罗杰斯说，他正在与中国腾讯公司商谈，研究将俄罗斯方块集成到即时通讯软件QQ中去的事宜。他还将参加今年7月份举行的中国国际数码互动娱乐展览会，与联众等中国游戏企业探讨合作前景。</p>
]]></content:encoded>
			<wfw:commentRss>http://pzg.me/game/448/25th-anniversary-of-the-russian-box/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>研究表明俄罗斯方块有助于排解忧愁（附HTML源代码）</title>
		<link>http://pzg.me/web/262/research-shows-that-russia-will-help-platoonbox-with-html-source-code/</link>
		<comments>http://pzg.me/web/262/research-shows-that-russia-will-help-platoonbox-with-html-source-code/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 04:55:08 +0000</pubDate>
		<dc:creator>countmeon</dc:creator>
				<category><![CDATA[网页设计]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[俄罗斯方块]]></category>
		<category><![CDATA[源代码]]></category>

		<guid isPermaLink="false">http://pzg.me/?p=262</guid>
		<description><![CDATA[俄罗斯方块我是玩的，排解忧愁不否认，不过这个游戏我玩多了晚上睡觉都会有方块的。 据香港《大公报》报道,遭受重大打击后,玩《俄罗斯方块》(Tetris)可以减低创伤后压力症的征状. 英国研... ]]></description>
			<content:encoded><![CDATA[<p>俄罗斯方块我是玩的，排解忧愁不否认，不过这个游戏我玩多了晚上睡觉都会有方块的。</p>
<p>据香港《大公报》报道,遭受重大打击后,玩《俄罗斯方块》(Tetris)可以减低创伤后压力症的征状.<br />
英国研究人员发现,遭受创伤后不久玩《俄罗斯方块》有助抹去痛苦记忆和减少不快的回忆突然重现的频率.这项发现可以帮助科学家找到新方法去治疗因为意外入 院或是从战区回来的人士.研究人员向40名健康的志愿人士展示不同来源的创伤性影像,包括突显醉酒驾驶的危机性的宣传海报,然后让其中20人玩了10分钟 的《俄罗斯方块》,而另一半人什么也没有做.研究人员发现,玩过游戏的人在接下来的一星期里,伤痛回忆突然重现的情况少得多.</p>
<p>负责领导这项研究的霍姆斯博士认为,俄罗斯方块有助阻止大脑贮存痛苦回忆,但必须是在事发后马上就玩.</p>
<p>研究人员解释,这是因为大脑分为两部分:一部分负责感官,另一部分负责分析.由于我们一心二用──例如一边跟人谈话一边解决数学问题──的能力有限,这种计算机游戏可以“干扰大脑保留记忆的方式”.</p>
<p>研究人员选择《俄罗斯方块》是因为它要求玩家将彩色的方块到处移动,能驱使大部分大脑参与活动.不过,他们不清楚其它计算机游戏是否同样有效.</p>
<p>霍姆斯说:“《俄罗斯方块》有效可能是因为它争夺大脑争取感官信息的资源.我们发现它明确地干预感官回忆在受到创伤后的时段被贮存下来的方式,从而减少了之后发生的回忆闪现的次数.”</p>
<p>另一位研究人员指出,事发后的6小时是关键:“以健康的志愿人士来说,在这个时间段内玩《俄罗斯方块》可以减少突现闪现式的回忆,而又不会影响理解那次事件的能力.”</p>
<p>以下附上HTML的俄罗斯方块源代码，和现在的应用程序比是很简陋的，不过也是很方便的。</p>
<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<br />
&lt;title&gt;俄罗斯方&lt;/title&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;style&gt;<br />
span.btn<br />
{<br />
BORDER-RIGHT: #7b9ebd 1px solid;<br />
PADDING-RIGHT: 2px;<br />
BORDER-TOP: #7b9ebd 1px solid;<br />
PADDING-LEFT: 2px;<br />
FONT-SIZE: 12px;<br />
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#cecfde);<br />
BORDER-LEFT: #7b9ebd 1px solid;<br />
COLOR: black;<br />
PADDING-TOP: 2px;<br />
BORDER-BOTTOM: #7b9ebd 1px solid;<br />
background-color: #CCCCCC;<br />
}<br />
&lt;/style&gt;<br />
&lt;script language="javascript"&gt;<br />
var doing;<br />
var candown=0;<br />
var wnum=13;<br />
var hnum=18;<br />
var grid=new Array();<br />
var gridBuf=new Array();<br />
for(i=0;i&lt;=hnum;i++){<br />
grid[i]=new Array();<br />
gridBuf[i]=new Array();<br />
for(j=0;j&lt;=wnum;j++){<br />
if(j&gt;0 &amp;&amp; j&lt;wnum &amp;&amp; i&lt;hnum){<br />
grid[i][j]=0;<br />
gridBuf[i][j]=0;<br />
}else{<br />
grid[i][j]=1;<br />
gridBuf[i][j]=1;<br />
}<br />
}<br />
}</p>
<p>var boxdata=<br />
[<br />
[<br />
[1,1,1,1],<br />
[0,0,0,0],<br />
[0,0,0,0],<br />
[0,0,0,0]<br />
],<br />
[<br />
[1,1,1,0],<br />
[1,0,0,0],<br />
[0,0,0,0],<br />
[0,0,0,0],</p>
<p>],<br />
[<br />
[1,1,1,0],<br />
[0,1,0,0],<br />
[0,0,0,0],<br />
[0,0,0,0]<br />
],<br />
[<br />
[1,1,1,0],<br />
[0,0,1,0],<br />
[0,0,0,0],<br />
[0,0,0,0]<br />
],<br />
[<br />
[1,1,0,0],<br />
[0,1,1,0],<br />
[0,0,0,0],<br />
[0,0,0,0]<br />
],<br />
[<br />
[0,1,1,0],<br />
[1,1,0,0],<br />
[0,0,0,0],<br />
[0,0,0,0]<br />
],<br />
[<br />
[1,1,0,0],<br />
[1,1,0,0],<br />
[0,0,0,0],<br />
[0,0,0,0]<br />
]<br />
];</p>
<p>var colors=["black","#A0A0A0","red","#FF8000","yellow","pink"];<br />
var gotLine=0;<br />
var box;<br />
var bGameOver=false;<br />
function getHeight(arr)<br />
{<br />
var i,j;<br />
for(i=3;i&gt;=0;i--)<br />
for(j=0;j&lt;4;j++)<br />
if(arr[i][j]) return i;<br />
}<br />
function getWidth(arr)<br />
{<br />
var i,j;<br />
for(i=3;i&gt;=0;i--)<br />
for(j=0;j&lt;4;j++)<br />
if(arr[j][i]) return i;<br />
}</p>
<p>function Box(x,y,arr,color)<br />
{<br />
this.arr=arr;<br />
this.x=x;<br />
this.y=y;<br />
this.w=getWidth(arr);<br />
this.h=getHeight(arr);<br />
this.color=color;<br />
this.active=true;</p>
<p>this.clearOldBox=function()<br />
{<br />
for(var j=0;j&lt;=this.h;j++)<br />
for(var i=0;i&lt;=this.w;i++)<br />
if(this.arr[j][i]&gt;0) grid[this.y+j][this.x+i]=0;<br />
}</p>
<p>this.putNewBox=function()<br />
{<br />
for(var j=0;j&lt;=this.h;j++)<br />
for(var i=0;i&lt;=this.w;i++)<br />
if(this.arr[j][i]&gt;0) grid[this.y+j][this.x+i]=this.color;</p>
<p>}</p>
<p>this.moveLeft=function()<br />
{<br />
this.clearOldBox();<br />
var _x=this.x-1;<br />
if(this.canMove(_x,this.y)) this.x=_x;<br />
this.putNewBox();<br />
drawGrid();<br />
}<br />
this.moveRight=function()<br />
{<br />
this.clearOldBox();<br />
var _x=this.x+1;<br />
if(this.canMove(_x,this.y)) this.x=_x;<br />
this.putNewBox();<br />
drawGrid();<br />
}</p>
<p>this.moveDown=function()<br />
{<br />
this.clearOldBox();</p>
<p>var _y=this.y+1;<br />
if(this.canMove(this.x,_y)){<br />
this.y=_y;<br />
this.putNewBox();<br />
drawGrid();</p>
<p>}else{<br />
this.putNewBox();<br />
drawGrid();<br />
checkLineFull();<br />
return;<br />
}</p>
<p>}</p>
<p>this.rotate=function()<br />
{<br />
var tmp=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]];<br />
for(j=0;j&lt;=this.h;j++)<br />
for(i=0;i&lt;=this.w;i++)<br />
tmp[this.w-i][j]=this.arr[j][i];<br />
var newBox=new Box(this.x,this.y,tmp,this.color);<br />
this.clearOldBox();<br />
if(! newBox.canMove(this.x,this.y)) this.putNewBox();<br />
else<br />
{<br />
box=newBox;<br />
box.putNewBox();<br />
drawGrid();<br />
}<br />
}<br />
this.canMove=function(x,y)<br />
{<br />
for(var j=0;j&lt;=this.h;j++)<br />
for(var i=0;i&lt;=this.w;i++)<br />
{<br />
if(grid[y+j][x+i]!=0 &amp;&amp; this.arr[j][i]!=0){ candown=1;return false; }<br />
}<br />
return true;<br />
}</p>
<p>}</p>
<p>function drawGrid()<br />
{<br />
for(var j=0;j&lt;hnum;j++)<br />
for(var i=0;i&lt;wnum;i++)<br />
{<br />
if( grid[j][i]!=gridBuf[j][i])<br />
{<br />
paintCell(j,i,grid[j][i]);<br />
}<br />
gridBuf[j][i]=grid[j][i];</p>
<p>}<br />
}</p>
<p>function paintCell(i,j,color)<br />
{<br />
var htmlGrid=document.getElementById("TetrisGrid").firstChild;<br />
htmlGrid.childNodes[i].childNodes[j].style.backgroundColor=colors[color];</p>
<p>}<br />
function init()<br />
{<br />
var html='&lt;table id="TetrisGrid" cellspacing=1 style="background-color:green"&gt;&lt;tbody&gt;';<br />
for(var i=0;i&lt;=hnum;i++)<br />
{<br />
html+='&lt;tr&gt;';<br />
for(var j=0;j&lt;=wnum;j++)<br />
{</p>
<p>html+='&lt;td width="20" height="20" style="background-color:'+colors[grid[i][j]]+';"&gt;&lt;/td&gt;';<br />
}<br />
html+='&lt;/tr&gt; \r\n';<br />
}<br />
html+='&lt;/tbody&gt;&lt;/table&gt;';<br />
document.write(html);</p>
<p>}</p>
<p>function checkLineFull()<br />
{<br />
var full,i,j,i2;<br />
var y3=box.y+box.h;<br />
var y4=box.y;<br />
for(i=y3;i&gt;=y4;)<br />
{<br />
full=1;<br />
for(j=0;j&lt;wnum;j++)<br />
if(grid[i][j]==0){full=0; break;}<br />
if(full==0){ --i; continue;}<br />
for(i2=i; i2&gt;0;i2--)<br />
for(j=0;j&lt;wnum;j++)<br />
grid[i2][j]=grid[i2-1][j];<br />
drawGrid();<br />
y4++;<br />
gotLine++;<br />
}<br />
checkGameOver();<br />
}</p>
<p>function checkGameOver()<br />
{<br />
var bOver=false;<br />
for(var j=1;j&lt;wnum;j++)<br />
if(grid[0][j]&gt;0){ bOver=true; break;}<br />
if(!bOver){<br />
box=new Box((wnum-1)/2,0,boxdata[Math.floor(Math.random()*7)],Math.floor(Math.random()*5)+1);<br />
box.putNewBox();<br />
}<br />
else<br />
{<br />
bGameOver=true;<br />
msg.innerHTML="游戏结束! 您的得分为"+gotLine*100;<br />
window.clearTimeout(doing);<br />
}<br />
}<br />
function document_onkeydown()<br />
{<br />
if(bGameOver) return;<br />
switch(event.keyCode)<br />
{<br />
case 32:<br />
down();<br />
break;<br />
case 37:<br />
box.moveLeft();<br />
break;<br />
case 39:<br />
box.moveRight();<br />
break;<br />
case 38:<br />
box.rotate();<br />
break;<br />
case 40:<br />
box.moveDown();<br />
break;<br />
case 80:<br />
stop();<br />
break;<br />
case 66:<br />
window.location.reload();<br />
break;<br />
case 67:<br />
restart();<br />
break;<br />
}<br />
}<br />
function down(){<br />
if(window.event.keyCode==32){<br />
clearTimeout(doing);<br />
for(i=0;i&lt;hnum;i++){<br />
if(candown==0){<br />
box.moveDown();<br />
}else{<br />
break;<br />
}<br />
}<br />
candown=0;<br />
doing=window.setTimeout('moveDownBox()',interval);<br />
}<br />
}<br />
var interval;<br />
function moveDownBox()<br />
{<br />
interval=1000-10*(gotLine&gt;80?80 :gotLine);<br />
msg.innerHTML=" 等级："+Math.floor(gotLine/10)+"；得分:"+gotLine*100;<br />
box.moveDown();<br />
doing=window.setTimeout('moveDownBox()',interval);<br />
}<br />
function startGame()<br />
{<br />
init();<br />
doing=window.setTimeout('moveDownBox()',1000);<br />
bGameOver=false;<br />
box=new Box((wnum-1)/2,0,boxdata[Math.floor(Math.random()*7)],Math.floor(Math.random()*5)+1);<br />
box.putNewBox();<br />
drawGrid();<br />
}<br />
var status;<br />
function stop(){<br />
status=1;<br />
window.clearTimeout(doing);<br />
}<br />
function restart(){<br />
if(status==1){<br />
status=0;<br />
doing=window.setTimeout('moveDownBox()',1000);<br />
}<br />
}<br />
function keydown(){<br />
if (document.all)document_onkeydown()<br />
}<br />
&lt;/script&gt;<br />
&lt;BODY onLoad="window.focus()" onkeydown="keydown()"&gt;<br />
&lt;table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0"&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;<br />
&lt;table id="maintable" border="0" align="center" cellpadding="0" cellspacing="0"&gt;<br />
&lt;tr&gt;<br />
&lt;td align="center"&gt;<br />
&lt;span class="btn" style="width:100%; height:24px;background-color:#F0C0C0;color:#0000FF;vertical-align:middle;text-align:center"&gt;俄罗斯方块&lt;/span&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td style="height:20px;background-color:black;color:#00FF00;font-size:12px;"&gt;&lt;table height="20" border="0" cellpadding="0" cellspacing="0"&gt;<br />
&lt;tr style="font-size:12px; color:#FFFFFF"&gt;<br />
&lt;td width="100%"&gt; &lt;a style="cursor:hand" onclick="window.location.reload()"&gt;开始（B）&lt;/a&gt; &lt;a style="cursor:hand" onclick="stop();"&gt;暂停（P）&lt;/a&gt; &lt;a style="cursor:hand" onclick="restart();"&gt;继续（C）&lt;/a&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td style="height:20px;background-color:black;color:#00FF00;font-size:12px;" id="msg"&gt; 等级：0；得分:0&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td height="20"&gt;<br />
&lt;script language=javascript&gt;<br />
maintable.style.width=(wnum+1)*20;<br />
startGame();<br />
&lt;/script&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://pzg.me/web/262/research-shows-that-russia-will-help-platoonbox-with-html-source-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

