Tetris
Colin Fahey
1. Software
2. Indledning
Denne artikel beskriver, hvordan en computer kan spille det klassiske spil Tetris ved at få oplysninger om bord, bestemme gode aktioner, og at udføre disse handlinger.
Denne artikel indeholder software i stand til at spille Tetris i realtid.
Softwaren indeholder de bedste real-time Tetris-spiller algoritme i det offentlige rum.
Denne artikel definerer regler for "Standard Tetris," en specifikation, baseret på den oprindelige 1986 præ-kommercielle version af Tetris for Personal Computer (PC).
I 2003, software, der er inkluderet i denne artikel blev brugt til at aktivere en computer til at spille Tetris kører på en separat computer.
En almindelig USB video kamera blev brugt til at gøre det muligt for computeren at "se" skærmen på den anden computer.
Et relæ bord blev kontrolleret via en RS-232 interface til, at computeren til at "trykke på tasterne" på tastaturet på den anden computer.
Således er den første computer har et forhold til den anden computer, der ligner en typisk menneskelig spillerens forhold til en computer, når du spiller Tetris; spillets tilstand kun er kendt ved at se på skærmen, og afspilleren aktioner kan kun iværksættes via et tastatur .
Konfigurationen i denne demonstration fastslået, at en computer kan spille Tetris bedre end et menneske under normale real-time Tetris leger betingelser.
3. History of Tetris
I 1985, Alexey Pajitnov og Dmitry Pavlovsky var computer ingeniører på Computing Center of the Russian Academy of Sciences.

Dorodnicyn Computing Centre af Russian Academy of Sciences
Alexey og Dmitry var interesserede i at udvikle og sælge vanedannende computerspil.
De afprøvet flere forskellige spil.
Alexey var inspireret af den antikke græske puslespil, Pentaminos, der er involveret arrangere puslespil brikker lavet af fem kvadrater.
Alexey tænkte på idéen om at arrangere Pentamino stykker, da de faldt i et rektangulært kop, men indså, at de tolv forskellige fem-kantede figurer var for kompliceret til et videospil.
Alexey skiftes til at bruge syv "tetramino" stykker, hver bestående af fire firkanter.
I 1985.6, Alexey Pajitnov programmeret den første version af Tetris på en Electronica 60.

Dmitry Pavlovsky, Alexey Pajitnov, og Tetris.
I 1985-1986, Vadim Gerasimov, en 16-årig high-skolen computer vidunder der arbejdede på akademiet, gennemført Tetris for IBM PC kører MS-DOS operativsystemet.
(Vadim Gerasimov senere gjorde forskning på MIT Media Laboratory, fra 1994 gennem 2003, modtager en ph.d. efter at have gennemført mange interessante projekter:
http://vadim.www.media.mit.edu)

Indførelsen skærmbillede i 1987-1988 præ-kommercielle frigivelse af Tetris for PC

Spillet spille skærmbillede i 1987-1988 præ-kommercielle frigivelse af Tetris for PC
Efter 1987, Tetris spredt rundt om i verden.
The Tetris Company, LLC, ejer Tetris varemærke.
4. Projekter inspireret af Tetris
4.1 0-dimensional Tetris
Endnu ikke udviklet.
4.2 1-dimensional Tetris
Ziga Hajdukovic har udviklet 1-dimensional Tetris software, der kan afspilles i en Internet browser.
Ziga Hajdukovic har også udviklet 1-dimensional Tetris software til mobiltelefoner ved hjælp af Java J2ME platform.
4.3 2-dimensional Tetris
Alle konventionelle Tetris-varianter er i denne kategori.
Dette afsnit omfatter interessante varianter.
4.3.1 Største Tetris spil nogensinde: Delft University of Technology (1995)

Tetris spilles på en bygning; 2000 m^2 areal; Delft University of Technology (1995)

Tetris spilles på en bygning; 2000 m^2 areal; Delft University of Technology (1995)
4.3.2 Et andet Tetris spil spilles på en bygning: Brown University (2000)

Tetris spil vises ved hjælp af lys i vinduerne i en bygning på Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
"Jeg synes, det var blot den mest utrolige én dag, jeg kunne forestille mig i mit liv. Ligesom Steve Jobs altid sagt, turen er den belønning."
"Det fik mig til at tænke på projekter, vi har tilbage i kollegium. Ting, der var næsten undoable at andre mennesker ikke ville synes om at gøre."
Steve Wozniak (2000)
4.3.3 Internet browser spil med MIT "Green Building" image

Vadim Gerisimov's Internet browser Tetris
Denne Internet browser Tetris variant blev oprettet ved Vadim Gerasimov.
Denne Internet browser Tetris træk den "Green" bygning på campus i MIT.
Denne Tetris variant kun har ni kolonner i stedet for de normale ti kolonner.
Denne Tetris variant præsenterer nye stykker med tilfældige retningslinjer.
Vadim Gerasimov er den person, der skrev computeren kode for PC version af Tetris i 1986.
Vadim Gerasimov gjorde Ph.D. forskning på MIT Media Laboratory under 1994-2003, arbejder på mange interessante projekter.
4.3.4 PIC16F84 12 MHz mikrokontroller-baserede NTSC / PAL video Tetris spil

PIC16F84 12 MHz mikrokontroller-baserede NTSC / PAL video Tetris spil
Billedet ovenfor viser den NTSC / PAL videoudgang fremstillet af en PIC16F84 12 MHz mikrokontroller kører software skrevet af Rickard Gunee i 1998.
Videoen signalet er genereret af software kontrol af digitale udgange.
4.3.5 "Scopetris" Oscilloscope Tetris ved Lars Pontoppidan (2007.8)

"Scopetris" Oscilloscope Tetris ved Lars Pontoppidan (2007.8)
Lars Pontoppidan skrev kode for AtMega32 mikrokontroller og tilføjede enkle analoge kredsløb, til at skabe et Tetris version, der kan afspilles på et oscilloskop.
Visse registre over AtMega32 mikrokontroller kontrol 8-bit output signaler, og når passeret gennem en "R-2R" elektrisk modstand kredsløb til digital-til-analog (D/A) konvertering, det resulterende analoge signaler kan styre (x,y) koordinater for et oscilloskop bom (når oscilloskop er sat til "X-Y tilstand)."
YouTube video:
FLV video:
4.3.6 Uklar kode Tetris: C / Unix
Følgende blev uddelt "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 Uklar kode Tetris: Perl kode
Det følgende er Tetris for Perl tolk: Perltris (version 20050717) ved 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 Tetris
Scalable Vector Graphics (SVG) er en standard til at beskrive grafiske objekter ved hjælp XML.

Mozilla SVG Tetris: Tetris gennemføres ved hjælp af en Scalable Vector Graphics (SVG) beskrivelse
4.3.9 Google "widget" Tetris
Google, Yahoo!, og Microsoft og andre selskaber, har fremmet miniature Internet-baserede software navngivne "widgets", der normalt er kendetegnet ved en vis brug af dynamiske data tilgængelige på Internettet.
En sådan widget tilgængelige via Google er et Tetris spil.
Følgende eksempel er nuttet, men figurer rotere i irriterende måder:

Google "widget" Tetris
Andre Google widgets:
4.3.10 MIT forskning papir: "Tetris is Hard, Even to Approximate" (2002)
Til følgende forskningsaktiviteter dokument indeholder et bevis for, at en vis form for Tetris variant er "NP-komplet."
Erik D. Demaine, Susan Hohenberger, og David Liben-Nowell, "Tetris is Hard, Even to Approximate", Technical Report MIT-LCS-TR-865, Massachusetts Institute of Technology, 2002.10.21.
"NP udfyldning" er en klassificering af den tid, omkostninger og rumfart omkostningerne ved en algoritme.
Andre klassifikationer omfatte "P" og "NP".
En klassificering af "NP udfyldning" indebærer, at problemerne er større end nogle mindre størrelse, algoritme er usandsynligt at finde en ønsket løsning i et konkret beløb på tid eller rum.
4.3.11 Forskning dokument: "Applying reinforcement learning to Tetris"
Følgende papir, der blev offentliggjort 2005.5.30 ved Donald Carr på Computer Science afdeling på Rhodes University, Sydafrika, præsenterer anvendelsen af "forstærkning lære" at Tetris.
4.3.12 Tetris Nederdel (2007.11)

Tetris Nederdel (2007.11)
De Tetris nederdel blev oprettet ved "Lucy" ("hissyfitoly" om etsy.com) før 2007.11.
Fra skaberen's beskrivelse af nederdel (der udbydes til salg på 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."
Forum kommentarer til denne nederdel:
"Mennesket at nederdel sutter på Tetris"
"Ahahahaha, jeg troede det samme."
"Der er en komplet linje ned i bunden ... afsluttet linjer forsvinder." "DO OVER" "."
"Der bør være en plet i ryggen eller foran hvor lang stykke ville passe perfekt ..."
"Det er en virkelig grim nederdel selv om. Min kæreste kunne ikke købe mig nok chokolade og blomster til at overbevise mig om at bære denne ting."
4.3.13 Tetris fase handle (2007.4)

Tetris fase handle (2007.4)
"Fra dem, der bragte dig Triforce i 2006 ... Leveres den næste generation af livløs genstand skit ... Tetris."
Lokalt cached video i Flash video (FLV) format (brug VLC at spille):
4.3.14 Lattervækkende Tetris varianter af en japansk tv viser

Tetris varianter af japansk tv viser
Denne video segment fra et japansk tv viser omfatter lattervækkende variationer af Tetris, herunder:
brikker at forsvinde ved landingen, et stykke, som fylder en hel række (dermed afslutte rækken efter landing), flere brikker falder på samme tid, uregelmaessigt formede stykker, et langt stykke at der er lidt for bred til at passe i et hul (for at undgå en 4-rækken færdiggørelse!), Mario rammer en svamp og blive enorm og dø! lille stykke vragrester tilbage efter rækker er ødelagt, opadgående alvor gør stykker flyde til toppen osv.
Lokalt cached video i Flash video (FLV) format (brug VLC at spille):
4.3.15 "The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)

"The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)
Fra beskrivelsen YouTube:
"TETRIS spilles af virkelige menneskelige væsener sidder i et auditorium:"
TETRIS er 4th video udførelsen af GAME OVER Project, instrueret af den schweiziske kunstner Guillaume REYMOND (NOTsoNOISY kreative bureau).
Dette stop-motion video blev skudt og spillede for "LES URBAINES" festival
http://www.urbaines.ch på Palais de Rumine (Lausanne, Schweiz) om November 24th 2007.
Lokalt cached video i Flash video (FLV) format (brug VLC at spille):
4.3.16 2.5-dimensional Tetris
Udtrykket "2.5-dimensional" bruges her forstås som en ikke-retvinklede baggrund af en to-dimensional udgave af Tetris, med en vis tykkelse i den tredje dimension.
(Find linket "tetris3d" i "F7: GAMES".)
4.4 3-dimensional Tetris

Linux / GTK version
Tre-dimensionel Tetris i form af en Java applet til Internet browsere:
Tre-dimensionel Tetris for Windows operativsystem:
4.5 4-dimensional Tetris

Greg Kaiser's "HyperTetris" (1996): en 4-dimensional Tetris
I [1996], [...], Greg Kaiser at sammensætte en fire-dimensional variant af det klassiske spil.
Brug IrisGL (a.k.a. igl) han oprettede en arbejdsgruppe, hvis det svært at spille spil med fire sub-skærmene til at vise forskellige tredimensionelle aspekter af hele vildt-rummet.
[Fordi] er der ikke en let [forståelig] måde at trække fire-D objekter på en to-D skærm, de fire sub-synspunkter er en praktisk metode til at bearbejde og visualisere rotation og oversættelse af stykker gennem de fire dimensioner ( i spillet kaldet x,y,z,w).
Snarere end at udfylde linjer i blokke som i originalen, at målet i dette tilfælde er at udfylde et komplet terning i x,y,z subview (normalt 4 af 4 af 4).
De øvrige subviews der indeholder "w" dimension er arrangeret i et standard 4 af 4 af 10 blokere arrangement med "w" er lang, "vertical" dimension i alle tre tilfælde med forskellige baser i (x,y), (x,z), (y,z).
Gravity retsakter i "-w" retning, så brikker falder "ned" i de tre lange subviews at omfatte "w", og ikke bevæger medmindre ved spilleren kontrol i sidste (x,y,z) subview.
Det tager et stykke tid at vænne sig til, at sige det mildt.
Hvis af nogle mirakel tålmodighed eller ændre parametrene for spillet, en ikke fuldføre en terning, vil forsvinde som de udfyldte linjer gøre i den originale Tetris, selvom ingen score er holdt i HyperTetris.
Benjamin Bernard (2000)
4.6 N-dimensional Tetris

Polytope Tetris (2003): en N-dimensional Tetris spil variant
Polytope Tetris er n-dimensionsstabil Tetris.
Inspireret af HyperTetris program, Polytope Tetris giver dig mulighed tons spille Tetris i enhver ANTALLET AF dimension.
Spil Tetris i 3D, 4D, 5D, eller mere.
HyperTetris er en langt catchier navn end Polytope (def) Tetris, men jeg kan ikke stjæle navnet.
5. "Standard Tetris" specifikation
5.1 Indledning
Definitionen af "Standard Tetris" er en idealized model af de vigtigste egenskaber og opførsel af de første IBM-PC gennemførelsen af Tetris spil (ca. 1986-1988).
De idealized model er baseret på betyde den formodede hensigter for udviklere af den første IBM-PC gennemførelsen af Tetris spil.
For eksempel, forekommer det rimeligt at antage, at udviklerne af den første IBM-PC gennemførelsen af Tetris vildt bestemt til at vælge den form for hver ny henhørende stykke "tilfældigt," og at brugen af Borland C gennemførelsen af rand() funktion blot var en praktisk tilnærmelse af hensigten.
Definitionen af "Standard Tetris" specificerer, at formen af hver ny henhørende stykke er at blive udvalgt "tilfældigt."
Dette ideal problem kan ikke nås ved enhver gennemførelse, men implementeringer kan tilnærmelsesvis den ideelle opførsel.
Selv om der ikke gennemførelsen kan udmærket gennemføre definitionen af "Standard Tetris," idealerne om "Standard Tetris" inddrage objektive kendetegn, og implementeringer kan sammenlignes i henhold til deres relative nærhed til idealerne om "Standard Tetris."
Dette afsnit beskriver en række elementer, adfærd og regler, som kollektivt, definere "Standard Tetris."
5.2 Standard Tetris bord
Tavlen er et gitter af celler, der har 10 kolonner og 20 rækker, for i alt 10 * 20 = 200 celler.

Standard Tetris bord (10 kolonner, 20 rækker)
Hver celle kan enten være ubesatte (tomme) eller besatte (fulde).
5.3 Standard Tetris stykker
Der er syv (7) standard Tetris stykker, med følgende brev navne:
{ O, I, S, Z, L, J, T }
Brevet navne er inspireret af figurer i stykker.

De syv Standard Tetris stykker og deres "retningslinjer"
Den prik på (0,0) sammenfaldende med bord holdning (6,20) når stykke synes ved første øjekast.
Den første kolonne viser de oprindelige "retningslinjer."
I det følgende ordet "orientering" bruges til at beskrive en tilstand af et stykke, inden for en række tilladt stater, der kan skyldes en rotation mod uret begivenhed.
Ændre "orientering" fra et bestemt "orientering" af en "I, S," eller "Z" stykke, kræver en kombination af en rotation og en oversættelse.
Derfor er ordet "orientering" er brugt her for at betyde noget mere end rotation alene.
Men "orientering" kan ændre kun som svar på en rotation mod uret hændelsen, og den onde cirkel af særskilte "retningslinjer" for hvert stykke foretages der, eller kampe, er cyklus som følge af ren rotationer.
Den særlige brug af ordet "orientering" i denne sammenhæng, er næsten lig med den betydning af ordet "rotation" eller "vinkel," men ordet "orientering" bruges i stedet for "tur" til at forsøge at bringe opmærksomhed på, at nogle stykker kræve mere end en rotation til at producere sæt tilladt stater som følge af "rotation" mod uret begivenheder.
Stykker kan kun skifte retningslinjer (eller underkaste en specifik horisontal eller vertikal oversættelse) hvis den deraf følgende status for det stykke ikke ville have nogen besatte (fulde) celler uden for det område af bestyrelsen og ville ikke have nogen besatte celler, der overlapper nogen på nuværende tidspunkt besat celler af bestyrelsen.
(I denne regel, de besatte (fulde) celler af den brik, betragtes ikke som en del af det "i øjeblikket er besat celler af bestyrelsen"
I de følgende bemærkninger, og enhver henvisning til et resultat af en rotation mod uret begivenhed er lavet med den forudsætning at en sådan rotation faktisk kan udføres i betragtning af de eksisterende vilkår for det stykke og bord.
De "O" (rubrik) stykke kun har et enkelt orientering, og ikke ændrer placeringen af nogen af sine besatte (fulde) celler som svar på eventuelle mod uret rotation begivenhed.
De "I" (linje) brik har to mulige retningslinjer, der oprindeligt blev vist i en horisontal orientering.
De "I" stykke suppleanter mellem de to retningslinjer, som svar på hinanden følgende mod uret rotation begivenheder.
De "S" og "Z" stykker har hver to mulige retningslinjer.
Disse stykker hver suppleant mellem to retningslinjer, som svar på hinanden følgende mod uret rotation begivenheder.
De "L", "J", og "T" stykker har hver fire mulige retningslinjer, og disse retningslinjer er resultatet af enkle rotationer omkring midten punkter på figurer.
Når en brik først optræder om bord, brik har sin "store akse" i en horisontal orientering, og den brik står øverst på brættet.
Der er derfor ingen brikker er i første omgang kan have deres retningslinjer ændres. Det stykke skal stige ned ved en række, der har mulighed for at have sin orientering ændret.
Når en brik er faldet med en række på bordet, alle brik retningslinjer kan nås (hvis det stykke er ikke for tæt på sidevæggene eller til den aktuelle bunke stykker).
5.4 Standard Tetris diagram
Det følgende er en tilnærmelsesvis diagram for et standard Tetris spillet.

Omtrentlig diagram for et standard Tetris vildt

Omtrentlig diagram for et standard Tetris vildt
5.5 Standard Tetris stykke skabelse
Følgende diagram viser de (4 celle * 2 celler) regionen om bord, hvor alle brikker vises, når oprettet.

Region, hvor stykker vises, når skabt i Standard Tetris
Når en ny brik først optræder om bord, dets oprindelse er sammenfaldende med prik på dette diagram, og emnet vil være helt indesluttet af det skraverede område på dette diagram.
Når et nyt spil er startet, en fuldstændig frit fald straks går, og den første frit fald iteration et stykke er opfostrede øverst på brættet.
Under normale spil, når en specifik frit fald iteration "lander" et stykke, en fuldstændig frit fald straks går, og på den næste frit fald iteration et stykke er opfostrede øverst på brættet.
Når en brik er udklækkede, hvilken type brik er markeret ved hjælp af følgende algoritme:
pieceIndex = 1 + (randomInteger % 7); // 1..7
Fordi der er en konstant p (= 1/7) chance for at vælge en bestemt slags smykke, og alle stykker af samme type er ikke skelnes, sandsynligheden for at have nøjagtigt k stykker af en bestemt type efter n forsøg følger en binomial distribution:
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 )
Når vi vælger blandt de 7 (syv) stykker tilfældigt, sandsynligheden for at få et bestemt stykke er p=(1/7).
Hvis vi gør dette n=70 gange, for eksempel, sandsynligheden for at få præcis k stykker (med k i intervallet 0 til n) er givet ved binomial distribution, som vist i nedenstående billede.

Binomial distribution til n=70, p=(1/7)
Således kan man forudsige den gennemsnitlige samlede stykker af samme type tildeles et samlet antal tilfældige stykker, og man kan også beregne den forventede varians og standardafvigelse (kvadratroden af variansen):
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
Når vi konverterer en tilfældig værdi til et stykke indeks, vi tolker det som følger:
value piece
===== =====
1 "O"
2 "I"
3 "S"
4 "Z"
5 "L"
6 "J"
7 "T"
[Den præ-kommercielle MS-DOS version af Tetris anvendt de tilfældige tal-funktionen tilbydes af Borland Pascal compiler.
Denne funktion benyttes en 32-bit tilstand variabel.
Derfor er den sekvens af tilfældige tal var begrænset til 2^32 forskellige værdier.
Derfor, i princippet, at en spiller kan finde, efter at slippe måske 10 stykker, det nøjagtige sted i sæt 2^32 tal svarer til den aktuelle situation i spillet.
Hvis Tetris simuleringer er udført med det faste sekvens af 2^32 stykker, så optimale beslutninger kan findes for hvert sted i den rækkefølge.
(Der synes at være tilstrækkelige muligheder for at blive bordet til et helt tomt bord stat, der gør det muligt for os at få synkroniseret med precomputed optimale løsning sti.)
Risikoen ved at bruge en simpel tilfældig tal generator i en simulering beregnet til at finde en optimal løsning på et problem er, at den løsning vil være optimal kun for de særlige sti gennem problem rummet er udvalgt af den simple tilfældige tal generator. ]
5.6 Standard Tetris kontrol
Under spillet, således indgange er tilgængelige:
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
Alle input får virkning på den stigende kant af den positive input (på knap pressen, i modsætning til knap udgivelse).
Når en knap Tryk opstår, dette tæller som en anmodning.
Holding en knap nede ud over en vis tid kan resultere i "auto-repeat" funktionen af et tastatur, genererer nye knappen presser - men denne funktion er eksterne i forhold til spillets motor.
Indgangene er angivet ovenfor i overensstemmelse med den oprindelige Tetris spil.
Roter anmodninger kan blive henrettet, hvis der er nogen overlapning mellem den ønskede orientering og sætte væv på den nuværende bestyrelse (med undtagelse af den faldende brik), og hvis den ønskede orientering har ingen sæt celler uden for bord-området.
Oversæt anmodninger kan blive henrettet, hvis der er nogen overlapning mellem den ønskede oversat konfiguration og sæt celler om den nuværende bestyrelse (bortset fra den faldende brik), og hvis den ønskede oversat konfiguration har ingen sæt celler uden for bord-området.
Input anmodninger er behandlet med en latenstid, der afhænger af frame rate af spillet (eksempel: 75 Hz), og anmodninger får virkning (hvis gyldig) øjeblikkeligt.
Et stykke kan være faldet uden line faldende trin indtræder.
Et stykke kan oversættes flere gange til venstre eller højre, derefter faldt, alle uden oplever en officiel linje faldende skridt.
Fordi en nyligt udklækkede stykke ikke kan drejes (fordi den har viklet sig ind mod den øverste kant af bestyrelsen), så må spilleren acceptere mindst ét stykke henhørende skridt, hvis rotationer er ønsket eller påkrævet.
Virkningen på den score, er ubetydeligt.
5.7 Standard Tetris stykke "landing"
Hvis en brik er simpelthen faldende, det falder med en enkelt række i løbet af hvert stykke henhørende iteration.
Der vil være en iteration, der flytter det fra et sted uden nogen kontakt med horisontale overflader til et sted, der har kontakt med horisontale overflader. Når denne gentagelser opstår, brikkerne er i hvile kontakt.
Hvis en iteration begynder med en brik i hvile kontakt med en vandret flade, brik "lander," og bliver en del af den statiske bunke.
5.8 Standard Tetris "linjer afsluttet"
En afsluttet rækken er en række i bunken, hvor alle celler er besat. Når en afsluttet rækken er elimineret fra bunken, og den rækker over elimineret Rækken er flyttet ned ved en række at fjerne den kløft, dette tæller som et udfyldt "linje."
Når en brik lander det bliver en del af bunken.
Umiddelbart efter brik lander, bunken er kontrolleret for afsluttet rækker, og alle afsluttede rækker er fjernet.
Op til fire rækker kan afsluttes samtidigt.
Nedenstående tabel giver den øvre grænse på strækninger afsluttes samtidigt med et enkelt stykke:
piece max. simultaneous
rows completed
===== ==================
"O" 2
"I" 4
"S" 2
"Z" 2
"L" 3
"J" 3
"T" 2
5.9 Standard Tetris "niveauer"
Standard Tetris har 10 sværhedsgrader, nummereret 1 (en) gennem 10 (ti), med plan 1 er de "mindst vanskelige."
Niveauet indeks er det højst to værdier:
actualLevel = max( initialLevel, earnedLevel );
De initialLevel værdi er det niveau, spilleren vælger, når der begynder et nyt spil.
Mønsteret af niveau som en funktion af afsluttede linjer er let observeret i før-kommercielle MS-DOS version af 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
Således er earnedLevel værdi er beregnet efter følgende algoritme:
if (linesCompleted <= 0)
{
earnedLevel = 1;
}
else if ((linesCompleted >= 1) && (linesCompleted <= 90))
{
earnedLevel = 1 + ((linesCompleted - 1) / 10);
}
else if (linesCompleted >= 91)
{
earnedLevel = 10;
}
5.10 Standard Tetris faldende iteration forsinkelse
Standard Tetris har en real-time forsinkelse mellem successive linje frit fald gentagelser, som er en funktion af de aktuelle vanskeligheder plan.
Følgende forhold mellem plan-indekset og falder iteration forsinkelse er baseret på gentagne stopuret målinger på alle niveauer af den præ-kommercielle MS-DOS version af 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
Således har vi fastslå følgende formel for iteration forsinkelse værdi som en funktion af den konkrete plan indeks:
iterationDelay = ((11 - actualLevel) * 0.05); // [seconds]
Hvis nævnet er tom, og der er ingen bruger input, en opfostrede brik i den faktiske niveau 1 lander på ca 10 sekunder, og en opfostrede brik i den faktiske niveau 10 lander på ca 1 sekund.
5.11 Standard Tetris "score"
Standard Tetris kun tildeles point for den retsakt landings et stykke.
Der er ingen point for den retsakt af at fuldføre en enkelt linje, eller at færdiggøre to, tre eller fire linjer samtidigt.
[Bemærk: Nogle varianter af Tetris tildele point for den handling at afslutte linjer, med en eksponentielt voksende bonus for et stigende antal samtidigt afsluttet linjer.
Således strategien for maksimering score i sådanne varianter af Tetris indebærer oprettelse af muligheder for at "få en Tetris," slang for at bruge "I" forme at få fire samtidige linjer og få masser af point. ]
Hvis du har et tomt bord, og du lader en ikke-"I" stykke gøre en frit fald og jord, eller du straks drop en ikke-"I" stykke, kan du oprette følgende punkt diagram ved hjælp af den præ-kommercielle MS-DOS version af 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, ikke-"I" brikker falder på i alt 18 rækker.
Dette er baggrunden for de point forskel mellem de frit fald og instant-slip tilfælde.
Ved at eksperimentere med mellemliggende tilfælde er det let at udlede følgende punkt formel:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
Bemærk at denne formel har intet at gøre med den afstand et stykke falder!
Det er strengt en funktion af den konkrete plan, og en straf for det antal gentagelser et stykke er tilladt at falde frit.
Dette straffer en bruger har behov for tid til at tænke.
Bemærk også, at fordi en brik kan ikke i første omgang blive roteret, når den første gydninger, at en spiller straffes med mindst et frit fald iteration hvis rotationer er forpligtet til at placere en brik i bunken.
Dette er sandsynligvis aldrig påvirker menneskers spillere, medmindre de på en eller anden måde: anerkende den brik, tryk oversættelse nøgler "(venstre" eller "højre)," tryk på "dreje" nøglen en eller flere gange, og tryk på "drop" nøgle, alt sammen inden for mindre end 0.5 sekunder på niveau 1, eller mindre end 0.05 sekunder på niveau 10.
6. Standard Tetris strategi
6.1 Indledning
En strategi for at spille et spil, afhænger af spillets regler.
En strategi, afhænger af hvilken parameter der skal optimeres.
I standardversionen Tetris, en overlever ved at ud