テトリス
Colin Fahey
1. ソフトウェア
2. はじめに
この記事は、コンピュータで再生する方法について説明し、クラシックのビデオゲームテトリス委員会で就学許可証の情報を参照するには、良い行動を決定し、これらの操作を実行します。
この記事はソフトウェアが含まれてテトリスをリアルタイムで再生可能です。
本ソフトウェアには、最高のReal - Timeとテトリス-再生アルゴリズムをパブリックドメインです。
この記事のルールを定義する「標準テトリス」は、仕様書に基づいて、元の1986事前に商用のバージョンのテトリスは、パーソナルコンピュータ(PC)です。
で2003では、ソフトウェアに含まれて使用されるこの記事は、コンピュータを有効にするにテトリスを再生する別のコンピュータ上で実行されています。
平凡なUSBビデオカメラを使用してコンピュータを有効にして、他のコンピュータの画面を「参照」してください。
委員会は、リレーを有効にするインターフェイスを介して制御するRS-232 「キー」を「押し」て、コンピュータのキーボードの上に、ほかのコンピュータです。
従って、最初のコンピュータには、 2番目の関係をコンピュータでは、典型的な人間のようにしてコンピュータのプレイヤーとの関係を再生するときはテトリスし、ゲームの状態が知られて見ているだけの画面、およびプレイヤーの行動は、キーボードを介してのみで開始です。
このデモの構成を確立してコンピュータで再生テトリスよりましだ人間は、 Real - Timeとテトリス演奏されて通常の条件です。
3. の歴史をテトリス
で1985 、コンピュータエンジニアがAlexey PajitnovとDmitry Pavlovskyは、 Computing Center of the Russian Academy of Sciencesです。

Dorodnicyn Computing Centreは、 Russian Academy of Sciences
Dmitryに興味がありました。 Alexeyと病みつきにコンピューターゲームを開発販売を行っています。
彼らのテストするいくつかの異なるゲームです。
触発されたAlexeyは、古代ギリシャのパズルゲーム、 Pentaminos 、パズルに関わる作品は5つの正方形の手配します。
Alexeyの手配を考えると、アイデアを作品としてPentamino下落して彼らには長方形のカップ、しかし実感しては、 12平方形の異なる5つのビデオゲームがあまりにも複雑なためです。
7 「tetramino」作品Alexeyに切り替えて使用して、各製の4つの正方形です。
で1985.6 、 Alexey Pajitnovプログラム上での最初のバージョンのテトリスElectronica 60です。

Dmitry Pavlovsky 、 Alexey Pajitnov 、およびテトリスです。
で1985-1986 、 Vadim Gerasimovは、 16歳の高校生のコンピュータの天才アカデミーwho勤務して、実装をIBM PCテトリスMS-DOSオペレーティングシステムを実行している。

1987-1988の導入の画面ではプレリリースのテトリスを商業PC

ゲームのプレイ画面で1987-1988のプレリリーステトリスを商業PC
1987した後、地球の周りに広がるテトリスです。
The Tetris Company, LLC 、所有してテトリス商標です。
4. プロジェクト触発さテトリス
4.1 0次元テトリス
まだ開発された。
4.2 1次元テトリス
Ziga Hajdukovicは1次元のテトリス開発が可能なソフトウェアを、インターネットブラウザで再生される。
1次元Ziga Hajdukovicテトリスも開発し、携帯電話用ソフトウェアプラットフォームを使用してJava J2MEです。
4.3 2次元テトリス
すべての従来のテトリスの亜種がこのカテゴリにします。
このセクションで興味深いの亜種が含まれています。
4.3.1 最大のゲームまでテトリス: Delft University of Technology (1995)

テトリスプレイは、建物; 2000 m^2表面積; Delft University of Technology (1995)

テトリスプレイは、建物; 2000 m^2表面積; Delft University of Technology (1995)
4.3.2 別のテトリスゲームのプレイは、建物: Brown University (2000)

テトリスを使用してゲームを表示するには、 Windowsのライトの建物Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
「と思うことはほとんど信じられない一日だけで私が想像する私の人生のことです。スティーブジョブいつものようによると、この旅は、報酬を要求します。」
「それは私考えるプロジェクトに我々は先頭で大学に入学した。 undoできることはほとんど他の人々が考えることはない。」
Steve Wozniak (2000)
4.3.3 インターネットブラウザの試合でMIT 「グリーンビル」のイメージ

インターネットブラウザVadim Gerisimov'sテトリス
このインターネットブラウザは、作成されたその他のVadim Gerasimovテトリスです。
このインターネットブラウザ「Green」テトリスには、キャンパス内の建物のMITです。
このテトリスその他の9つのカラムのみが、標準の10列の代わりにします。
その他のプレゼントこのテトリスの新しい作品をランダムな方向性があります。
who Vadim Gerasimovは、人は、コンピュータのコードを書いたのPCのバージョンのテトリスで1986です。
Vadim Gerasimovは博士号研究は、 MIT Media Laboratory中1994-2003 、多くの興味深いプロジェクトに取り組んでいます。
4.3.4 マイクロコントローラベースのPIC16F84 12 MHzテトリスNTSC / PALビデオゲーム

マイクロコントローラベースのPIC16F84 12 MHzテトリスNTSC / PALビデオゲーム
上記のイメージを示してNTSC / PALビデオ出力PIC16F84 12 MHz産生されるマイクロコントローラRickard Guneeで書かれたソフトウェアを実行する1998です。
ビデオ信号が生成されたソフトウェア制御のデジタル出力を提供します。
4.3.5 テトリスを「scopetris」オシロスコープLars Pontoppidan (2007.8)

テトリスを「scopetris」オシロスコープLars Pontoppidan (2007.8)
Lars Pontoppidan書いたコードは、次のAtMega32マイクロコントローラ、および追加されました単純なアナログ回路、テトリスのバージョンを作成するには、オシロスコープ上で再生することがあります。
AtMega32特定のレジスタは、 8ビットマイクロコントローラの制御出力信号、および、通過するときに「R-2R」電気抵抗回路をデジタルアナログ変換(D/A) 、その結果のアナログ信号を制御することは、オシロスコープ(x,y)座標ビーム(ときに、オシロスコープのは、 「X-Yモードに」設定して) 。
YouTubeビデオ:
FLVビデオ:
4.3.6 難読化コードテトリス: 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);}
4.3.7 難読化コードテトリス: Perlコード
テトリスを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;
4.3.8 テトリスMozilla SVG
Scalable Vector Graphics (SVG)は、グラフィカルなオブジェクトを使用して、標準のXMLを記述します。

Mozilla SVGテトリス:テトリスScalable Vector Graphics (SVG)説明書を使用して実装
4.3.9 テトリスGoogle 「widget」
Google 、 Yahoo! 、およびMicrosoft 、およびその他の企業は、インターネットベースのソフトウェアが昇格という名前のミニチュア「widgets」には、通常いくつかの使用を特徴とする、動的なデータをインターネット上で利用できる。
1つは、このようなGoogleテトリスwidget利用できるゲームです。
かわいいは、次の例では、迷惑な方法がありますが、図形を回転さ:

テトリスGoogle 「widget」
他のGoogle widgets :
4.3.10 MIT研究論文: 「Tetris is Hard, Even to Approximate」 (2002)
研究開発ドキュメントは、次の証拠を手に入れるには、その他のは、特定の種類のテトリス「NP -完了」します。
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です。
「NP -完全に」は、分類の時間、コストとスペースコストをするアルゴリズムです。
他の分類「P」と「NP」含まれています。
に分類「NP -完了」を意味して、いくつかの小型サイズよりも大きい問題が発生、このアルゴリズムは、思いも寄らない解決策を見つけて、お好みの量の実用的な時間や空間です。
4.3.11 研究開発ドキュメント: 「Applying reinforcement learning to Tetris」
は、次の紙、公開2005.5.30 、 Donald Carrは、コンピュータサイエンス学部でRhodes University 、南アフリカ、プレゼントのアプリケーションの「強化学習」をテトリスです。
4.3.12 テトリススカート(2007.11)

テトリススカート(2007.11)
スカートのテトリスで作成さ「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."
このスカートに関するフォーラムのコメント:
「男がスカートを吸うテトリス」
「ahahahaha 、と思ったのと同じことです。」
「あるのは完全にダウンラインの下部に行...完了されなくなります。」 「ひどい目に遭わす」 「です。」
「存在する必要がありますスポットでの背中やフロントで長い作品はぴったり...」
「それは本当に醜いスカートかかわらずです。彼氏できませんでしたに花を買ってくれるに十分なチョコレートと私を納得させことを着用することです。」
4.3.13 テトリス段階法(2007.4)

テトリス段階法(2007.4)
「これらのことから持ってきたのTriforceで2006 ...生気のないオブジェクトは、次の世代の寸劇...テトリスです。」
局所的にキャッシュされたビデオをFlashビデオ(FLV)形式(使用VLCを再生する) :
4.3.14 陽気なテトリスのバリエーションを、日本のテレビ番組

テトリスのバリエーションを日本のテレビ番組
このビデオのセグメントから、日本のテレビ番組が含まれテトリス陽気なパターンを含む:
着陸時の作品が消える、行全体を作品と並んで(このように着陸時の完了を行) 、複数の作品の下落と同時に、不規則な形の作品は、長い作品にはあまり幅が広いに合わせて、若干のギャップ( 4 -行を防ぐ完成! ) 、 Mario的中すると死にかけている巨大なキノコとなる!は、残りの破片小片を破壊した後の行は、重力の上方への最上部に浮遊する作品など
局所的にキャッシュされたビデオをFlashビデオ(FLV)形式(使用VLCを再生する) :
4.3.15 「The Original Human TETRIS Performance by Guillaume Reymond」 (2007.11)

「The Original Human TETRIS Performance by Guillaume Reymond」 (2007.11)
からの説明書をYouTube :
「TETRISプレイをリアルに座って人類の講堂:」
TETRISは、第4回ビデオ性能をGAME OVER Project 、指示されたスイスのアーティストGuillaume REYMOND ( NOTsoNOISYクリエイティブ代理店) 。
このビデオはストップモーション「LES URBAINES」ショットとプレイを
http://www.urbaines.chは、パレデフェスティバルrumine ( lausanne 、スイス)をNovember 24th 2007です。
局所的にキャッシュされたビデオをFlashビデオ(FLV)形式(使用VLCを再生する) :
4.3.16 2.5次元テトリス
という用語が使用され、ここを「2.5次元」非直交を意味する対象は、二次元のバージョンのテトリスは、いくつかの厚さで3番目のディメンションです。
( 「tetris3d」を見つけるのリンク「F7: GAMES」です。 )
4.4 3次元テトリス

Linux / GTKバージョン
三次元テトリスJavaアプレットの形では、インターネットブラウザ:
三次元テトリスをWindowsオペレーティングシステム:
4.5 4次元テトリス

Greg Kaiser's 「hypertetris」 (1996) : 4次元テトリス
で[1996], [...] 、 4つの次元をまとめるGreg Kaiserその他の上の古典的なゲームです。
IrisGL (a.k.a. igl)彼を使用して作成する作業は、ハードを再生する場合、ゲームを使用して4つのサブ画面に置き換えて描いて異なる側面を三次元空間全体のゲームです。
[ため]そこには簡単に[理解] 4つの次元オブジェクトを描く方法は、 2つの次元の画面で、の4つのサブ再生回数は、実用的な方法を操作すると可視化するとの翻訳は、作品を通してローテーションの4つの外形寸法図( x,y,z,w 、ゲームと呼ばれる) 。
完成ではなく、元の行のブロックのように、このケースでの目標を満たす、完全なキューブは、 x,y,z subview (通常4 4 4 ) 。
subviewsが含まれ、他の「w」に配置され、デフォルトの4次元は4を10ブロック協定を締結するの長い「w」が、これらの3つのディメンション「vertical」の場合、異なる基地の(x,y), (x,z), (y,z)です。
重力の方向行為は、 「-w」ので、長期の3つの作品をsubviews 「落ちる」 「w」が含まれる、とされていない限りは移動しないでの最後の(x,y,z) subview Playerコントロールします。
それに慣れるのに時間がかかります、控えめに言ってもです。
場合によっていくつかの奇跡の忍耐力やゲームのパラメータを変更して、 1つのキューブを完了するが、それが完了した行が表示されなくては、元のテトリス、かかわらずHyperTetrisのスコアは保存されています。
Benjamin Bernard (2000)
4.6 N次元テトリス

Polytope Tetris (2003) :テトリスゲームその他の次元にN
Polytope Tetrisはn次元テトリスです。
HyperTetris触発されたプログラムでは、 Polytope Tetrisトンプレイできるように任意のテトリス数寸法です。
テトリスをプレイ3D 、 4D 、 5Dか、または他のです。
HyperTetrisはcatchier名よりもはるかにPolytope ( def )のテトリスが、私の名前を盗むことはできません。
5. 「標準テトリス」仕様
5.1 はじめに
「テトリス」の「標準」の定義には、理想的なモデルの最も重要な特徴や行動の実施をIBM-PCテトリスの最初のゲーム( circa 1986-1988 ) 。
に基づいて、理想的なモデルは、明白な意図を推察するのIBM-PCの実装の開発者は、最初のゲームのテトリスです。
たとえば、それが妥当なところを推測して、最初のIBM-PCの実装の開発者はゲームのテトリスを目的とし、各形状を選択して新しい作品「をランダムに」落ちていること、および使用するBorland Cのrand()関数の実装は単に実用的な近似意図しています。
「テトリス」の「標準」の定義を指定してそれぞれの新しい立ち下がりの形の作品は「ランダムに」選択される。
この理想的な動作に達成すべき目標を任意の実装することはできませんが、おおよその実装は、理想的な現象が発生します。
完全に実装することを実装していないにもかかわらず、 「標準」で定義されて「テトリス」は、理想の「標準テトリス」伴う客観的特性、および実装できる親密に比べ相対的によると、彼らの理念を「標準テトリス」です。
このセクションで説明し、一連の要素、行動、およびルール、これは、総称して、 「標準のテトリス」を定義します。
5.2 標準テトリス委員会
理事会は、グリッドのセルが10列、および20行、合計10 * 20 = 200細胞です。

標準テトリス委員会( 10列、 20行)
各セルのいずれかが空いている(空) 、または占領(フル) 。
5.3 標準テトリス作品
テトリス(7)標準の7つの作品には、次のような手紙の名前:
{ O, I, S, Z, L, J, T }
その手紙の名前が触発された作品の形をしています。

7つの標準テトリス作品とその「方向」
ドットで(0,0)委員会の位置(6,20)時を同じくして最初の作品が表示されます。
の最初の列の最初の「方向」を示しています。
は、次のように、単語「の向き」を使用して任意の状態を説明する作品は、国に許可セットを、反時計回りに回転することができるイベントの結果からです。
「オリエンテーション」から、特定の「向き」を変更する「I」 、 「S」か、または「Z作品」は、回転と組み合わせて使用するには、翻訳します。
したがって、 「オリエンテーション」という言葉が使用され、ここを意味するだけで何かを超える回転します。
しかし、 「オリエンテーション」を変更のみに対応してイベントを反時計回りに回転し、明確な「方向性」のサイクルの各作品近似か、またはマッチは、純粋なローテーションサイクルの結果からです。
という言葉を使用する特別な「方向」に相当するこの文脈ではほぼその言葉の意味を「回転」や「角度」 、 「方向」が使われるが、言葉の代わりに「回転」を試みをもたらすという事実をいくつかの点に注意を必要とする以上の回転を生産する可状態の結果セットのイベントから反時計回りに「回転」します。
作品は、スイッチの方向にのみ(あるいは、特定の水平または垂直に翻訳を受ける)の場合、結果の状態をこの作品はしないようにして占領(フル)細胞を超えて事項は、委員会とは重複しないようにして任意の現在の占領下の占領下の細胞が細胞は、委員会です。
(このルールは、占領下の(フル)細胞の作品はないと考えられ「細胞の占領下の」部分は、 「現在の委員会」
は、次のコメントを、任意の参照をした結果を反時計回りのイベントが行われたと仮定してこのような回転を実際に実行されると、与えられた条件を、既存の委員会の作品とします。
の「O」 (ボックス)作品は、 1つの方向だけではありませんの位置を変更して任意の占領(フル)のセルに対応して任意の反時計回りのイベントです。
の「I」 (ライン)作品には2つの可能性方向、水平方向に最初に表示されます。
交互に繰り返されるの「I」作品の間に連続する2つの方向に対応して反時計回りのイベントです。
「S」と「Z」作品は各々の2つの可能な方向性があります。
これらの作品の間にそれぞれ別の方向に対応して連続する2つのイベント反時計回りに回転します。
の「L」 、 「J」 、および「T」作品は各々 4つの方向性、およびこれらの方向については、センターの結果を単純なポイントをローテーションの形です。
最初のときに一枚のボードに表示されて、この作品には、 「主要な軸」の向きを水平にし、この作品は、委員会の上部にある。
したがって、能力のない作品が最初にその方向に変更されました。この作品必要があります。降下を1つの行にはその方向を変更する可能性を持つ。
一度に1つの行に落ちた一枚のボード上、すべての作品の方向達成できる(作品ではないと仮定しての側面にあまりにも近くには、現在の壁や山積みの作品) 。
5.4 標準Tetrisフローチャート
は、次のは、おおよそのフローチャートを、標準のTetrisゲームです。

おおよそのフローチャートを、標準のTetrisゲーム

おおよそのフローチャートを、標準のTetrisゲーム
5.5 標準Tetris作品の創作
は、次の図を示して( 4セル* 2セル)の領域で、委員会で作成したすべての作品ときに表示されます。

リージョンここで作成されたときに表示されます標準の作品Tetris
ときに最初に表示されて、新しい作品理事会、その起源を同じくし、ドットをこの図、およびこの作品に完全に含まれる斜線部分をこの図です。
ときに新しいゲームを起動すると、完全な自由落下の遅延が経過し、自由落下の繰り返しの最初の一枚が生み出されたの上部には、委員会です。
通常のゲームのプレイ中に、自由落下するときに、特定の「土地」を繰り返し作品は、完全な自由落下の遅延が経過すると、次の自由落下を繰り返し生み出された作品は、委員会の上部にします。
ときに生み出された作品は、作品のタイプを使用して、次のアルゴリズムを選択:
pieceIndex = 1 + (randomInteger % 7); // 1..7
p (= 1/7)のチャンスがあるため、定数の特定の種類の作品を選択すると、同じタイプのすべての作品が区別される確率が正確にk作品nした後、ある特定の種類の試験を二項分布以下の通り:
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作品( 0をkの範囲でn )は、与えられた二項分布に示すように、イメージは、次のです。

二項分布をn=70 、 p=(1/7)
したがって、 1つの予測の平均は、 1つのタイプの合計点の合計数をランダムに与えられた作品、および1つの予想を計算することもできます。差異と標準偏差(分散の平方根を) :
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"
[ Tetrisプレ商業MS-DOSのバージョンの関数を使用してランダムな数字で提供されてBorland Pascalコンパイラを指定します。
その機能を使用される、 32ビットのステート変数です。
したがって、乱数のシーケンスを2^32は異なる値に制限されています。
したがって、原則として、プレイヤーが発見、おそらく10個ドロップした後、正確な場所に数字の集合を2^32の現在の状態に対応して、ゲームです。
Tetrisシミュレーションを伴って実行する場合は、固定のシーケンス2^32作品は、最適な意思決定入力し、すべての場所にできるのシーケンスが見つかりました。
(十分な機会があるようだが委員会の委員会を、完全に空の状態に、先を取得できるように同期して計算済みの最適解パスを入力します。 )
の危険性を乱数生成器を使用して、簡単なシミュレーションを目的とし、最適な解決策を見つける問題は、解決策は、特定のパスを最適化のみを選択されたシンプルな空間の問題乱数生成器です。 ]
5.6 標準テトリスコントロール
ゲームのプレイ中は、次の入力が利用可能です:
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
すべての入力に発効するの立ち上がりエッジから、正の入力( ONボタンを押すと報道とは反対に、ボタンをクリック発売) 。
ボタンを押すときに発生する場合は、この数としてカウントされるのリクエストです。
所蔵するボタンを押し、特定の時間を超える結果となるかもしれない「の自動繰り返し」機能をキーボードでは、生成の新しいボタンの押下-しかし、この機能は、ゲームエンジンに外付けすることです。
上記の入力しないテトリスに準拠して、元のゲームです。
回転させる要求を実行することができますがない場合は望ましい方向との間の重複のセルに、現在の設定委員会(落下してくる作品を除く) 、および希望のオリエンテーションがない場合は、細胞外のボード面積を設定します。
翻訳要求を実行することができます間の重複がない場合は、目的の翻訳の構成と設定のセルに、現在の理事会(落下してくる作品を除く) 、および希望の翻訳の設定がない場合は、細胞外のボード面積を設定します。
入力のリクエストを処理するとの待ち時間に依存して、ゲームのフレームレート(例: 75 Hz ) 、および要求に反映さ(有効であれば)即座にします。
作品が下落することなく下降線発生手順を実行します。
数回の作品を翻訳して左または右、下落し、その後、下降線のすべてを体験する公式のステップに進みます。
作品のため、新たに生み出された可能性が回転することはできません(反対するので、上端が滞っ理事会) 、その選手を受け入れる必要があります落下、少なくとも1つの作品のステップローテーションが望まれる場合、または必要です。
の影響を及ぼすのスコアは軽微です。
5.7 標準テトリス作品「着陸」
作品は、単に落下場合は、それの滝は、各作品の1つの行を繰り返し落下します。
繰り返して移動するにはそれがない場所から水平表面を連絡先に連絡をする場所では水平方向の表面です。一度、この反復が発生すると、安静時の作品は、お問い合わせください。
反復を開始する場合は、作品の安静時の連絡先を水平表面は、作品「の土地」は、杭の静的となる部分です。
5.8 標準テトリス「ライン完成」
行では、行を完了した杭では、占領下のすべてのセルがします。行が完了したときに杭から除去し、除去された行の行の上にある1つの行は、シフトダウンさのギャップを排除するため、この「行」数としてカウントされる完了します。
ときに作品のパイル地となる部分です。
作品の直後に土地は、杭は、行のチェックを完了し、すべての行がなくなれば完了です。
最大4つの行に完了することを同時に押します。
表には、次の行に上限を課すと同時に完成され、 1つの作品:
piece max. simultaneous
rows completed
===== ==================
"O" 2
"I" 4
"S" 2
"Z" 2
"L" 3
"J" 3
"T" 2
5.9 標準テトリス「レベル」
標準テトリスは10難易度のレベル、番号1 ( 1つ)を経10 ( 10 )は、 「最も」低いレベル1が「困難」です。
のレベルのインデックスは、最大2つの値:
actualLevel = max( initialLevel, earnedLevel );
initialLevel値は、プレイヤーのレベルは、新しいゲームを開始するときに選択します。
レベルのパターンを完了する関数として簡単に観察された行は、事前に商業MS-DOSのバージョンのテトリス:
{ 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 標準テトリス落下反復遅延
標準テトリスには、リアルタイムの連続線間の遅延が加われ自由落下する関数は、現在の困難なレベルです。
インデックスとの間の関係は、次のレベルに基づいて落下遅延が繰り返される反復測定ストップウォッチ、事前にすべてのレベルでの商業MS-DOSのバージョンのテトリスです。
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]
の場合、委員会が空の場合、ユーザの入力がないとは、実際のレベルで生み出された作品10秒間に約1土地と土地の新たな作品を実際の約1 2番目のレベル10です。
5.11 標準テトリス「によるスコア」
標準テトリスのみ特典ポイントを着陸する行為の一つです。
ポイントがない賞を受賞、ひとつの行に完了する行為、または完了2つ、 3つのか、または4つの回線を同時に押します。
[注:テトリス特典ポイントをいくつかの亜種の行為を完了する線で、ボーナスを飛躍的に増加し、ますます多くの行を同時に完了します。
このように、このような戦略を極大化によるスコアテトリスの亜種を設定する機会「を取得する」には、 「Tetris」 、俗語「I」形状を使用して、 4つの同時線と就学許可証を取得多くのポイントです。 ]
空の委員会をお持ちの場合、およびあなたがそう「I」作品以外の自由落下や土地を行うか、または「I」をすぐにドロップする以外の作品は、次の点を確立することができます。図表使用して、事前に商業MS-DOSのバージョンのテトリス:
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 &