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

1. Software

StandardTetris_2007June4.zip
Tetris zdrojový kód (C# a C++ verze) a program ("exe");
4068277 bytů
MD5: 4e957e0ead66064183e9f7e04e618ec0

2. Úvod

Tento článek popisuje, jak může počítač přehrávat klasické video hry Tetris o získávání informací o desce, určování dobrých akcí a plnění těchto akcí.
Tento článek obsahuje software schopný hrát Tetris v reálném čase.
Software obsahuje nejlepší real-time hře Tetris-algoritmus ve veřejné doméně.
Tento článek definuje pravidla pro "standardní Tetris," upřesnění na základě původní 1986 pre-komerční verze Tetris pro počítačový (PC).
V 2003, software zahrnuty v tomto článku byl použit k tomu, aby v počítači hrát Tetris běží na samostatném počítači.
Řádné USB video kamera byla použita k tomu, aby počítače na obrazovce "vidět" z jiného počítače.
Relé palubě bylo kontrolováno prostřednictvím RS-232 rozhraní, které umožní, aby počítač "tisku kláves" na klávesnici z jiného počítače.
Proto byl první počítač má vztah k druhým počítači, který je podobně jako typické lidské hráče vztah k počítači při přehrávání Tetris; hry stavu je jediným známým pohledu na obrazovku, a hráč akce může být zahájena pouze prostřednictvím klávesnice .
Konfigurace v této demonstrace, že se počítače mohou hrát Tetris lepší než lidské, za běžných real-time hře Tetris podmínek.

3. Historie Tetris

V 1985, Alexey Pajitnov a Dmitry Pavlovsky byly počítačové techniky na Computing Center of the Russian Academy of Sciences.
computer_center_russian_academy_of_sciences.jpg
Dorodnicyn Computing Centre z Russian Academy of Sciences
http://www.ccas.ru
Alexey a Dmitry byly zájem o rozvíjení a prodej počítačových her návykové.
Jsou testovány v několika různých her.
Alexey byl inspirován řeckého puzzle hra, Pentaminos, které se účastní pořádání puzzle kusů vyrobených z pěti čtverců.
Alexey myslel, že na myšlenku pořádání Pentamino kousky jako padli do pravoúhlého kalich, ale uvědomili, že dvanáct různých pěti-hranatých tvarů, jsou příliš složitá na video hry.
Alexey přešel na použití "tetramino" sedm kousků, z nichž každá se čtyřmi čtverci.
V 1985.6, Alexey Pajitnov naprogramován první verze Tetris na Electronica 60.
d_pavlovsky_and_a_pajitnov.jpg
Dmitry Pavlovsky, Alexey Pajitnov, a Tetris.
V 1985-1986, Vadim Gerasimov, což je 16-letý vysoký-školní počítače prodigy kteří pracovali v akademii, provedeny Tetris pro IBM PC provoz MS-DOS operačního systému.
(Vadim Gerasimov později udělal výzkumu na MIT Media Laboratory, v letech 1994 až 2003, který obdrží po absolvování Ph.D.  mnoho zajímavých projektů: http://vadim.www.media.mit.edu)
original_tetris_splash_screen02.jpg
Zavedení obrazovky z 1987-1988 pre-komerční verze Tetris pro PC
original_tetris_start_game02.jpg
Hra hrát obrazovky z 1987-1988 pre-komerční verze Tetris pro PC
Po 1987, Tetris šíří po celém světě.
The Tetris Company, LLC, Tetris vlastní ochrannou známku.
www_tetris_com_site.jpg
The Tetris Company, LLC, internetové stránky (jak se ukázalo v 2003).  http://www.tetris.com

4. Projekty inspirované Tetris

4.1 0-dimenzionálním Tetris

Dosud vyvinuty.

4.2 1-dimenzionální Tetris

Ziga Hajdukovic vyvinula 1-dimenzionální Tetris software, který lze přehrát v internetovém prohlížeči.
tetris_1d_ziga_hajdukovic.jpg
1-dimenzionální Tetris o Ziga Hajdukovic http://www.tetris1d.org
Ziga Hajdukovic vyvinula i 1-dimenzionální Tetris software pro mobilní telefony pomocí Java J2ME platformu.
(Návod: http://www.tetris1d.org/mobile.php; WAP stažení: http://www.tetris1d.org/wap)

4.3 2-dimenzionálním Tetris

Všechny tradiční Tetris varianty jsou v této kategorii.
Tato sekce obsahuje zajímavé varianty.

4.3.1 Největší Tetris hra vůbec: Delft University of Technology (1995)

delft_univ_1995_2000sqmeters_tetris1.gif
Tetris hrál na budovy; 2000 m^2 rozlohy; Delft University of Technology (1995)
delft_univ_1995_2000sqmeters_toveren.jpg
Tetris hrál na budovy; 2000 m^2 rozlohy; Delft University of Technology (1995)

4.3.2 Dalším Tetris hru hrají v budově: Brown University (2000)

brown_university_bastille_tetris_tetris_game_square.jpg
Tetris hru zobrazit pomocí světla na okna budovy v Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
brown_university_bastille_tetris_woz_play.jpg
Steve Wozniak, spoluzakladatel na Apple Computers, hrající Tetris; Brown University (2000) http://bastilleweb.techhouse.org
"Myslím, že to byl právě nejvíce neuvěřitelný jeden den-to bych si v mém životě.  Stejně jako Steve Jobs vždycky říkal, že cesta je odměnou."
"Je mi myslím projektů jsme se zpátky do školy.  Věci, které byly téměř undoable, že ostatní lidé by nevidí dělá."
Steve Wozniak (2000)

4.3.3 Internetové prohlížeče hra s MIT "Zelená Stavební" obrázek

tetris_vadim_green_building3.jpg
Vadim Gerisimov's internetový prohlížeč Tetris
http://vadim.www.media.mit.edu/games/gbt.html
Tento internetový prohlížeč Tetris varianta byl vytvořen Vadim Gerasimov.
Tento internetový prohlížeč Tetris má uvedenu "Green" budovy v areálu MIT.
Tato varianta Tetris má pouze devět sloupců namísto standardních deset sloupců.
Tato varianta představuje Tetris nové kousky s libovolnou orientací.
Vadim Gerasimov je osoba, kteří napsal počítačový kód pro PC verze Tetris v 1986.
Vadim Gerasimov udělal Ph.D.  výzkumu na MIT Media Laboratory během 1994-2003, pracujeme na několika zajímavých projektech.

4.3.4 PIC16F84 12 MHz mikrokontrolér založený NTSC / PAL-video hry Tetris

tetris_pic_television_screen.jpg
PIC16F84 12 MHz mikrokontrolér založený NTSC / PAL-video hry Tetris
http://www.pablin.com.ar/electron/circuito/mc/tetris
Obrázku výše zobrazí NTSC / PAL video výstup vyrábí se PIC16F84 12 MHz mikrokontrolér běží software, který napsal Rickard Gunee v 1998.
Video signál je generován pomocí softwaru ovládání digitálních výstupů.
Ostatní PIC projekty: http://etronics.free.fr/liens5.htm

4.3.5 "Scopetris" Osciloskop Tetris o Lars Pontoppidan (2007.8)

scopetris_lars_pontoppidan_2007_aug.jpg
"Scopetris" Osciloskop Tetris o Lars Pontoppidan (2007.8)
http://pontoppidan.info/lars/index.php?proj=scopetris
Lars Pontoppidan napsal kód pro AtMega32 mikrokontrolér, a dodala, jednoduché analogové obvody, aby vytvořily Tetris verze, která by mohla být přehrávány na osciloskopu.
Některé registry ze AtMega32 mikrokontrolér kontrola 8-bitové výstupní signály, a když prošel přes "R-2R" elektrický odpor obvodu pro digital-to-analog konverze (D/A), výsledná analogové signály je možné ovládat (x,y) souřadnice osciloskopu nosníku (jestliže je osciloskopu nastavena na "X-Y režimu)."
YouTube video:
http://www.youtube.com/watch?v=Hui5Azx5jQo
FLV video:
scopetris_lars_pontoppidan_2007_aug.flv

4.3.6 Zatemnil kód Tetris: C / Unix

Následující byla udělena "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);}
Reference: http://homepages.cwi.nl/~tromp/tetris.html

4.3.7 Zatemnil kód Tetris: Perl kód

Následuje Tetris pro Perl interpret: Perltris (verze 20050717), kterou 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;
Reference: http://www.seanadams.com/perltris

4.3.8 Mozilla SVG Tetris

Scalable Vector Graphics (SVG) je standardem pro popis grafických objektů pomocí XML.
tetris_svg_640x480.gif
Mozilla SVG Tetris: Tetris prováděna pomocí Scalable Vector Graphics (SVG) popis
http://www.croczilla.com/svg/samples/svgtetris/svgtetris.svg
Jiné příklady SVG: http://www.croczilla.com/svg/samples

4.3.9 Google "widget" Tetris

Google, Yahoo!, a Microsoft, a další společnosti, mají podporovat miniaturní Internet-založený software pojmenovaný "widgets", které jsou obvykle charakterizovány některými použití dynamických dat je k dispozici na internetu.
Jedním z takových widget k dispozici prostřednictvím Google je Tetris hry.
V následujícím příkladu je roztomilá, ale tvary střídat v otravné způsoby:
tetris_google_widget.gif
Google "widget" Tetris
http://www.playbie.com/Game.aspx?gm=1&wt=2&su=live.com&sn=Google&gn=Google
Ostatní Google widgets:
http://www.google.com/ig/directory?synd=open

4.3.10 MIT výzkumu papíru: "Tetris is Hard, Even to Approximate" (2002)

Následující výzkum dokument obsahuje důkaz, že určitý druh Tetris varianta je "NP-kompletní."
http://theory.csail.mit.edu/~edemaine/papers/Tetris_TR2002
Erik D.  Demaine, Susan Hohenberger, a David Liben-Nowell, "Tetris is Hard, Even to Approximate", Technical Report MIT-LCS-TR-865, Massachusetts Institute of Technology, 2002.10.21.
Lokálně z cache-kopie (PDF): tetris_theory_mit_lcs_tr_865_0210020.pdf
"NP-kompletní" je zařazení době náklady a náklady na prostor algoritmus.
Jiné klasifikace zahrnují "P" a "NP".
Třídění "NP-úplné" znamená, že pro větší problémy, než některé malé velikosti, algoritmus je nepravděpodobné nalézt požadované řešení v rámci praktického množství času nebo prostoru.

4.3.11 Výzkum dokumentu: "Applying reinforcement learning to Tetris"

Následující dokument, zveřejněný 2005.5.30, o Donald Carr na oddělení výpočetní techniky v Rhodes University, Jižní Afrika, představuje žádost o "posílení vzdělávání" na Tetris.
ApplyingReinforcementLearningToTetris_DonaldCarr_RU_AC_ZA.pdf

4.3.12 Tetris Sukně (2007.11)

tetris_skirt.jpg
Tetris Sukně (2007.11)
Tetris na sukni byl vytvořen "Lucy" ("hissyfitoly" na etsy.com) před 2007.11.
Od autora je popis cípu (nabízeny k prodeji na 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."
Fórum připomínky týkající se tohoto sukně:
"Muž, který sukně naštve na Tetris"
"Ahahahaha, myslel jsem, že to samé."
"K dispozici je kompletní řádek dolů na dno ...  dokončena řádky zmizí."  "PŘELAKOVAT" "."
"K dispozici by měly být na místě v zadní nebo přední dlouhý kus, kde by se perfektně hodí ..."
"To je opravdu ošklivý když sukně.  Můj přítel nemohl koupit mi dost čokolády a květiny přesvědčit, abych se nosí, že věc."

4.3.13 Tetris fázi jednat (2007.4)

tetris_stage_act.jpg
Tetris fázi jednat (2007.4)
http://www.youtube.com/watch?v=sZrs8ZCO8xM
"Od těch, které přinesli ti Triforce v 2006 ...  Přichází další generace neživý předmět parodie ...  Tetris."
Lokálně z cache-video v Flash video (FLV) formátu (použijte VLC hrát):
tetris_stage_act.flv

4.3.14 Veselý Tetris variace na japonské televizní show

tetris_funny_variations_japanese_tv.jpg
Tetris variace na japonské televizní show
http://www.youtube.com/watch?v=SYRLTF71Sow
Tento segment video z japonské televizní show patří veselý variace na Tetris, včetně:
kousky, které zmizelo na přistání, což je kus, který vyplní celý řádek (tedy řádek po dokončení vykládky), více kusů současně spadající, nepravidelně tvarované kusy, dlouhý kus, který je trochu příliš široká, aby se vešly do rozdílu (s vyloučením 4-řady dokončení!) Mario mlátit a hub a stávají obrovskými a umírá! malý kus trosek po zbývající řádky jsou zničeny, vzestupný závažnosti procesu kusů akcií na trhu k vrcholu, atd.
Lokálně z cache-video v Flash video (FLV) formátu (použijte VLC hrát):
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
Z popisu na YouTube:
"TETRIS hraje o skutečné lidské bytosti-zasedání v sále:"
TETRIS je 4. video plnění z GAME OVER Project, režie švýcarského umělce Guillaume REYMOND (NOTsoNOISY kreativní agentury).
Tento stop-motion video byl zastřelen a hrál na "LES URBAINES" festivalu http://www.urbaines.ch v Palais de Rumine (Lausanne, Švýcarsko) v November 24th 2007.
Můžete si najít více informací a také SPACE INVADERS, PONG a POLE POSITION na našich webových stránkách http://www.notsonoisy.com/gameover
Lokálně z cache-video v Flash video (FLV) formátu (použijte VLC hrát):
tetris_with_human_blocks_guillaume_reymond_2007nov.flv

4.3.16 2.5-dimenzionálním Tetris

Termín "2.5-dimenzionálním" zde slouží k "je mimo-ortogonální pohled ze dvou-dimenzionálním verze Tetris, s tloušťkou ve třetí dimenzi.
tetris_2andhalfd_andre_michelle.jpg
Andre Michelle's hra Tetris pro Flash hráč http://lab.andre-michelle.com
(Najděte si odkaz "tetris3d" v "F7: GAMES".)

4.4 3-dimenzionálním Tetris

tetris_3d_gno3dtet_seb.jpg
Linux / GTK verze
Tří-dimenzionálním Tetris v podobě, Java applet pro internetové prohlížeče:
http://paperstack.com/brokout
Tří-dimenzionálním Tetris pro Windows operační systém:
http://www.sfu.ca/~vwchu/3dtetris.html

4.5 4-rozměrné Tetris

4d_tetris.jpg
Greg Kaiser's "HyperTetris" (1996): 4-rozměrné Tetris
V [1996], [...], Greg Kaiser dohromady čtyř-dimenzionálním variantou na klasické hře.
Použití IrisGL (a.k.a.  igl) vytvořil pracovní, pokud je těžké hrát, hra pomocí čtyř sub-obrazovky o zachycení různých tří-dimenzionálním aspekty celého hra-prostoru.
[Proto] není snadno [srozumitelné] způsob, jak využít čtyř-D objekty na obrazovce dva-D, čtyři sub-pohledy jsou praktické metody pro manipulaci a vizualizaci rotace a překlady jednotlivých kusů přes čtyři rozměry ( ve hře zvané x,y,z,w).
Spíše než na dokončení okruhů bloky jako v původní, cíl je v tomto případě vyplnit kompletní kostky v x,y,z subview (obvykle 4 o 4 o 4).
Ostatní subviews, které obsahují "w" dimenze jsou uspořádány ve výchozím nastavení 4 o 4 o 10 bloku ujednání s "w" je dlouhá, "vertical" rozměr ve všech třech případech s různými základy (x,y), (x,z), (y,z).
Závažnosti činu v "-w" směrem, tak kusy "padají" ve třech dlouhých subviews, které zahrnují "w", a nemají pohybovat, pokud by hráč kontrolu v poslední (x,y,z) subview.
Bere na chvíli zvykat na to, aby přinejmenším.
Pokud by některé zázračné trpělivosti, nebo změnou parametrů hry, jedna se kompletní kostka, to zmizí jako dokončena řádky se v původní Tetris, i když ne skóre je držena v HyperTetris.
Benjamin Bernard (2000)
http://archive.ncsa.uiuc.edu/Classes/MATH198/bernard/oldIndex.html

4.6 N-dimenzionálním Tetris

polytope_tetris_screenshot3.jpg
Polytope Tetris (2003): o N-dimenzionálním Tetris hru varianta
http://polytopetetris.sourceforge.net
Polytope Tetris je n-rozměrově Tetris.
Vychází HyperTetris program, Polytope Tetris vám umožňuje hrát Tetris tun v každém POČET rozměr.
Hrát Tetris v 3D, 4D, 5D, nebo více.
HyperTetris je mnohem catchier jméno než Polytope (def) Tetris, ale nemohu ukrást jméno.
http://polytopetetris.sourceforge.net

5. "Standardní Tetris" specifikace

5.1 Úvod

Definice "Standard Tetris" je idealizovaný model z nejdůležitějších vlastností a chování na prvním IBM-PC provádění této hře Tetris (cca 1986-1988).
Na idealizovaný model je založen na usuzující na zjevně záměr vývojářů z prvních IBM-PC provádění této hře Tetris.
Například se zdá rozumné, aby se domnívám, že vývojáři z prvních IBM-PC plnění ze hry Tetris určená pro výběr tvaru každý nový kus spadající "náhodně," a že použití těchto Borland C při rand() funkce byla pouze praktické sbližování záměru.
Definice "Standard Tetris" upřesňuje, že tvar každého nového spadající kus má být vybrána "náhodně."
Toto ideální chování nemůže být dosaženo žádné plnění, ale implementace může sblížit ideální chování.
I když ne zcela provedení lze provádět definici "standardní Tetris," ideály "Standard Tetris" zahrnovat objektivní vlastnosti a implementace může být porovnány podle jejich relativní blízkost k ideály "Standard Tetris."
Tento oddíl popisuje soubor prvků, chování a pravidla, která společně definují "standard Tetris."

5.2 Standardní Tetris palubě

Tato deska je mřížka buněk, s 10 sloupců a 20 řádků, pro celkem 10 * 20 = 200 buněk.
tetris_diagram_board_10x20_empty_new.jpg
Standardní Tetris palubě (10 sloupců, 20 řádků)
Každá buňka může být buď neobydlených (prázdný), nebo obsazené (plné).

5.3 Standardní Tetris kusů

K dispozici je sedm (7) standardní Tetris kusů, s tímto dopisem názvy:
{ O, I, S, Z, L, J, T }
V dopise názvy jsou inspirovány tvary jednotlivých kusů.
tetris_diagram_pieces_orientations_new.jpg
Sedm Standard Tetris kusů a jejich "zaměření"
Tečka v (0,0) shoduje s palubě místo (6,20) kdy se poprvé objevila figurka.
První sloupec ukazuje počáteční "orientací."
V následujícím se slovo "orientace" se používá k popisu jakéhokoliv státu, na kus, ve stanovené povolené státy, které mohou vyplývat z proti směru otáčení událost.
Změna "orientace" z určitého "orientace" na "I, S," nebo "Z" kus, vyžaduje kombinaci otáčení a překlad.
Proto se slovo "orientace" je zde použito ve smyslu, který znamená něco více než střídání sám.
Nicméně, "orientace" může změnit pouze v reakci na otáčení proti směru hodinových akce a cyklus odlišné "směry" pro každý kus blíží, nebo zápasy, cyklus vyplývající z čistého obrátek.
Zvláštní použití slova "orientaci" v této souvislosti je téměř rovnocenné význam slova "otáčení" nebo "úhel," ale slovo "orientace" je použít místo "střídání" se pokusí přivést pozornost k tomu, že některé kusy vyžadují více než střídání vyrábět soubor povolena států vyplývající z akcí proti směru "otáčení."
Kusy mohou pouze přepínat zaměření (nebo se podrobil konkrétní horizontální nebo vertikální překlad), pokud výsledný stav této skladby by neměla mít žádné obydlené (plné) buňkách mimo oblast představenstva a nebude mít žádné obydlené buněk, které se překrývají jakékoli současné době buněk předsednictva.
(V tomto platí, že obsazené (full) buňky této skladby nejsou považovány za součást "aktuálně obsazené buňky představenstva"
V následujících komentáře, jakýkoliv odkaz na výsledek proti střídání případě je při předpokladu, že takový střídání může být ve skutečnosti provedeno, vzhledem k stávajícím podmínkám této skladby a hrací plochy.
Na "O" (krabice) kus pouze jediné orientace, a nemění umístění některého z jeho obsazené (full) buňky v reakci na každém případě proti směru otáčení.
Na "I" (linii) kus má dva možné směry, původně uvedené v horizontální orientace.
Na "I" kus náhradníky mezi oběma směry v reakci na po sobě jdoucí proti směru rotace událostí.
Na "S" a "Z" figurky mají dva možné směry.
Tyto kusy každého náhradníka mezi dvěma směry v reakci na po sobě jdoucí proti směru rotace událostí.
Na "L", "J", a "T" figurky mají čtyři možné směry, a tyto směry jsou výsledky jednoduché střídání centrum o body na tvary.
Když se poprvé objevila figurka na desce, tato skladba má své "hlavní osu" v horizontální orientace, a kousek je v horní části desky.
Proto žádné figurky jsou zpočátku schopné mají své zaměření změnila.  Skladba musí klesnout o jeden řádek, který chcete mít možnost má své zaměření změnila.
Jednou za kus klesla o jeden řádek na palubu, všechna kus směry lze dosáhnout (za předpokladu, Skladba je ne příliš blízko u boční stěny nebo do současné pilot kusů).

5.4 Standardní Tetris vývojový diagram

Toto je přibližný, vývojový diagram pro standardní Tetris hry.
standard_tetris_flowchart_for_timer_event_001.gif
Přibližné vývojový diagram pro standardní Tetris hra
standard_tetris_flowchart_for_input_events_001.gif
Přibližné vývojový diagram pro standardní Tetris hra

5.5 Standardní Tetris kus tvorba

Následující graf ukazuje (4 buněk * 2 buněk) regionu na palubě, kde jsou všechny figurky objeví, když vytvořili.
tetris_diagram_board_10x20_spawn_area.jpg
Kraj, kde figurky objeví, když vytvořena ve standardní Tetris
Při vytváření nového kusu poprvé objevila na palubě, její původ se shoduje s tečkou na tomto schématu, a tato skladba bude zcela obsažených v šrafované oblasti v tomto schématu.
Pokud je nová hra je spuštěna, plný volný-pád zpoždění uplyne, a na první volný-pád iterační kus je zplozený v horní části desky.
Při běžném hraní hry, kdy konkrétní volný-pád iterační "přistane" kousek, plný volný-pád zpoždění uplyne a na další volný-pád iterační kus je zplozený v horní části desky.
Když kus je zplozený, typ kus je vybrán pomocí následujícího algoritmu:
pieceIndex = 1 + (randomInteger % 7);  // 1..7
Protože tam je konstantní p (= 1/7) šanci na výběru konkrétního druhu na kus, a všechny kusy stejného typu jsou neodlišitelné, pravděpodobnost, s přesně k kusů na konkrétní typ po n zkoušek následuje Binomické rozdělení:
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 )
Když jsme se vybrat z 7 (sedm) kusů náhodně, pravděpodobnost získání konkrétního kusu je p=(1/7).
Pokud bychom to udělat n=70 časy, například, je pravděpodobnost získání přesně k kusů (s k v rozmezí 0 k n) je dána binomického rozdělení, jak ukazuje následující obrázek.
binomial_distribution_n70_p7th.jpg
Binomické rozdělení na n=70, p=(1/7)
Takto je možno odhadnout průměrné celkové kusů jednoho typu uveden celkový počet náhodných kousků, a lze také vypočítat očekávané rozdíly a směrodatná odchylka (odmocnina z variance):
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
Když jsme převodu náhodné hodnoty na kus rejstřík, my to interpretovat takto:
value  piece
=====  =====
  1     "O"
  2     "I"
  3     "S"
  4     "Z"
  5     "L"
  6     "J"
  7     "T"
[Předběžné-obchodní MS-DOS verze Tetris použili náhodné číslo funkce, kterou poskytují Borland Pascal kompilátor.
Tato funkce používal 32-bitové stav proměnné.
Proto se posloupnost náhodných čísel byl omezen na 2^32 odlišné hodnoty.
Proto v zásadě hráč mohl objevit po shození asi 10 kusů, přesné místo v souboru 2^32 čísla odpovídající aktuálnímu stavu hry.
Pokud Tetris simulace se provádějí s pevnou posloupnost 2^32 kusů, pak optimální rozhodnutí, lze nalézt na každém místě v pořadí.
(Zde se zdají být dostatečné příležitosti, aby byly na palubě zcela prázdné palubě stavu, umožní nám získat synchronizovány s precomputed optimální řešení, cesta.)
Riziko pomocí jednoduchého generátor náhodných čísel v simulací určených k nalezení optimálního řešení problému je v tom, že toto řešení bude optimální pouze na zvláštní cestu přes problém prostor určen jednoduchý generátor náhodných čísel.  ]

5.6 Standardní Tetris kontrol

Během hraní hry, tyto vstupy jsou k dispozici na adrese:
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
Všechny vstupy v platnost na rostoucí-okraj pozitivní vstup (na stisknutí tlačítka, na rozdíl od tlačítka zpráva).
Při stisknutí tlačítka dojde, to se počítá jako žádost.
Držení tlačítka se po určitém čase by mohl vést k tomu, že "auto-repeat" funkce na klávesnici, vytváří nové stiskne tlačítko - ale tato vlastnost je mimo hru motoru.
Jednotlivé vstupy se stanoví výše v souladu s původní hře Tetris.
Otočit žádosti mohou být provedeny, pokud není žádný přesah mezi požadovanou orientaci a soubor buněk v současné radě (kromě klesající kus), a je-li požadované orientace nemá žádný soubor buněk mimo palubu oblasti.
Přeložit žádosti mohou být provedeny, pokud není žádný přesah mezi požadovanou přeložen konfigurace a nastavit buněk v současné radě (kromě klesající kus), a je-li přeložen požadovaný konfigurační soubor nemá buňky mimo oblast palubě.
Vstup žádosti jsou zpracovány s latencí, že záleží na rámu sazba hry (příklad: 75 Hz), a požádá v platnost (je-li to aktuální) okamžitě.
Figurka může být upuštěno, aniž by linie spadají kroky, k nimž dochází.
Figurka může být přeloženy několikrát do levé nebo pravé, a následně poklesla, to vše bez zažívá oficiální linie spadají krok.
Vzhledem k tomu, že nově zplozený kus nemůže být případně otáčet (protože to je přilepená na horní hraně desky), hráč musí přijmout alespoň jednoho kusu spadající krok, pokud jsou požadované střídání nebo požadované.
Vliv na skóre je nevýznamné.

5.7 Standardní Tetris kus "přistání"

Je-li figurka je prostě spadají, to spadá do jedné řady během každého kusu spadající iteraci.
Bude iterační že přesune z místa, bez kontaktu s horizontální povrchy, do místa, že má kontakty s horizontální povrchy.  Jakmile tato iterace dojde, figurky jsou v klidové kontaktu.
Pokud iterační začíná kousek turistika v kontaktu s horizontálním povrchu, kus "pozemku," a stává se součástí statické pilot.

5.8 Standardní Tetris "linky dokončena"

Vyplněná řádku je řada na hromady, v níž všechny buňky jsou obsazené.  Když vyplněný řádek je vylučován z hromady, a řádky nad sebou jsou odstraněny přesunula dolů o jeden řádek k odstranění mezery, to se počítá jako vyplněný "řádek."
Když se to stane kus pozemky část z hromady.
Ihned poté, co kus pole, hromady, je kontrolovat, zda jsou vyplněny řádky, a všech řádcích, se zruší.
Až čtyři řádky, může být dokončeny současně.
Následující tabulka uvádí horní hranice na tratích dokončeny současně o jediný kus:
piece   max. simultaneous
         rows completed
=====   ==================
 "O"           2
 "I"           4
 "S"           2
 "Z"           2
 "L"           3
 "J"           3
 "T"           2

5.9 Standardní Tetris "úroveň"

Standardní Tetris má 10 úrovní obtížnosti, očíslované 1 (jeden) prostřednictvím 10 (desítky), s úrovní 1 je "nejméně obtížné."
Úroveň indexu je nejvýše dvou hodnot:
actualLevel = max( initialLevel, earnedLevel );
initialLevel hodnota je na úrovni, že hráč si vybere při spuštění nové hry.
Toků na úrovni jako funkce dokončených řádky je snadno pozorovat v předvstupním-obchodní MS-DOS verze 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
Proto byl earnedLevel hodnota je vypočítána podle následujícího algoritmu:
if (linesCompleted <= 0)
{
  earnedLevel = 1;
}
else if ((linesCompleted >= 1) && (linesCompleted <= 90))
{
  earnedLevel = 1 + ((linesCompleted - 1) / 10);
}
else if (linesCompleted >= 91)
{
  earnedLevel = 10;
}

5.10 Standardní Tetris spadající iterační zpoždění

Standardní Tetris má skutečnou-časové zpoždění mezi po sobě jdoucích řádek volný-pád iterace, která je v závislosti na aktuální úrovni obtížnosti.
Následující vztah mezi úrovní indexu a které spadají iterační prodlení je založen na opakovaném měření stopky na všech úrovních před-obchodní MS-DOS verze 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
Proto jsme se stanoví následující vzorec pro iterační prodlení hodnoty v závislosti na aktuální úrovni indexu:
iterationDelay = ((11 - actualLevel) * 0.05);  // [seconds]
Pokud se deska je prázdná, a neexistuje žádný vstup uživatele, což je zplozený kus na skutečné úrovni 1 pozemky v přibližně 10 sekund, a zplozený kus na skutečné úrovni 10 pozemky v přibližně 1 sekundu.

5.11 Standardní Tetris "skóre"

Standardní Tetris ocenění pouze body za úkon na přistání za jeden kus.
Neexistují žádné body udělené za tento akt na dokončení jednom řádku, nebo dokončení dva, tři, nebo čtyři řádky současně.
[Poznámka: Některé varianty Tetris udělování bodů za úkon na dokončení okruhů, se exponenciálně zvyšuje bonus pro stále větší počet současně ukončeny linky.
Proto se jedná o strategii pro maximalizaci skóre v těchto variant Tetris zahrnuje vytvoření příležitostí "získat Tetris," slang pro použití "I" tvar získat čtyři souběžné linie a získat spoustu bodů.  ]
Pokud máte prázdné palubě, a nechat bez-"I" kus udělat volný-pád a zemi, nebo jste hned napsat pár "I" non-kus, můžete vytvořit následující bod grafu pomocí pre-obchodní MS-DOS verze 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, non-"I" kusů pokles celkového počtu 18 řádků.
Jedná se o bod rozdílu mezi volným a instant-podzim-pokles případů.
Do experimentování s meziprodukty případech ji lze snadno odvodit následující bod vzorce:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
Všimněte si, že tento vzorec nemá nic společného s vzdálenost kus spadne!
Je naprosto v závislosti na skutečné úrovni, a sankci pro počet iterací kus je dovoleno volně spadají.
Tento trestá uživatele pro potřebují čas na přemýšlení.
Upozorňujeme také, že proto, že kousek nemůže být na počátku otočit, když první tření, hráč je potrestán alespoň jeden volný pád iterační-li střídání jsou povinni umístit figurku do pilot.
To asi nikdy ovlivňuje lidské hráče, pokud nějak: uznávají kus, stiskněte překlad klíče "(vlevo" nebo "vpravo)," stiskněte "otočit" klíčem jednou nebo vícekrát, a stiskněte "pokles" klíče, to vše v méně než 0.5 sekund na úrovni 1, nebo méně než 0.05 sekund na úrovni 10.

6. Standardní Tetris strategie

6.1 Úvod

Strategie pro hraní hry závisí na pravidla hry.
Strategie závisí na parametru, který má být optimalizována.
Ve Standardní Tetris, jeden přežívá o vyplnění řádků, dostane body za přistání kusů, a s