English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
為Tetris
Colin Fahey

1. 軟件

StandardTetris_2007June4.zip
Tetris的源代碼( C#和C++版本)和計劃( “exe” ) ;
4068277 字節
MD5: 4e957e0ead66064183e9f7e04e618ec0

2. 導言

本文介紹如何在電腦上可以發揮的經典視頻遊戲Tetris的,由獲取信息的有關董事會,確定好行動,並執行這些行動。
本文包括軟件能夠發揮在Tetris的實時性。
該軟件包括最佳實時Tetris的公平算法在公共領域。
本文定義的規則“Tetris的標準” ,規格在原有基礎上1986預商用版的Tetris的用於個人電腦(PC) 。
在2003 ,該軟件包括在這條被用來使電腦播放Tetris的運行在一個單獨的計算機。
一個普通的USB攝像機被用來使電腦, “看看”屏幕上的其他計算機。
繼電器控制董事會通過一RS-232界面,使電腦“按鍵”鍵盤上的其他計算機。
因此,第一台計算機上有一個關係到第二台計算機上是類似一個典型的人類球員的關係提高到一個電腦當播放Tetris的;遊戲狀態是唯一已知的看屏幕上,播放器的行動,只能發起的通過鍵盤。
配置在這方面的示範成立一個電腦可以發揮Tetris的總比一個人,在正常的實時時間Tetris的公平條件。

3. 歷史為Tetris

在1985 , Alexey Pajitnov和Dmitry Pavlovsky被電腦工程師在Computing Center of the Russian Academy of Sciences 。
computer_center_russian_academy_of_sciences.jpg
Dorodnicyn Computing Centre的Russian Academy of Sciences
http://www.ccas.ru
Alexey和Dmitry有興趣的開發和銷售上癮的電腦遊戲。
他們測試了幾種不同的遊戲。
Alexey的啟發而古希臘的益智遊戲, Pentaminos ,其中涉及安排益智件製成的五平方。
Alexey思想的想法安排Pentamino件作為他們跌倒在一個矩形杯,但認識到,不同的5 12平方米的形狀過於複雜的一個視頻遊戲。
Alexey切換到使用7 “tetramino”件,每四個方陣。
在1985.6 , Alexey Pajitnov程序的第一版本的俄羅斯方塊就一Electronica 60 。
d_pavlovsky_and_a_pajitnov.jpg
Dmitry Pavlovsky , Alexey Pajitnov ,和俄羅斯方塊。
在1985-1986 , Vadim Gerasimov ,一名16歲的高學校的電腦神童誰,任職於中國科學院,實施Tetris的為IBM PC運行MS-DOS作業系統。
( Vadim Gerasimov後來的研究在MIT Media Laboratory ,從1994年到2003年,接受博士學位後,完成了許多有趣的項目: http://vadim.www.media.mit.edu
original_tetris_splash_screen02.jpg
引入屏幕的1987-1988預商用釋放Tetris的為PC
original_tetris_start_game02.jpg
該遊戲畫面的1987-1988預商用釋放Tetris的為PC
後1987 , Tetris的蔓延世界各地。
The Tetris Company, LLC ,擁有Tetris的商標。
www_tetris_com_site.jpg
The Tetris Company, LLC ,互聯網網站(因為它出現在2003 ) 。 http://www.tetris.com

4. 項目的啟發,為Tetris

4.1 0 -三維為Tetris

尚未制定。

4.2 一維為Tetris

Ziga Hajdukovic已開發1個三維Tetris的軟件可以發揮在一個互聯網瀏覽器。
tetris_1d_ziga_hajdukovic.jpg
一維Tetris的由Ziga Hajdukovic http://www.tetris1d.org
Ziga Hajdukovic還開發了一維Tetris的手機軟件使用Java J2ME平台。
(說明: http://www.tetris1d.org/mobile.php ; WAP下載: http://www.tetris1d.org/wap

4.3 2維為Tetris

所有常規Tetris的變種是在這一類。
本節包含了有趣的變種。

4.3.1 最大的Tetris的遊戲以往任何時候都: Delft University of Technology (1995)

delft_univ_1995_2000sqmeters_tetris1.gif
Tetris的發揮對建築物; 2000 m^2表面積; Delft University of Technology (1995)
delft_univ_1995_2000sqmeters_toveren.jpg
Tetris的發揮對建築物; 2000 m^2表面積; Delft University of Technology (1995)

4.3.2 另一Tetris的遊戲中發揮對建築物: Brown University (2000)

brown_university_bastille_tetris_tetris_game_square.jpg
Tetris的遊戲顯示燈的使用,在Windows的一個大廈Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
brown_university_bastille_tetris_woz_play.jpg
Steve Wozniak ,創始人之一的Apple Computers ,玩Tetris的; Brown University (2000) http://bastilleweb.techhouse.org
我認為這只不過是最不可思議的一次為期一天的事,我能想像在我的生活。像史蒂夫喬布斯總是說,旅程是回報。
它使我覺得項目的,我們沒有回在高校。事情幾乎撤消,其他人不會認為這樣做。
Steve Wozniak (2000)

4.3.3 網際網路瀏覽器的遊戲與MIT “綠色建築”形象

tetris_vadim_green_building3.jpg
Vadim Gerisimov's的網際網路瀏覽器為Tetris
http://vadim.www.media.mit.edu/games/gbt.html
這一網際網路瀏覽器的Tetris的變異造成的Vadim Gerasimov 。
這一網際網路瀏覽器的Tetris的特點“Green”建設,在校園MIT 。
這Tetris的變異,不但九欄而不是標準的10列。
這Tetris的變異介紹了新的作品與隨機取向。
Vadim Gerasimov是人誰寫電腦程式碼為PC版的Tetris的在1986 。
Vadim Gerasimov沒有博士學位研究在MIT Media Laboratory期間1994-2003 ,工作對很多有趣的項目。

4.3.4 PIC16F84 12 MHz基於微控制器NTSC / PAL視頻Tetris的遊戲

tetris_pic_television_screen.jpg
PIC16F84 12 MHz基於微控制器NTSC / PAL視頻Tetris的遊戲
http://www.pablin.com.ar/electron/circuito/mc/tetris
上圖中顯示NTSC / PAL視頻輸出所產生的一PIC16F84 12 MHz微控制器運行軟件寫的Rickard Gunee在1998 。
視頻信號是由軟件控制的數字輸出。
其他PIC項目: http://etronics.free.fr/liens5.htm

4.3.5 “scopetris”示波器Tetris的由Lars Pontoppidan (2007.8)

scopetris_lars_pontoppidan_2007_aug.jpg
“scopetris”示波器Tetris的由Lars Pontoppidan (2007.8)
http://pontoppidan.info/lars/index.php?proj=scopetris
Lars Pontoppidan寫代碼為AtMega32微控制器,並補充說:簡單的模擬電路,創造一個Tetris的版本可以發揮對示波器。
某些選民登記冊的AtMega32單片機控制的8位輸出信號,以及時通過一“R-2R”電器電阻電路的數位類比轉換(D/A) ,由此產生的模擬信號可以控制(x,y)坐標示波器束(當示波器是設置為“X-Y模式” ) 。
YouTube視頻:
http://www.youtube.com/watch?v=Hui5Azx5jQo
FLV視頻:
scopetris_lars_pontoppidan_2007_aug.flv

4.3.6 模糊代碼為Tetris : C / Unix

以下被授予“1989 IOCCC Best Game” 。
long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K
=0,i=276,j,k,q[276],Q[276],*n=q,*m,x=17,f[]={7,-13,-12,1,8,-11,-12,-1,9,-1,1,
12,3,-13,-12,-1,12,-1,11,1,15,-1,13,1,18,-1,1,2,0,-12,-1,11,1,-12,1,13,10,-12,
1,12,11,-12,-1,1,2,-12,-1,12,13,-12,12,13,14,-11,-1,1,4,-13,-12,12,16,-11,-12,
12,17,-13,1,-1,5,-12,12,11,6,-12,12,24};u(){for(i=11;++i<264;)if((k=q[i])-Q[i]
){Q[i]=k;if(i-++I¦¦i%12<1)printf("\033[%d;%dH",(I=i)/12,i%12*2+28);printf(
"\033[%dm  "+(K-k?0:5),k);K=k;}Q[263]=c=getchar();}G(b){for(i=4;i--;)if(q[i?b+
n[i]:b])return 0;return 1;}g(b){for(i=4;i--;q[i?x+n[i]:x]=b);}main(C,V,a)char*
*V,*a;{h[3]=1000000/(l=C>1?atoi(V[1]):2);for(a=C>2?V[2]:"jkl pq";i;i--)*n++=i<
25¦¦i%12<2?7:0;srand(getpid());system("stty cbreak -echo stop u");sigvec(14,v,
0);t();puts("\033[H\033[J");for(n=f+rand()%7*4;;g(7),u(),g(0)){if(c<0){if(G(x+
12))x+=12;else{g(7);++w;for(j=0;j<252;j=12*(j/12+1))for(;q[++j];)if(j%12==10){
for(;j%12;q[j--]=0);u();for(;--j;q[j+12]=q[j]);u();}n=f+rand()%7*4;G(x=17)¦¦(c
=a[5]);}}if(c==*a)G(--x)¦¦++x;if(c==a[1])n=f+4**(m=n),G(x)¦¦(n=m);if(c==a[2])G
(++x)¦¦--x;if(c==a[3])for(;G(x+12);++w)x+=12;if(c==a[4]¦¦c==a[5]){s=sigblock(
8192);printf("\033[H\033[J\033[0m%d\n",w);if(c==a[5])break;for(j=264;j--;Q[j]=
0);while(getchar()-a[4]);puts("\033[H\033[J\033[7m");sigsetmask(s);}}d=popen(
"stty -cbreak echo stop \023;sort -mnr -o HI - HI;cat HI","w");fprintf(d,
"%4d from level %1d by %s\n",w,l,getlogin());pclose(d);}
參考: http://homepages.cwi.nl/~tromp/tetris.html

4.3.7 模糊代碼為Tetris : Perl代碼

以下是Tetris的為Perl翻譯: Perltris (版本20050717 ) Sean Adams 。
#!/usr/bin/perl

$_='A=15; B=30; select(stdin); $¦=1; select(stdout);$¦=1; system
"stty -echo -icanon eol \001"; for C(split(/\s/,"010.010.010.010
77.77 022.020.020 330.030.030 440.044.000 055.550.000 666.060.".
"000")){D=0;for E(split(/\./,C)){F=0;for G(split("",E)){C[P][F++
][D]=G} D++}J[P]=F; I[P++] =D}%L=split(/ /,"m _".chr(72)." c 2".
chr(74)." a _m");sub a{for K(split(/ /,shift)){(K,L)=split(/=/,K
);K=L{K};K=~s/_/L/; printf "%c[K",27}}sub u{a("a=40");for D(0..B
-1){for F(0..A-1){M=G[F][D];if(R[F][D]!=M) {R[F][D]=M;a("m"."=".
(5+D).";".(F*2+5)); a("a=".(40+M).";" .(30+M));print " "x2}}}a(
"m=0;0 a=37;40")}sub r{(N)=@_;while(N--) {Q=W;W=O=H;H=Q;for F( 0
..Q-1){for D(0..O-1) {Q[F][D]=K[F][D]}}for F(0..O-1){for D(0..Q-
1){K[F][D]= Q[Q-D-1][F]}}}}sub l{for F(0..W-1){for D(0..H-1){(K[
F][D]&& ((G[X+F][Y+D])¦¦ (X+F<0)¦¦(X+F>=A)¦¦ (Y+D>=B)))&& return
0}}1}sub p{for F(0..W-1){for D(0..H-1){(K[F][D]>0)&&(G[X+F][Y+D]
=K[F][D]) }}1}sub o{for F(0..W-1){for D(0..H-1){(K[F][D]>0)&&(G[
X+F][ Y+D]=0)}}}sub n{C=int(rand(P)) ;W=J[C];H=I[C];X=int(A/2)-1
;Y=0;for F(0..W-1){for D(0..H-1){K[F][D]= C[C][F][D]}}r(int(rand
(4)));l&&p}sub c{d:for(D=B;D>=0;D--){for F(0..A-1){G[F][D]¦¦next
d}for(D2=D;D2>=0; D2--){for F(0..A-1){G[F][D2]= (D2>1)?G[F][D2-1
]:0; }}u;}}a ("m=0;0 a=0;37;40 c");print "\n\n".4x" "." "x(A-4).
"perltris\n".(" "x4)."--"xA."\n".((" "x3)."¦"." "x(A*2)."¦\n")xB
.(" "x4). "--"xA."\n";n;for(;;) {u;R=chr(1); (S,T)=select(R,U,V,
0.01);if(S) {Z=getc;}else {if($e++>20){Z=" ";$e=0;}else{next;} }
if(Z eq "k"){o;r(1);l¦¦r(3);p}; if(Z eq "j"){o;X--;l¦¦X++;p}; if
(Z eq "l"){o;X++;l¦¦X--;p};if(Z eq " "){o;Y++;(E=l)¦¦Y--;p;E¦¦ c
¦c¦c¦c¦c¦n¦¦goto g;};if(Z eq "q"){last;}}g: a("a=0 m=".(B+8).";0
" ); system "stty sane"; '; s/([A-Z])/\$$1/g; s/\%\$/\%/g; eval;
參考: http://www.seanadams.com/perltris

4.3.8 Mozilla SVG為Tetris

Scalable Vector Graphics (SVG)是一個標準的描述圖形對象使用XML 。
tetris_svg_640x480.gif
Mozilla SVG Tetris的: Tetris的實施使用Scalable Vector Graphics (SVG)說明
http://www.croczilla.com/svg/samples/svgtetris/svgtetris.svg
其他的例子SVG : http://www.croczilla.com/svg/samples

4.3.9 Google “widget”為Tetris

Google , Yahoo! , Microsoft ,和其他公司,促進了微型基於互聯網的軟件名為“widgets”表示,通常是由一些使用動態數據在互聯網上提供。
這樣一個widget可通過Google是一個Tetris的遊戲。
下面的例子是可愛的,但形狀旋轉,在惱人的方法:
tetris_google_widget.gif
Google “widget”為Tetris
http://www.playbie.com/Game.aspx?gm=1&wt=2&su=live.com&sn=Google&gn=Google
其他Google widgets :
http://www.google.com/ig/directory?synd=open

4.3.10 MIT研究論文: “Tetris is Hard, Even to Approximate” (2002)

下列文件載有研究證明某種Tetris的變異是“NP完成” 。
http://theory.csail.mit.edu/~edemaine/papers/Tetris_TR2002
Erik D.  Demaine , Susan Hohenberger , David Liben-Nowell , “Tetris is Hard, Even to Approximate” , Technical Report MIT-LCS-TR-865 , Massachusetts Institute of Technology , 2002.10.21 。
本地緩存副本(PDF) : tetris_theory_mit_lcs_tr_865_0210020.pdf
“NP完成”是一個分類的時間成本和空間成本的一種算法。
其他分類包括“P”和“NP” 。
分類“NP完成”意味著,為問題大於一些體積小,該算法是不可能找到一個理想的解決方案在實際所需的時間或空間。

4.3.11 研究文件: “Applying reinforcement learning to Tetris”

下列文件,發表了2005.5.30 ,由Donald Carr在計算機科學系在Rhodes University ,南非,介紹了應用“的強化學習” ,以Tetris的。
ApplyingReinforcementLearningToTetris_DonaldCarr_RU_AC_ZA.pdf

4.3.12 Tetris的裙子(2007.11)

tetris_skirt.jpg
Tetris的裙子(2007.11)
該Tetris的裙子是由“Lucy” ( “hissyfitoly”對etsy.com )前2007.11 。
從創作者的描述裙(要約出售就etsy.com ) :
"Okay, so I was a secret, closet Tetris fanatic from about, oh, 1993 to 1996. It was a bitter-sweet obsession. My life wasn't so great, but I could control the stacking of a few measly blocks, [damn it]! Or could I? Video games have been coming back to haunt my dreams as of late, and I find myself stacking blocks, jumping away from a frighteningly-large Q*Bert, and slipping off of logs next to a pixellated frog. This skirt is the result of those nightmares."
論壇的意見,這方面的裙子:
“男子說,裙sucks為在為Tetris”
“ahahahaha ,我以為同樣的事情。”
“有一個完整的線下行在底部...完成線消失。” “做” “。”
“應該有一個點在後面或前面的地方,只要將作品完美地...”
“這真是一個醜陋的裙子,雖然。我男朋友無法購買我足夠的巧克力和鮮花,以說服我穿那個東西。”

4.3.13 Tetris的階段,法(2007.4)

tetris_stage_act.jpg
Tetris的階段,法(2007.4)
http://www.youtube.com/watch?v=sZrs8ZCO8xM
“從那些給你們帶來了Triforce在2006 ...談到下一代的無生命的物體skit ...  Tetris的。”
本地緩存的視頻在Flash視頻(FLV)格式(使用VLC發揮) :
tetris_stage_act.flv

4.3.14 搞笑Tetris的變化對日本的電視節目

tetris_funny_variations_japanese_tv.jpg
Tetris的變化對日本電視節目
http://www.youtube.com/watch?v=SYRLTF71Sow
這部影片部分從日本的電視節目,包括搞笑的變化Tetris的,其中包括:
作品消失後,登陸,一塊填滿整個行(從而完成了一排後,降落) ,多件下降的同時,異型件,長期件是略過於廣泛,以適應差距(防止四排完成! ) , Mario打蘑菇,並成為巨大的生死! ,小塊碎片後,其餘的行被摧毀,向上的嚴重性,使件浮法至上方,等等。
本地緩存的視頻在Flash視頻(FLV)格式(使用VLC發揮) :
tetris_funny_variations_japanese_tv.flv

4.3.15 “The Original Human TETRIS Performance by Guillaume Reymond” (2007.11)

tetris_with_human_blocks_guillaume_reymond_2007nov.jpg
“The Original Human TETRIS Performance by Guillaume Reymond” (2007.11)
http://www.youtube.com/watch?v=G0LtUX_6IXY
從描述上YouTube :
“TETRIS所扮演的真正的人為本,坐在一禮堂:”
TETRIS是第四視頻性能的GAME OVER Project ,指示由瑞士藝術家Guillaume REYMOND ( NOTsoNOISY創意機構) 。
這個一站式的議案,視頻遭到槍擊,並發揮為“LES URBAINES”節http://www.urbaines.ch宮舉行的德rumine (洛桑,瑞士)對November 24th 2007 。
您可以找到更多的資料和也SPACE INVADERS , PONG和POLE POSITION在我們的網站上http://www.notsonoisy.com/gameover
本地緩存的視頻在Flash視頻(FLV)格式(使用VLC發揮) :
tetris_with_human_blocks_guillaume_reymond_2007nov.flv

4.3.16 2.5三維為Tetris

任期“2.5三維”用在這裡是指非正交鑑於有兩維版本的俄羅斯方塊,與一些厚度在第三個層面。
tetris_2andhalfd_andre_michelle.jpg
Andre Michelle's Tetris的遊戲為Flash播放器http://lab.andre-michelle.com
(找到鏈接“tetris3d”在“F7: GAMES” ) 。

4.4 3維為Tetris

tetris_3d_gno3dtet_seb.jpg
Linux / GTK版本
三維立體Tetris的,在形式的Java Applet的互聯網瀏覽器:
http://paperstack.com/brokout
三維立體Tetris的為Windows作業系統:
http://www.sfu.ca/~vwchu/3dtetris.html

4.5 4 -三維為Tetris

4d_tetris.jpg
Greg Kaiser's “hypertetris” (1996) : 4 -三維為Tetris
在[1996], [...] , Greg Kaiser放在一起四年的三維變對經典遊戲。
使用IrisGL (a.k.a.  igl)他創造了一個工作小組,如果難以發揮,遊戲用4個分屏幕上描繪出不同的三維立體方面的整個遊戲空間。
[由於]是不是一個很容易[理解]的方式提請4三維物體上一兩個三維畫面中,四個小組的意見,是一種實用方法操縱和可視化的旋轉和翻譯的作品通過四個層面(在遊戲中所謂的x,y,z,w ) 。
而非完成線大廈作為在原來的,目標在這種情況下,以填補一個完整的立方體,在x,y,z subview (通常為4 4 4 ) 。
其他subviews含有“w”維安排在一個預設的4 4 10座的安排,與“w”被長期, “vertical”維在所有這三個個案中,與不同的基地(x,y), (x,z), (y,z) 。
重力的行為,在“-w”方向,所以件“摔倒”在這三個長期subviews ,包括“w” ,不要移動,除非由播放器的控制,在過去(x,y,z) subview 。
它需要一段時間才習慣使用,至少可以這樣說。
如果一些奇蹟的耐性,或改變的參數遊戲,一不完整的立方體,它將會消失,作為完成線在原來的Tetris的,雖然沒有評分是存放在HyperTetris 。
Benjamin Bernard (2000)
http://archive.ncsa.uiuc.edu/Classes/MATH198/bernard/oldIndex.html

4.6 N三維為Tetris

polytope_tetris_screenshot3.jpg
Polytope Tetris (2003) : 1 N三維Tetris的遊戲變
http://polytopetetris.sourceforge.net
Polytope Tetris是n三維Tetris的。
靈感源於HyperTetris計劃, Polytope Tetris讓您噸Tetris的發揮在任何人數層面。
發揮Tetris的在3D , 4D , 5D ,或更多。
HyperTetris是一個catchier名稱比Polytope (高清) Tetris的,但我不能竊取的名稱。
http://polytopetetris.sourceforge.net

5. “Tetris的標準”規格

5.1 導言

的定義, “標準為Tetris”是一個理想化的模型,最重要的特徵和行為的第一IBM-PC執行該Tetris的遊戲(大約1986-1988 ) 。
理想化模型是基於推斷明顯的意圖發展的第一IBM-PC執行該Tetris的遊戲。
舉例來說,似乎可以合理地推斷,開發商的第一IBM-PC執行該Tetris的遊戲擬選擇形狀,每一個新的下降,一塊“隨機” ,並使用該Borland C執行該rand()功能僅僅是一種實用的逼近意圖。
的定義, “標準為Tetris”指定的形狀每一個新的下降,一塊是要“隨機”挑選。
這個理想的行為不能取得任何的執行情況,但可以實現近似的理想行為。
雖然沒有實施,可以完全落實的定義, “標準Tetris的” ,理想“的標準為Tetris”涉及的客觀特徵,並實現比較,可以根據它們的相對接近的理想“標準Tetris的” 。
本節介紹了一套元素,行為和規則,其中,集體,界定“標準為Tetris” 。

5.2 標準Tetris的董事會

該委員會是一個網格的細胞,有10個欄目,和20列,共計10 * 20 = 200細胞。
tetris_diagram_board_10x20_empty_new.jpg
標準為Tetris局( 10個欄目, 20行)
每個細胞可以是空置的(空)或佔用(全額) 。

5.3 Tetris的標準件

有7 (7)標準Tetris的樂曲,具有下列信的名字:
{ O, I, S, Z, L, J, T }
這封信的名字靈感的形狀的作品。
tetris_diagram_pieces_orientations_new.jpg
七個標準Tetris的作品和他們的“取向”
點在(0,0) ,剛好與董事會的立場, (6,20)時,一塊第一次出現。
第一列顯示的初步“方向” 。
在下面的,字“的方向”是用來形容任何國家的一塊,一套允許各國,可導致從counterclockwise輪換的事件。
轉變的“方向,”從指定的“方向,”一“I” , “S” ,或“Z一塊” ,需要結合輪換和一個翻譯。
因此,這個詞“的方向”是用在這裡是指以上輪作。
不過, “方向”可以改變,只有在回答一個counterclockwise輪換的事件,和週期具有鮮明的“方向” ,每件接近,或火柴,週期導致從純粹的輪換。
特別一詞的使用“方向,”在這方面幾乎是相當於一詞的含義或“輪換的角度看” ,但這個詞“的方向”是用而不是“旋轉” ,企圖把注意一個事實,即一些作品需要更多的比旋轉產生一套允許各國所造成的counterclockwise “輪換”的事件。
件只能開關的方向(或經歷一個具體的橫向或縱向的翻譯) ,如果由此產生的國家的作品不會有任何被佔領(全額)細胞以外的地區委員會和不會有任何被佔領的細胞重疊,目前被佔領的任何細胞該委員會。
(在這條規則時,被佔領(全額)細胞的作品不被視為一部分, “目前被佔領的細胞董事會”
在下面的意見,任何參考的結果,一counterclockwise輪換的事件是與假設,這種輪換其實是可以執行的,由於現有條件的作品和董事會。
該“O” (框)一塊只有一個單一的方向,不會改變的地點,其任何被佔領(全額)細胞在回應任何counterclockwise輪換的事件。
該“I” (線)一塊有兩個可能的方向,最初出現在一個水平方向。
該“I”一塊候補兩國之間的取向在回應連續counterclockwise輪換的事件。
該“S”和“Z”件,每人有兩個可能的方向。
這些作品每候補之間的兩個方向,在回應連續counterclockwise輪換的事件。
該“L” , “J” , “T”件每人有四個可能的方向,這些方向是結果,簡單的輪換約中心點上的形狀。
當一塊首次出現的白板上,一塊有其“重大的軸”在一個水平方向,和一塊是首要的董事會。
因此,沒有件,最初能有自己的方向改變。作品必須下降,由一列有可能有其方向改變。
一旦一塊下降了一列對董事會,所有作品的方向,才能實現(假設一塊是不是太接近一側牆壁或到目前的樁件) 。

5.4 標準Tetris流程圖

以下是一種近似流程圖標準Tetris遊戲。
standard_tetris_flowchart_for_timer_event_001.gif
近似流程圖標準Tetris遊戲
standard_tetris_flowchart_for_input_events_001.gif
近似流程圖標準Tetris遊戲

5.5 標準Tetris作品創作

下面的圖表顯示( 4細胞* 2細胞)地區對董事會的所有作品出現時,創造的。
tetris_diagram_board_10x20_spawn_area.jpg
所在地區的作品出現時,創造了在標準Tetris
當一個新的作品首次出現在董事會,其產地,剛好與斑點就這個圖,和一塊將完全由所載的陰影區就這個圖。
當一個新的遊戲開始,全面免費下降拖延經過,並就第一項免費下降迭代一塊是促成在上方的董事會。
在正常的遊戲,當一個具體的自由屬於迭代“地”一塊,充分的自由屬於延遲經過和對未來的自由屬於迭代一塊是促成在上方的董事會。
當一塊是促成,類型的作品是選定使用以下算法:
pieceIndex = 1 + (randomInteger % 7);  // 1..7
因為有一個不斷p (= 1/7)的機會,選擇一種特定的一塊,所有件同類型是無法區分的,概率有,正是k件特定類型後, n審判如下1二項分佈:
P(k) = (1-p)^(n-k)  *  p^k  *  ( n! / ( (n-k)! k! ) );

  p  =  0.0   ...   1.0;
  k  =  0, 1, 2, ..., n;

mean                = ( n * p )
variance            = ( n * p *(1-p) )
standard deviation  = sqrt( variance )
當我們選擇從其中7 ( 7 )件隨機抽樣,概率獲得具體的一塊是p=(1/7)
如果我們這樣做n=70倍,舉例來說,概率越來越正是k件(與k在範圍0 ,以n )是由二項分佈,顯示在下面的形象。
binomial_distribution_n70_p7th.jpg
二項分佈為n=70p=(1/7)
因此,人可以預測的平均總件一個單一的類型給予總數的隨機件,其中還可以計算,預計方差和標準偏差(的平方根差額) :
p = (1/7):

total random                      standard
pieces (n)     mean    variance   deviation
============  =======  ========   =========
      70          10         8         3
     700         100        85         9
    7000        1000       857        29
   70000       10000      8571        93
當我們轉換一個隨機值一塊指數,我們將它解釋如下:
value  piece
=====  =====
  1     "O"
  2     "I"
  3     "S"
  4     "Z"
  5     "L"
  6     "J"
  7     "T"
[預商用MS-DOS版本的Tetris用隨機數函數所提供的Borland Pascal編譯器。
該功能使用了32位元的狀態變量。
因此,隨機數序列是有限的,以2^32獨特的價值觀。
因此,在原則上,一名球員可以發現,後下降,也許10枚,確切地點在一套2^32相對應的號碼現狀的遊戲。
如果Tetris模擬執行與固定序列2^32件,然後最優決策,可以發現每一個地方,在序列。
(似乎有足夠的機會,被董事會以一個完全空局國家,使我們能夠得到同步與precomputed最優解的路徑) 。
的風險,使用一個簡單的隨機數發生器在一個仿真打算找到一個最優解的一個問題是,該解決方案將優化只適用於特定的路徑,通過空間的問題,選定由簡單的隨機數發生器。 ]

5.6 標準Tetris的管制

遊戲的過程中,下列的投入,可用:
left   : request to translate left  by one column
right  : request to translate right by one column
rotate : request to do a counterclockwise rotation
drop   : request to instantly drop the piece
所有的投入,採取的影響上升前沿的積極投入, (對按鈕按下,作為反對按鈕釋放) 。
當按下一個按鈕,就會發生,這計數作為一個要求。
持有按鈕超過一定時間,可能會導致“自動重複”的特點,鍵盤,產生新的按鈕,壓力機-但這個功能是外部的遊戲引擎。
投入上述指定符合原來的Tetris的遊戲。
旋轉的要求能獲得執行,如果沒有相互重疊所期望的方向,並設置細胞對目前的董事會(不包括屬於一塊) ,如果想要的方向,沒有設置細胞以外的電路板面積。
翻譯的要求能獲得執行,如果沒有相互重疊所期望的翻譯配置和設置細胞對目前的董事會(不包括屬於一塊) ,如果想要翻譯的配置並沒有設定細胞以外的電路板面積。
投入的要求,是處理與延遲這取決於幀速率的遊戲(例如: 75 Hz ) ,並請生效(如果有效)即刻。
一塊可以下降,沒有任何線下降的步驟發生。
一塊可以翻譯多次向左邊或右邊,隨後下降,所有沒有經歷一場正式線下降的一步。
因為一個新衍生出一塊不可能旋轉(因為它是堅持反對的頂部邊緣城規會) ,球員必須接受至少一件下降的一步,如果輪換是可取的或要求。
該效應對評分是微不足道的。

5.7 標準Tetris的一塊“登陸”

如果一塊簡直是下降,這屬於一個單列在每一塊屬於迭代。
會有一個迭代移動,它從一個地方與沒有接觸與水平表面到一個地方,已與水平表面。一旦這個重複發生,件是在休息的聯繫。
如果一個迭代開始一塊在休息的聯繫與橫向從表面上看,這塊“土地” ,成為部分的靜態樁。

5.8 標準為Tetris “線完成”

一列完成,是一排樁,其中所有細胞都被佔領。當一個完成連續被淘汰,從樁,以及行以上的連續淘汰轉移下跌一列,以消除差距,這計數作為一個完成的“路線” 。
當一塊土地成為部分的樁。
後,立即一塊土地,樁是檢查完成行,所有已完成的行淘汰。
截至4行可以同時完成。
下表給出了上限,線路完成,同時由一個單件:
piece   max. simultaneous
         rows completed
=====   ==================
 "O"           2
 "I"           4
 "S"           2
 "Z"           2
 "L"           3
 "J"           3
 "T"           2

5.9 “各級”標準為Tetris

標準Tetris的有10個難度水平,編號1 (一)通過10 ( 10 ) ,與水平1正在“最少”的“困難” 。
水平指數是最高的兩個值:
actualLevel = max( initialLevel, earnedLevel );
initialLevel值是水平,球員選擇時,開始一個新的遊戲。
模式水平作為一個功能的完成線是很容易觀察到預商用MS-DOS版的Tetris的:
{ 0,  1,  2, ..., 10 }  --> earned level  1
{    11, 12, ..., 20 }  --> earned level  2
{    21, 22, ..., 30 }  --> earned level  3
{    31, 32, ..., 40 }  --> earned level  4
{    41, 42, ..., 50 }  --> earned level  5
{    51, 52, ..., 60 }  --> earned level  6
{    61, 62, ..., 70 }  --> earned level  7
{    71, 72, ..., 80 }  --> earned level  8
{    81, 82, ..., 90 }  --> earned level  9
{    91, ...         }  --> earned level 10
因此, earnedLevel值是計算按照以下算法:
if (linesCompleted <= 0)
{
  earnedLevel = 1;
}
else if ((linesCompleted >= 1) && (linesCompleted <= 90))
{
  earnedLevel = 1 + ((linesCompleted - 1) / 10);
}
else if (linesCompleted >= 91)
{
  earnedLevel = 10;
}

5.10 標準Tetris的下降迭代延誤

Tetris的標準有一個實時時間延遲之間的連續線免費下降迭代這是一個功能,目前的難易程度。
以下之間的關係水平指數下降迭代延誤是基於對重複秒錶測量各個層面的預商用MS-DOS版的Tetris的。
actualLevel      iterationDelay [seconds]
                (rounded to nearest 0.05)
============    =========================
     1                 0.50
     2                 0.45
     3                 0.40
     4                 0.35
     5                 0.30
     6                 0.25
     7                 0.20
     8                 0.15
     9                 0.10
    10                 0.05
因此,我們建立下列公式為迭代延誤的價值作為一個功能的實際水平指數:
iterationDelay = ((11 - actualLevel) * 0.05);  // [seconds]
如果董事會是空的,並沒有用戶輸入,產生了一塊在實際水平1地在大約10秒,並衍生出一條在實際水平10地在大約1秒。

5.11 “評分”標準為Tetris

Tetris的唯一標準,獎分的行為登陸一塊。
有沒有點,批出該法完成一個單一的路線,或完成二,三個或四個線同時進行。
[注:有些變種Tetris的獎分,該法完成線,與1的指數增加獎金為越來越多的同時完成線。
因此,戰略,最大限度地評分在這種變種Tetris的涉及成立的機會, “得到Tetris” ,俚語使用“I”形狀獲得四同步線和獲得大量的點。 ]
如果你有一個空局,你讓一個非“I”一塊做一個自由的下降和土地,或者您立即下降,非“I”一塊,您可以建立以下點圖表使用預商用MS-DOS版的Tetris的:
actualLevel   free-fall   instant-drop
                points       points
===========   =========   ============
     1             6           24
     2             9           27
     3            12           30
     4            15           33
     5            18           36
     6            21           39
     7            24           42
     8            27           45
     9            30           48
    10            33           51
unrotated ,非“I”件屬於共有18行。
此帳戶為點之間的差額免費下降和即時壓降案件。
由試點中間案件是很容易推斷點以下公式:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
請注意,這個公式完全沒有與距離一條瀑布!
這是從嚴治黨的一項功能的實際水平,以及刑罰為迭代次數一塊是允許屬於自由。
這懲罰的使用者需要時間思考。
也請注意,因為一塊不能最初旋轉時,它首先會產生,一名球員被處以至少有一個免費的下降迭代,如果輪換需要的地方,一塊在樁。
這大概不會影響人類的球員,除非他們在某種程度上:承認一塊,按翻譯鍵( “左”或“右” ) ,按下“旋轉”的關鍵一次或更多次,並按下“下拉”的關鍵,所有在不到0.5秒級1 ,或少於0.05秒級10 。

6. 標準Tetris的策略

6.1 導言

戰略上玩遊戲,就看遊戲規則。
一策略取決於哪一個參數是要優化。
在標準Tetris的,一賴以生存的完成行,得到點降落件,和得分點,最有可能,每件執行下降之前,一個或多個免費下降迭代transpire 。
1 A.I.可以優化點獎勵,每件只需決定對此舉迅速而“緊迫的關鍵在於”執行。
更重要的一A.I.是生存,因為無限期的生存手段,任意高分數可以達到。因為Tetris的件屬於在某一特定率, A.I.必須作出決定,至少這個快速發展-和x azd必須作出的舉動,完成行率的平均值至少1行每2 .5件。 (每一塊有4個細胞,每一列有10個細胞) 。
當然,一可以推遲完成行積累了件和建設的一個大樁,但也有只有200個細胞,對整個委員會,該委員會在原則上只能舉行50件,因此任何播放器(如1 A.I. )必須完成線一個基本優先事項。
在標準的俄羅斯方塊,遊戲狀態,包括當前董事會的佔領和目前的下降作品(類型,位置和方向) 。遊戲狀態可能選擇,包括“未來的作品” 。

6.2 1交替序列的“ S ”和“ Z ”件

Heidi Burgiel ,博士研究生的Department of Mathematics, Statistics and Computer Science在University of Illinois at Chicago ,證明交替序列的“ S ”和“ Z ”件將迫使標準( 10 -列, 20列) Tetris的遊戲結束在一個可預見的數目的舉動。
http://www.math.uic.edu/~burgiel/Tetris/explanation.html
引述文章: “ You can't win a game in which only alternating 'S' and 'Z' pieces appear.  ”
印刷相關文章: Mathematical Gazette , 1997年7月, “ How to Lose at Tetris ”
Heidi Burgiel提供了一個Java applet運行在一個互聯網瀏覽器的特點是改變了Tetris的克隆即會產生交替“ S ”和“ Z ”成碎片。
http://www.math.uic.edu/~burgiel/Tetris
[ “標準Tetris的”軟件相關的文件您正在閱讀也有一個模式,會產生交替“ S ”和“ Z ”成碎片。 ]
Heidi Burgiel聲稱遊戲涉及交替“ S ”和“ Z ”件(一個標準的Tetris的董事會10列和20列