Tetris
Colin Fahey
1. Software
2. Uvod
U ovom se članku opisuje kako se računalo može igrati klasični video igra Tetris uz dobivanje informacija o brodu, određivanje dobra akcija, i obavljanje te radnje.
Ovaj članak uključuje i softver, sposoban igrati Tetris u realnom vremenu.
Softver uključuje najbolje real-time Tetris igra algoritam u javnom vlasništvu.
Ovaj članak definira pravila za "Standard Tetris," specifikacija na temelju izvorne 1986 pre-komercijalna verzija Tetris za raèunalni (PC).
U 2003, softver uključen u ovaj članak je bio koristi za uključivanje računala igrati Tetris prikazuju na posebnom računalu.
Običnog USB video kamera je koristi za uključivanje računala "vidjeti" zaslon od drugih računala.
A relej zajednica je kontroliran putem jednog sučelja RS-232 omogućiti računalu da "pritisnite tipke" na tipkovnici od drugih računala.
Ovako, prvo računalo ima odnos na drugom računalu koje je slično tipično ljudskih igrača odnos na računalu kada igrati Tetris; igre drzava je samo poznat po looking at the screen, i igrač akcija može se pokrenuti samo putem tipkovnice .
Oblik demonstracije u ovoj utvrđeno da računalo može igrati Tetris bolje od ljudskih, pod normalnim real-time igrati Tetris uvjetima.
3. Povijest Tetris
U 1985, Alexey Pajitnov i Dmitry Pavlovsky računala su inženjeri na Computing Center of the Russian Academy of Sciences.

Dorodnicyn Computing Centre od Russian Academy of Sciences
Alexey i Dmitry su zainteresirani za razvoj i prodaju zarazna računalnih igara.
Oni su testirani iz nekoliko različitih igara.
Alexey je bio nadahnut grčkog puzzle game, Pentaminos, koja je obuhvaćala organiziranje puzzle komada od pet kvadrata.
Alexey mislio na ideju o uređenju Pentamino komada kao i oni padoše u jednom pravokutnom čašu, ali shvatio da je dvanaest različitih pet kvadratnih oblika su previše složen za video igre.
Alexey prebacili na korištenje sedam "tetramino" komada, svaka sastavljena od četiri kvadrata.
U 1985.6, Alexey Pajitnov programirana prva verzija Tetris na Electronica 60.

Dmitry Pavlovsky, Alexey Pajitnov, i Tetris.
U 1985-1986, Vadim Gerasimov, 16-godišnjaka high-school računalo čudovište koji je radio na Akademiji, provodi Tetris za IBM PC trčanje MS-DOS operacijski sustav.
(Vadim Gerasimov kasnije je istraživanje na MIT Media Laboratory, od 1994 do 2003, nakon primitka dr.sc. popunjavanju mnogo zanimljivih projekata:
http://vadim.www.media.mit.edu)

Uvođenje ekrana od 1987-1988 pre-commercial release of Tetris za PC

Igra igrati ekrana od 1987-1988 pre-commercial release of Tetris za PC
Nakon 1987, Tetris proširila diljem svijeta.
The Tetris Company, LLC, vlasnik je Tetris zaštitni znak.
4. Projekti inspirirani Tetris
4.1 0-dimenzionalan Tetris
Not yet developed.
4.2 1-dimenzionalan Tetris
Ziga Hajdukovic je razvila 1-dimenzionalan Tetris softver koji se može igrao u Internet pregledniku.
Ziga Hajdukovic je također razvila 1-dimenzionalan Tetris softvera za mobilne telefone pomoću Java J2ME platforme.
4.3 2-dimenzionalan Tetris
Sve konvencionalnog Tetris varijante su u ovoj kategoriji.
Ovo poglavlje sadrži zanimljive varijante.
4.3.1 Najveća Tetris igra ikad: Delft University of Technology (1995)

Tetris igara na zgradi; 2000 m^2 površine; Delft University of Technology (1995)

Tetris igara na zgradi; 2000 m^2 površine; Delft University of Technology (1995)
4.3.2 Drugi Tetris igra igrao na zgradi: Brown University (2000)

Tetris igra prikazana pomoću svjetla u prozorima na zgradi u Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
"Mislim da je upravo najviše nevjerojatne jednodnevni što sam mogao zamisliti u moj život. Kao i uvijek, rekao je Steve Jobs, put je nagrada."
"To me mislite o projektima nismo u koledž. Stvari koje su bile gotovo undoable da drugi ljudi ne bi misliti radiš."
Steve Wozniak (2000)
4.3.3 Internet preglednik igra s MIT "Green Building" image

Vadim Gerisimov's Internet preglednik Tetris
Ovaj internet preglednik Tetris varijanta je izrađen od strane Vadim Gerasimov.
Ovaj internet preglednik Tetris features je "Green" zgrada na kampusu u MIT.
Ova varijanta Tetris samo je devet stupca, umjesto standardnog deset stupaca.
Ova varijanta Tetris predstavlja novi komada sa slučajnim usmjerenja.
Vadim Gerasimov je osoba koji je napisao računalo kod za PC verzija Tetris u 1986.
Vadim Gerasimov je dr.sc. istraživanja na MIT Media Laboratory tijekom 1994-2003, radite na mnogo zanimljivih projekata.
4.3.4 PIC16F84 12 MHz mikro-based NTSC / PAL video Tetris igra

PIC16F84 12 MHz mikro-based NTSC / PAL video Tetris igra
Slika iznad pokazuje NTSC / PAL video output produced by jednom PIC16F84 12 MHz sklop izvodi softver je napisao / la Rickard Gunee u 1998.
Video signal se generira softver kontrolu digitalnog izlaza.
4.3.5 "Scopetris" osciloskop Tetris by Lars Pontoppidan (2007.8)

"Scopetris" osciloskop Tetris by Lars Pontoppidan (2007.8)
Lars Pontoppidan napisao kod za AtMega32 mikro, i dodao jednostavan analogni strujni krugovi, kako bi izradili Tetris verziju da bi se igrati na osciloskop.
Neke se prijavljuje na AtMega32 mikro kontrole 8-bitni izlaz signala, i, kada je prolazio kroz "R-2R" električnih otpora sklop za digitalno-analogna pretvorba (D/A), rezultirajući analogni signali mogu kontrolirati (x,y) koordinate osciloskop jedan snop (kada je osciloskop postavljena na "X-Y mod)."
YouTube video:
FLV video:
4.3.6 Obfuscated code Tetris: C / Unix
Sljedeći je bio nagrađen "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 Obfuscated code Tetris: Perl code
Sljedeći je Tetris za Perl tumača: Perltris (verzija 20050717) by 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) je standard za opisuje grafički objekti pomoću XML.

Mozilla SVG Tetris: Tetris provodi pomoću Scalable Vector Graphics (SVG) opis
4.3.9 Google "widget" Tetris
Google, Yahoo!, i Microsoft, i druge tvrtke, imaju unaprijeđen minijaturne Internet-baziran softver pod nazivom "widgets" koje su obično karakterizira neke korištenje dinamičke podatke dostupne na internetu.
Jedan takav widget dostupni kroz Google je Tetris igra.
Sljedeći primjer je slatka, ali je oblika okretati u dosadnih načina:

Google "widget" Tetris
Ostalo Google widgets:
4.3.10 MIT istraživački rad: "Tetris is Hard, Even to Approximate" (2002)
Sljedeće istraživanje dokument sadrži dokaz da određene vrste Tetris varijanta je "NP-kompletna."
Erik D. Demaine, Susan Hohenberger, i David Liben-Nowell, "Tetris is Hard, Even to Approximate", Technical Report MIT-LCS-TR-865, Massachusetts Institute of Technology, 2002.10.21.
"NP-kompletna" je klasifikacija u vrijeme i prostor cijene troškova algoritam.
Ostale klasifikacije uključuju "P" i "NP".
A classification of "NP-kompletna" implicira da je za probleme veće od neke male veličine, algoritam je vjerojatno da bismo pronašli željeni rješenja u praktične vremena ili prostora.
4.3.11 Istraživanje dokumenta: "Applying reinforcement learning to Tetris"
Sljedeći rad, objavljen 2005.5.30, Donald Carr na Computer Science odjela na Rhodes University, South Africa, predstavlja primjenu "armature učenje" Tetris.
4.3.12 Tetris skut (2007.11)

Tetris skut (2007.11)
The Tetris suknja je izrađen od strane "Lucy" ("hissyfitoly" na etsy.com) prije 2007.11.
Od kreator je opis skut (ponuđena na prodaju 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."
Forum komentare vezane uz ovu suknju:
"Čovjek koji skut sisanje i Tetris"
"Ahahahaha, mislio sam na istu stvar."
"Tu je kompletna linija dolje na dnu ... dovršene linije nestaju." "UČINITI VIŠE OD" "."
"Ima bi trebao biti mjesto u leđa ispred ili gdje dugo komad bi savršeno uklapaju ..."
"To je stvarno ružan iako suknje. Moj dragi nije mogao da kupi mi dovoljno čokolade i cvijeća da me uvjeriti da nose da stvar."
4.3.13 Tetris stage act (2007.4)

Tetris stage act (2007.4)
"Od onih koji vas je doveo Triforce u 2006 ... Dolazi sljedeću generaciju mrtav objekt komad ... Tetris."
Lokalno spremljeni video-u Flash video (FLV) format (VLC koristiti za reprodukciju):
4.3.14 Vrlo smiješan Tetris varijacije na japanskom televizijski show

Tetris varijacije na japanskom televizijski show
Ovaj video segment iz japanske televizije show uključuje vrlo smiješan varijacije Tetris, uključujući:
komada da nula na slijetanje, dio koji ispunjava cijeli red (tako da kompletirate red na slijetanje), više komada istodobno pada, irregularly shaped komada, dugo komad da je malo previše širok da stane u gap (sprečavanje 4-red završetak!), Mario tipku jednom gljiva i postaju ogromne i umiranje!, mali komad krhotine preostale nakon reda su uništene, naviše gravity izrade komada plutati na vrhu, itd.
Lokalno spremljeni video-u Flash video (FLV) format (VLC koristiti za reprodukciju):
4.3.15 "The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)

"The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)
Od opis na YouTube:
"TETRIS igrati real-ljudskih bića sjedi u auditorijem:"
TETRIS je 4 video performanse od GAME OVER Project, u režiji švicarskog umjetnika Guillaume REYMOND (NOTsoNOISY kreativna agencija).
To stop-motion video je pucao i igrao za "LES URBAINES" festival
http://www.urbaines.ch u Palais de Rumine (Lausanne, Švicarska) na November 24th 2007.
Lokalno spremljeni video-u Flash video (FLV) format (VLC koristiti za reprodukciju):
4.3.16 2,5-dimenzionalan Tetris
Izraz "2.5-dimenzionalan" ovdje se koristi da se označe ne-ortogonalna pogled na jedan dvodimenzionalni verzija Tetris, sa nekim debljina u trećoj dimenziji.
(Pronađite poveznicu "tetris3d" u "F7: GAMES".)
4.4 3D Tetris

Linux / GTK verzija
Trodimenzionalni Tetris u obliku jednog Java applet za Internet browseri:
Trodimenzionalni Tetris za Windows operacijski sustav:
4.5 4-dimenzionalan Tetris

Greg Kaiser's "HyperTetris" (1996): 4-dimenzionalan Tetris
U [1996], [...], Greg Kaiser staviti zajedno s četiri dimenzije varijanta na klasične igre.
Korištenje IrisGL (a.k.a. igl) stvorio je radni, ako je teško igrati, igra pomoću četiri pod-screens da prikazuju različite trodimenzionalni aspekte cijeli igra-prostor.
[Zbog] tamo nije lako [razumljiv] način privući četiri-D predmeta na dva-D zaslon, četiri pod-pregleda su praktične metode za upravljanje i zamišljati vrtnja i prijevod na komade kroz četiri dimenzije ( u igri zove x,y,z,w).
Nego kompletiranje linije blokova kao u originalu, na cilj u tom slučaju je popuniti potpuni kub u x,y,z subview (obično 4 do 4 po 4).
Drugi subviews koji sadrže "w" dimenziju su uređeni u zadanom 4 po 4 do 10 blok dogovoru s "w" budući da je dugo, "vertical" dimenzija u sva tri slučaja, s različitim bazama (x,y), (x,z), (y,z).
Gravity djela u "-w" smjeru, tako da komadi padaju "dolje" u tri duge subviews koji uključuju "w", i osim ako se ne krecu po igraču kontrolu u posljednjih (x,y,z) subview.
Potrebno je neko vrijeme da bi se, da kažem najmanje.
Ako neko čudo od strpljenje ili mijenjate parametre igre, jedna radi dovršetka kocka, ona će nestati kao dovršene linije učiniti u izvornoj Tetris, iako ne rezultat je zadržao u HyperTetris.
Benjamin Bernard (2000)
4.6 N-dimenzionalan Tetris

Polytope Tetris (2003): N-dimenzionalan Tetris igra varijanta
Polytope Tetris je n-dimensionally Tetris.
Inspirirani su HyperTetris program, Polytope Tetris omogućuje Vam tona igrati Tetris u bilo koje BROJ dimenziju.
Play Tetris u 3D, 4D, 5D, ili više.
HyperTetris je mnogo catchier ime od Polytope (ret) Tetris, ali ne mogu ukrasti ime.
5. "Standard Tetris" specifikacija
5.1 Uvod
Definicija "Standard Tetris" je jedna idealizirati model od najznačajnijih karakteristika i ponašanja od prvih IBM-PC implementacija od Tetris igra (oko 1986-1988).
The idealizirati model temelji se na inferring je jasno namjere, razvijen od strane od prvih IBM-PC implementacija od Tetris igra.
Na primjer, čini se razumnim da se zaključiti da je razvijen od strane od prvih IBM-PC implementacija od Tetris igra je namjeru da odaberete oblik svakog novog pada komad "nasumično," i da je upotreba u Borland C implementacija od rand() funkcija je samo praktičan usklađivanje namjerom.
Definicija "Standard Tetris" navodi da je u obliku svaki novi dio je padala biti odabrana "nasumično."
Ovo idealno ponašanje ne može se postići bilo koju implementaciju, ali implementacija može približan idealno ponašanje.
Iako se ne može savršeno implementirati implementacije definicija "Standard Tetris," ideala "Standard Tetris" uključivati objektivne karakteristike, i implementacija može biti u odnosu prema njihovu relativnu blizinu ideala "Standard Tetris."
Ovo poglavlje opisuje skup elemenata, ponašanja i pravila, koja, kolektivno, definirati "Standard Tetris."
5.2 Standard Tetris board
Upravni odbor je grid i stanice, vlasništvo 10 stupaca i 20 redaka, za ukupno 10 * 20 = 200 stanice.

Standard Tetris zajednica (10 stupaca, 20 redaka)
Svaka stanica može biti nezauzet (prazna) ili zauzete (full).
5.3 Standard Tetris komada
Postoji sedam (7) standard Tetris komada, sa sljedećim slovo imena:
{ O, I, S, Z, L, J, T }
U pismu imena su inspirirani su oblika i komada.

Sedam komada Standard Tetris i njihovih "usmjerenja"
The dot at (0,0) poklapa se s zajednica položaj (6,20) kada se pojavljuje prvi dio.
Prvi stupac prikazuje početne "orijentacije."
U sljedećem, riječ "orientation" se koristi za opisivanje bilo koje stanje komad, unutar skupa dopušteno država, koje mogu rezultirati iz suprotno kazaljci sata smjenjivanje događaja.
Promjena "orijentacije" iz određenog "orijentaciju" jednog "I, S," ili "Z" komad, zahtijeva kombinaciju od rotacije i prevođenje.
Dakle, riječ "orientation" is used here to znači nešto više od same rotacije.
Međutim, "orijentacije" može promijeniti samo u odgovoru na suprotno kazaljci sata smjenjivanje događaja, i ciklus različita "usmjerenja" za svaki komad approximates, ili utakmice, ciklus proizišli iz čiste rotacije.
Posebne upotrebe riječi "orijentacije" u tom kontekstu je gotovo ekvivalentan na značenje riječi ili "rotation angle," ali riječ "orijentaciju" se koriste umjesto "rotacije" će pokušati dovesti pozornost na činjenicu da neke dijelove zahtijevaju više od rotacija za izradu set dozvoljeno države rezultat suprotno kazaljci sata "rotation" događanja.
Komada može se prebaciti samo ORIJENTACIJE (ili podvrgnut određeni horizontalni ili vertikalni prijevod) ako je rezultat stanja u kom ne bi bilo koji zauzete (full) stanica izvan područja na ploči i ne bi bilo koji okupiranom stanice koje preklapaju bilo koji od trenutno zauzete stanice na brodu.
(U ovom pravilu, u okupiranom (full) stanice u kom se ne smatraju kao dio "trenutno zauzete stanice od board"
U sljedeće komentare, bilo kakve reference na rezultat je suprotno kazaljci sata rotation događaj je sklopio s pretpostavkom da takva zapravo rotacija može biti izvedena, s obzirom na postojeće uvjete u komadu i zajednica.
The "O" (box) komad samo je jedan orijentaciju, i ne mijenja bilo koje lokacije svojih okupiranih (full) stanice kao odgovor na bilo koje suprotno kazaljci sata smjenjivanje događaja.
The "I" (line) komad ima dvije moguće orijentacije, u početku se pojavljuju u horizontalne orijentacije.
The "I" komad zamjenika između dva usmjerenja u odgovoru na uzastopnim suprotno kazaljci sata smjenjivanje događaja.
The "S" i "Z" komada svaki ima dvije moguće orijentacije.
Ovi komadi svaki alternativni između dva usmjerenja u odgovoru na uzastopnim suprotno kazaljci sata smjenjivanje događaja.
The "L", "J", i "T" komada svaki ima četiri moguće orijentacije, usmjerenja i ove su rezultati jednostavne rotacije točke oko središta na oblike.
Kada se pojavi prvi dio na ploči, komad ima svoje "glavne osi" u horizontalnom orijentacijom, a dio je na vrhu ploče.
Stoga, nema komada u početku su sposobni da njihova promjena usmjerenja. The komad mora se spuštamo po jedan redak da ima mogućnost da svojim promjena orijentacije.
Nakon što je jedan komad pao po jedan red na brodu, sve komad orijentacije može biti dosegnut (uz pretpostavku je komad nije preblizu na strani zidova ili na trenutnu gomila komada).
5.4 Standard Tetris u dijagramu toka
Sljedeći je približan dijagram toka za Standard Tetris igra.

Približan dijagram toka za Standard Tetris igra

Približan dijagram toka za Standard Tetris igra
5.5 Standard Tetris komad stvaranje
Sljedeći dijagram prikazuje (4 stanica cell * 2) područje na ploči gdje svi komadi se pojaviti kada stvoreno.

Regija komada gdje se pojavljuju kada kreirana u Standard Tetris
Kada se pojavi novi dio prvi na brodu, njegova podrijetla poklapa s dot na ovaj dijagram, te dio će biti u potpunosti sadržane su u hladu na ovom prostoru dijagramom.
Kada je počela nova igra, puna free-fall kašnjenje elapses, i na prvom free-fall iteracija komad je spawned na vrhu ploče.
Tijekom normalne igre igrati, kada određeni free-fall iteracija komad "zemljišta," full free-fall kašnjenje elapses i na sljedećoj free-fall iteracija komad je spawned na vrhu ploče.
Kada je komad spawned, tip je komad odabrali koristeći sljedeći algoritam:
pieceIndex = 1 + (randomInteger % 7); // 1..7
Budući da je konstantna p (= 1/7) priliku i odabirom određene vrste komad, i sve dijelove istog tipa su indistinguishable, vjerojatnost da točno k komada određenog tipa nakon n suđenja slijedi jedan binomna razdioba:
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 )
Kada smo birati između 7 (sedam) komada na slučajan, vjerojatnost dobivanja određeni dio je p=(1/7).
Ako smo to učinili n=70 puta, na primjer, vjerojatnost dobivanja točno k komada (s k u rasponu 0 da n) je dobio po binomna distribucija, kao što je prikazano u sljedećoj slici.

Binomna raspodjela za n=70, p=(1/7)
Dakle, može se predvidjeti prosjeku ukupno komada jedan tip dao ukupan broj slučajnih komada, a može se također izračunati očekivane varijanca i standardna devijacija (kvadratni korijen varijance):
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
Kada smo Pretvorba slučajnih vrijednosti na komad indeks, mi ga interpretirati kako slijedi:
value piece
===== =====
1 "O"
2 "I"
3 "S"
4 "Z"
5 "L"
6 "J"
7 "T"
[Pre-komercijalni MS-DOS verzija Tetris koristi slučajnog broja funkcija koje nude se Borland Pascal prevodilac.
Da se funkcija koristi 32-bitni drzava varijable.
Stoga, slijed slučajnih brojeva je ograničena na 2^32 različite vrijednosti.
Zato, u principu, jedan igrač mogao otkriti, nakon pada mozda 10 komada, točno mjesto u set 2^32 brojevima koji odgovaraju trenutno stanje u igri.
Ako Tetris simulacije su pogubljeni s fiksnom slijed 2^32 komada, zatim optimalne odluke mogu naći na svakom mjestu u slijed.
(Ima činiti se biti dovoljno mogućnosti da se na brodu na potpuno prazan zajednica drzava, dopuštajući nam da se sinkronizirati s precomputed optimalno rješenje put.)
Rizika pomoću jednostavnog slučajnog broja generatora u simulaciji namjerava naći optimalno rješenje za problem je da je optimalno rješenje će se samo za određeni put kroz problem prostora odabranih od strane Jednostavan slučajni broj generatora. ]
5.6 Standard Tetris kontrola
Tijekom igre igrati, sljedećih ulazi su na raspolaganju:
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
Svi ulazi stupiti na snagu na ustajanje-rubu je pozitivno ono što se umeće (pritisnite na gumb, za razliku gumb izdanje).
Kada pritisnete gumb pojavljuje, to broji kao jedan zahtjev.
Holding gumb dolje izvan određenog vremena može rezultirati u "auto-ponoviti" značajka tipkovnicu, stvaranja novih gumb preše - ali ovo je priča za vanjske igra motor.
Ulazi u skladu s gore naveden originalni Tetris igra.
Zakreni zahtjeva se izvršavaju ako ne postoji preklapanje između željenu orijentaciju i postaviti stanica na trenutnu pansion (izuzev pada komad), i ako željenu orijentaciju nema postaviti stanica izvan područja board.
Prevedi zahtjeva se izvršavaju ako ne postoji preklapanje između prevedene željenu konfiguraciju i skup stanica na trenutnu pansion (izuzev pada komad), i ako željeni preveden konfiguraciji nema postaviti stanica izvan područja board.
Ulazni zahtjevi su obrađeni s čekanja da ovisi o frame rate od igre (primjer: 75 Hz), i zahtjeva stupiti na snagu (ako je valjana) odmah.
A komad može biti odbačene bez linija pada korake pojavio.
A komad može biti preveden nekoliko puta na lijevo ili desno, te nakon toga pao, sve bez pojavljuje jedan službeni line pada korak.
Budući da je novo spawned dio ne može se zakrenuti moguće (jer je zaglavi na vrhu ruba ploče), igrač mora prihvatiti barem jedan dio pada korak ako rotacije su željenu ili zahtijeva.
Utjecaj na rezultat je beznačajan.
5.7 Standard Tetris komad "slijetanje"
Ako dio je jednostavno pada, ona pada po jedan red za vrijeme svaki komad pada iteracija.
Tu će biti jedna iteracija da se miče se s mjesta, bez kontakta s horizontalnim površinama na mjesto koje je kontakt s horizontalnim površinama. Kad se to ponavljanje se pojavljuje, u kom se odmara u kontakt.
Ako iteracija počinje sa komad odmara u kontakt s horizontal surface, komad "zemlje," te postaje dio statička gomila.
5.8 Standard Tetris "linije dovršen"
A dovršen red je red na kalup u kojem sve stanice su zauzete. Kada je dovršen red je eliminiran iz gomila, i redaka iznad eliminira red pomaknut su smanjena je za jedan red kako bi se uklonili jaz, to broji kao dovršen "line."
Kada jednom komadu zemljišta postaje dijelom Pile.
Odmah nakon komad zemljišta, Pile je označeno za dovršen redaka, i sve su završile redaka eliminira.
Do četiri reda može biti dovršen istovremeno.
U sljedećoj tablici daje gornji limit na linijama dovršen istovremeno po jednog komada:
piece max. simultaneous
rows completed
===== ==================
"O" 2
"I" 4
"S" 2
"Z" 2
"L" 3
"J" 3
"T" 2
5.9 Standard Tetris "razinama"
Standard 10 Tetris ima poteškoća razinama, broji 1 (jedan) kroz 10 (deset), s razini 1 se "najmanje teško."
Razini indeks je maksimalno dvije vrijednosti:
actualLevel = max( initialLevel, earnedLevel );
The initialLevel vrijednost je razini da je igrač odabire kada starta nova igra.
The pattern of razini kao funkciju dovršene linije je jednostavno promatraju u pre-komercijalni MS-DOS verzija 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
Ovako, earnedLevel vrijednost je kompjutorska prema sljedećim algoritmom:
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 pada iteracija kašnjenje
Standard Tetris ima real-time kašnjenje između sukcesivnih line free-fall ponavljanje da je funkcija trenutnog poteškoća razini.
Sljedeći odnos između razina indeksa i pad iteracija kašnjenje je na temelju ponovljenih mjerenja Zadaci na svim razinama od pre-komercijalni MS-DOS verzija 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
Tako smo uspostavili sljedećih formula za iteracija kašnjenje vrijednosti kao funkcija stvarne razine indeksa:
iterationDelay = ((11 - actualLevel) * 0.05); // [seconds]
Ako je zajednica je prazna, i nema korisničkim podacima, spawned komad u stvarnoj razini 1 zemljama u oko 10 sekundi, a spawned komad u stvarnoj razini 10 zemljama u oko 1 drugi.
5.11 Standard Tetris "rezultat"
Standard Tetris samo nagrade bodova za čin slijetanja komad.
Nema bodova dodijeljenih za čin dovršite jedan redak, ili završavanjem dva, tri ili četiri linije istovremeno.
[Napomena: Neke od varijanti Tetris nagrada bodova za čin kompletiranje linije, s jedne exponentially povećanje udjela u dobiti za sve veći broj istovremeno dovršene linije.
Dakle, strategija za maksimiziranje rezultat u takvoj varijanti od Tetris uključuje postavljanje mogućnosti da biste "dobili Tetris," slangu za korištenjem "I" oblik da bi četiri linije i simultano uzimajući puno bodova. ]
Ako imate prazan odbora, i neka vam ne-"I" komad napraviti slobodno pada i zemlju, ili se odmah ispadne ne-"I" komad, možete uspostaviti sljedeće točke grafikon pomoću pre-komercijalni MS-DOS verzija 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" komada pada ukupno 18 redaka.
Ova račune za bod razlike između slobodnog pada i instant-drop slučajevima.
By eksperimentiranje s intermediate slučajevima je lako zaključiti sljedeće točke formula:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
Imajte na umu da ova formula je ništa za napraviti sa udaljenost komad padne!
To je strogo jedna funkcija stvarne razine, a kazna za broj ponavljanje komad je dozvoljeno da slobodno pada.
Ovaj korisnik kažnjen za siromaštvo vremena da misle.
Također, imajte na umu da zbog dio ne može se zakrenuti u početku, kada je prvi spawns, jedan igrač je kažnjen od strane najmanje jedan free-fall iteracija ako ophodnje su dužni da se komad u kalup.
To vjerojatno nikad ne utječe na ljudski igrači, osim ako se nekako: prepoznati dio, prijevod pritisnite tipke "(lijevo" ili "desno)," pritisnite tipku "okretati se" jedan ili više puta, i pritisnite tipku "drop," sve u roku od manje od 0.5 sekundi na razini 1, ili manje od sekunde 0.05 na razini 10.
6. Standard Tetris strategija
6.1 Uvod
A strategija za Igranje igre ovisi o pravilima igre.
A strategija ovisi o tome koji parametar je moguće je optimirati.
U standardnom Tetris, jedan preživi po dovršenju reda, dobiva bodove za slijetanje komada, a rezultate je moguće najviše bodova za svaki komad čije pad prije nego što jedan ili više free-fall ponavljanje znojiti.
An A.I. može optimizirati dodjeljuje bodove za svaki komad jednostavno odlučivanje o kretati brzo i "pritiskom tipke" na izvršenje potez.
Još jedna važna A.I. je opstanak, jer neodređeno opstanak znači jedan samovoljno high rezultat može biti dosegnut. Zbog toga Tetris komada pada na određenu stopu, A.I. mora donositi odluke koje najmanje ovaj brzo - i A.I. moraju napraviti poteze koji potpunu redaka na rate da prosjeci najmanje 1 redak po 2,5 komada. (Svaki dio ima 4 stanice, a svaki red ima 10 stanica.)
Naravno može se odgoditi popunjavanju redova po