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 парчета като те паднаха в правоъгълен чашка, но разбрах, че дванадесет различни пет квадратни форми бяха твърде сложни за видео играта.
Alexey преминали към използването на седем "tetramino" фигури, направени от всеки четири полета.
В 1985.6, Alexey Pajitnov програмирани първия вариант на Tetris на Electronica 60.
d_pavlovsky_and_a_pajitnov.jpg
Dmitry Pavlovsky, Alexey Pajitnov и Tetris.
В 1985-1986, Vadim Gerasimov, 16-годишният гимназия компютър prodigy които работи в Академията, която се осъществява 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 1-квадрат Tetris

Ziga Hajdukovic е разработил 1-квадрат Tetris софтуер, които могат да бъдат възпроизвеждани в Интернет браузър.
tetris_1d_ziga_hajdukovic.jpg
1-квадрат Tetris от Ziga Hajdukovic http://www.tetris1d.org
Ziga Hajdukovic също е разработена 1-квадрат 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 игра на екрана чрез Светлини в прозорците на сградата на Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
brown_university_bastille_tetris_woz_play.jpg
Steve Wozniak, cofounder на Apple Computers, игра Tetris; Brown University (2000) http://bastilleweb.techhouse.org
"Мисля, че това е просто най-невероятни един ден мога да си представим нещо в живота ми.  Подобно на Пристанищен хамалин Jobs винаги заяви, пътуването е от отсрещната страна."
"Тя ме прави мислите на проекти, направихме обратно в колеж.  Нещата, които бяха почти undoable, че други хора не мислят за това."
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 Този вариант има само девет колони, вместо на стандартния десет колони.
Този вариант на 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" Oscilloscope Tetris от Lars Pontoppidan (2007.8)

scopetris_lars_pontoppidan_2007_aug.jpg
"Scopetris" Oscilloscope Tetris от Lars Pontoppidan (2007.8)
http://pontoppidan.info/lars/index.php?proj=scopetris
Lars Pontoppidan пише кода за AtMega32 микроконтролера, и добавя просто аналогов движение, за да създадете Tetris версия, която може да се играе на един oscilloscope.
Някои регистри на AtMega32 микроконтролера контрол на 8-битов изход сигнали, и, когато е преминала през един "R-2R" електрически резистори схема за цифрово-аналогово към (D/A) преобразуване, в резултат на аналогови сигнали могат да контролират (x,y) координати на oscilloscope лъч (oscilloscope, когато е зададена "X-Y режим)."
YouTube видео:
http://www.youtube.com/watch?v=Hui5Azx5jQo
FLV видео:
scopetris_lars_pontoppidan_2007_aug.flv

4.3.6 Obfuscated код 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 Obfuscated код 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."
Форум коментари за тази пола:
"Човекът, че пола суча в Tetris"
"Ahahahaha, Мислех, че едно и също нещо."
"Има пълен ред определени в дъното ...  завършени линии изчезне."  "ГО НАД" "."
"Трябва да има място в предната или задната част, където отдавна би в перфектно ..."
"Това е наистина грозно пола все пак.  Моята приятелка не можа да закупят достатъчно ми шоколад и цветя, за да ме убеди, че да носят нещо."

4.3.13 Tetris етап акт (2007.4)

tetris_stage_act.jpg
Tetris етап акт (2007.4)
http://www.youtube.com/watch?v=sZrs8ZCO8xM
"Заведени от онези, които ви Triforce в 2006 ...  Идвам на следващото поколение на обекта пък Скит ...  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, включително:
фигури, които изчезват при кацане, частица, че изпълва целия ред (като по този начин решаването на един ред при кацане), няколко парчета, включени едновременно, неправомерно оформени фигури, дълго парче, че е малко прекалено голям за да побере в една пропаст (предотвратяване на 4-ред завършването!), 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 е 4-ти видео изпълнение на GAME OVER Project, насочени от швейцарски художник Guillaume REYMOND (NOTsoNOISY творческа агенция).
Това стоп-движение видео е бил застрелян и играе за "LES URBAINES" фестивала http://www.urbaines.ch в Palais де 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, с дебелина в третото измерение.
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 за интернет браузъри:
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) той създал работна, ако е трудно да се играе, играта използва четири под-екрани с изобразен на триизмерната различни аспекти на цялата игра-пространство.
[Защото] там не е лесно [разбираема] начин да се съставят четири-D обекти по два-D екран, четирите подгрупи мнения са практически начин да манипулират и визуализира ротация и превод на парчета през четирите измерения ( в играта, наречена 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): N една триизмерна игра Tetris вариант
http://polytopetetris.sourceforge.net
Polytope Tetris е n-dimensionally Tetris.
Изхождайки от HyperTetris програма, Polytope Tetris ви позволява т играят Tetris във всеки БРОЯТ НА измерение.
Play Tetris в 3D, 4D, 5D, или повече.
HyperTetris е много по catchier име, отколкото Polytope (def) Tetris, но не мога да открадне името.
http://polytopetetris.sourceforge.net

5. "Стандартно Tetris" спецификация

5.1 Въведение

Определението на "Стандарт Tetris" е idealized модел от най-важните характеристики и поведение на първия IBM-PC изпълнението на Tetris игра (circa 1986-1988).
В idealized модел се основава на inferring явното намеренията на разработчиците на първия IBM-PC изпълнението на Tetris игра.
Така например, изглежда разумно да infer, че разработчиците на първия 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 реда)
Всяка клетка може да бъде или unoccupied (празен), или заети (пълно).

5.3 Стандартно Tetris фигури

Има седем (7) стандарт Tetris фигури, със следните имена на писмото:
{ O, I, S, Z, L, J, T }
В писмото имена са вдъхновени от формите на парчета.
tetris_diagram_pieces_orientations_new.jpg
Седемте Стандарт Tetris фигури и техните "ориентации"
В точка в (0,0) съвпада с позицията (6,20) съвет, когато се появява първото парче.
Първата колона показва първоначална "ориентация."
В следващата, думата "ориентация" е използвана за описание на състоянието на всяко едно парче, в рамките на набор от позволени състояния, които могат да са резултат от една авъртане ротация на събитието.
Промяна на "ориентацията" от определена "ориентация" на "I, S," или "Z" парче, изисква комбинация от въртене и превод.
Следователно, думата "ориентация" е използван тук, за да означава нещо повече от ротация самостоятелно.
Въпреки това, "ориентация" може да се променя само в отговор на авъртане ротация на събитието, както и цикъл на отделни "ориентири" за всяка фигура се доближава или мачове, на цикъла в резултат на чисто ротации.
Специалните използването на думата "ориентация" в този контекст е почти равна на смисъла на думата "ротация" или "ъгъл," но думата "ориентация" е използван вместо това на "ротационен принцип" да се опитват да въвеждат внимание на факта, че някои парчета изискват повече от ротация за производство на набор от позволени състояния, произтичащи от авъртане "ротация" събития.
Фигури могат да преминат само насоки (или подложени на специфични хоризонтални или вертикални превод), ако в резултат на състоянието на парче няма да имат всички заети (пълно) клетки отвъд зоната на борда и няма да имате някакви заети клетки, които се застъпват всички заети в момента клетки на борда.
(В това правило, заемани (пълно) клетки на парче не се считат за част от "клетките в момента заема на борда"
В следващите коментари, всяко позоваване в резултат на авъртане ротация случай се прави с допускането, че такава ротация може действително да се извършва, като се има предвид съществуващите условия на парче и на борда.
В "O" (кутия) фигура е само една ориентация, и не се променят местата на всеки от неговите заети (пълно) клетки в отговор на всяко събитие авъртане ротация.
В "I" (ред) парче има два възможни ориентации, първоначално включени в хоризонтална ориентация.
В "I" парче заместници между двете насоки, в отговор на последователно редуване на авъртане събития.
В "S" и "Z" парчета всеки има два възможни ориентации.
Тези фигури всеки алтернативен между две насоки, в отговор на последователно редуване на авъртане събития.
В "L", "J", както и всяка "T" парчета са четири възможни ориентации, както и тези насоки са резултатите от прости ротации около центъра точки на форми.
Когато фигура първо се появява на борда, е "основна" фигура "ос" в хоризонтална ориентация, както и парче е в горния край на борда.
Следователно, не са фигури, първоначално в състояние на техните ориентации се промени.  Парчето трябва да спускат от един ред да имат възможността да си ориентация се промени.
След като е паднала част от един ред на борда, всички парче ориентация може да бъде постигната (поемането на парче не е твърде близко до страничните стени, или на настоящите Инструменти на фигурите).

5.4 Стандартно Tetris flowchart

По-долу е приблизителна flowchart за стандартен Tetris игра.
standard_tetris_flowchart_for_timer_event_001.gif
Приблизителна flowchart за стандартен Tetris игра
standard_tetris_flowchart_for_input_events_001.gif
Приблизителна flowchart за стандартен Tetris игра

5.5 Стандартно Tetris парче създаването

Следната диаграма показва (4 клетки * 2 клетки) район на борда, когато всички фигури се появяват, когато създаден.
tetris_diagram_board_10x20_spawn_area.jpg
Регион, където се появяват, когато парчета, създадени през Стандарт Tetris
Когато едно ново парче първо се появява на борда, неговия произход съвпада с точка по тази схема, както и парче ще бъде напълно овладяна с щрихованото зона на тази схема.
Когато се стартира нова игра, пълен свободни попадат забавяне elapses, както и на първата свободна попадат итерация частица се зареди в горния край на борда.
По време на нормалната игра играят, когато определена за свободна попадат итерация "земи" частица, пълен свободни попадат забавяне elapses и на следващата свободни попадат итерация частица се зареди в горния край на борда.
Когато дадена фигура се зареди, типа на парче е избран с помощта на следните алгоритъм:
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 (седем) броя на случаен принцип, вероятността за получаване на конкретна фигура е p=(1/7).
Ако направите това n=70 пъти, например, вероятността за получаване на точно k фигури (с k в диапазона 0 да n) е дадено от Тригонометрия разпределение, както е показано в следната картинка.
binomial_distribution_n70_p7th.jpg
Тригонометрия разпределение за n=70, p=(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 "линии приключи"

А попълнен ред е ред на пилотни, в която всички клетки са заети.  Когато приключи ред е отстранен от пилотни и реда над елиминира ред са изместен от един ред за отстраняване на пропуск, това се счита за завършена "линия."
Когато фигура земи, той става част от пилотни.
Веднага след като парче земи, на пилотни се проверяват за завършено редове, както и всички попълнени редове са преустановени.
До четири реда може да бъде едновременно приключен.
Таблицата по-долу дава горната граница на линии едновременно приключен с едно парче:
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 (десет), с нивото 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 }