Tetris
Colin Fahey
1. Ohjelmisto
2. Johdanto
Tässä artikkelissa kuvataan, miten tietokoneen voi olla klassinen videopeli Tetris saamalla tietoa aluksella, määritettäessä hyvä toimia, ja jotka suorittavat kyseisiä toimenpiteitä.
Tämä artikkeli sisältää ohjelmiston, joka kykenee playing Tetris reaaliajassa.
Ohjelmisto sisältää paras reaaliaikainen Tetris-playing algoritmi on julkinen.
Tässä artiklassa määritellään säännöt "Standard Tetris," erittely, joka perustuu alkuperäisen 1986 pre-kaupallinen versio Tetris-Personal Computer (PC).
Vuonna 2003, ohjelmisto sisältyy tässä artikkelissa on käytetty, jotta tietokoneen pelata Tetris näkyä erillisen tietokoneen.
Tavallinen USB videokamera on käytetty, jotta tietokoneen "nähdä" kuvaruudussa muiden tietokonetta.
A rele aluksella oli valvottu kautta RS-232 liitäntä mahdollistaa tietokoneen "paina näppäimiä," näppäimistö ja muut tietokoneella.
Näin ollen ensimmäisen tietokone on suhde toiseen tietokoneeseen, joka on samankaltainen kuin tyypillinen ihmisen pelaajan suhde tietokoneella soitettaessa Tetris; pelin tila on ainoa tiedossa tarkastelemalla näytöllä, ja pelaajan toimiin voi vain panna vireille kautta näppäimistö .
Määritystiedoston tässä esittelyä todettu, että tietokone voi olla Tetris paremmin kuin ihmisten, tavallisissa reaaliajassa Tetris tasapuoliset edellytykset.
3. History of Tetris
Vuonna 1985, Alexey Pajitnov ja Dmitry Pavlovsky olivat tietokone insinöörit, Computing Center of the Russian Academy of Sciences.

Dorodnicyn Computing Centre, Russian Academy of Sciences
Alexey ja Dmitry olivat kiinnostuneita kehittämään ja myynti riippuvuutta tietokonepelit.
Ne on testattu, useita erilaisia pelejä.
Alexey oli inspiroinut antiikin kreikka puzzle peli, Pentaminos, jotka osallistuvat järjestäminen palapelin palaset tehty viiden neliöt.
Alexey ajatellut ajatusta järjestää Pentamino kappaletta, sillä ne laskivat, suorakulmainen Cup, mutta tajusi, että kaksitoista erilaista viiden neliön muotoja olivat liian monimutkaisia videopeli.
Alexey kytketään käyttäen seitsemän "tetramino" kappaletta, ja jokainen teki neljä neliöt.
Vuonna 1985.6, Alexey Pajitnov ohjelmoitu ensimmäinen versio Tetris, joka Electronica 60.

Dmitry Pavlovsky, Alexey Pajitnov, ja Tetris.
Vuonna 1985-1986, Vadim Gerasimov, 16-vuotias korkea-koulun tietokone prodigy jotka työskennellyt Akatemia, toteutettu Tetris-IBM PC juoksevan MS-DOS käyttöjärjestelmä.
(Vadim Gerasimov myöhemmin teki tutkimusta, jonka MIT Media Laboratory, vuodesta 1994 kautta 2003, vastaanottaminen tohtorin täyttämisen jälkeen monia mielenkiintoisia hankkeita:
http://vadim.www.media.mit.edu)

Säädetään näytön, 1987-1988 pre-kaupalliseen vapauttamaan Tetris-PC

The Game Play näytön, 1987-1988 pre-kaupalliseen vapauttamaan Tetris-PC
Kun 1987, Tetris levinnyt ympäri maailmaa.
The Tetris Company, LLC, omistaa Tetris tavaramerkki.
4. Projektit innoittamana Tetris
4.1 0-ulotteinen Tetris
Ei ole vielä kehitetty.
4.2 1-ulotteinen Tetris
Ziga Hajdukovic on kehitetty 1-ulotteinen Tetris-ohjelmisto, jolla voidaan pelata, Internet-selaimella.
Ziga Hajdukovic on myös kehittänyt 1-ulotteinen Tetris ohjelmistoja matkapuhelimiin käyttäen Java J2ME alustalla.
4.3 2-ulotteinen Tetris
Kaikki tavanomaisen Tetris vaihtoehdot ovat tässä luokassa.
Tämä osio sisältää mielenkiintoisia vaihtoehtoja.
4.3.1 Suurin Tetris peli koskaan: Delft University of Technology (1995)

Tetris pelataan rakennuksessa; 2000 m^2 pinta-ala; Delft University of Technology (1995)

Tetris pelataan rakennuksessa; 2000 m^2 pinta-ala; Delft University of Technology (1995)
4.3.2 Toinen Tetris peli pelataan rakennuksessa: Brown University (2000)

Tetris peli näytetään käyttämällä valot, ikkunat rakennuksen klo Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
"Mielestäni se oli vain kaikkein uskomatonta yhden päivän asia Voisin kuvitella elämässäni. Kuten Steve Jobs aina sanonut, että matka on palkkio."
"Se teki minusta ajatella hankkeita teimme takaisin yliopistolla. Asiat, jotka olivat lähes peruuttaa, että muut ihmiset eivät usko tekemässä."
Steve Wozniak (2000)
4.3.3 Internet-selaimen pelin kanssa MIT "Green Building" kuva

Vadim Gerisimov's Internet-selaimen Tetris
Tämä Internet-selaimen Tetris variantti on luonut Vadim Gerasimov.
Tämä Internet-selaimen Tetris ominaisuuksia "Green" rakennuksessa on kampuksella MIT.
Tämä Tetris variantti vain on yhdeksän sarakkeet sijaan standardin kymmenen saraketta.
Tämä Tetris variantti esittelee uutta kappaletta satunnaisella linjausta.
Vadim Gerasimov on henkilö, jotka kirjoittivat tietokoneella koodi varten PC versio Tetris, 1986.
Vadim Gerasimov ei Ph.D. tutkimusta, jonka MIT Media Laboratory aikana 1994-2003, työskentelee monia mielenkiintoisia projekteja.
4.3.4 PIC16F84 12 MHz mikro-pohjainen NTSC / PAL video Tetris peli

PIC16F84 12 MHz mikro-pohjainen NTSC / PAL video Tetris peli
Kuvan yläpuolella osoittaa NTSC / PAL videon ulostulo, jota tuottavat PIC16F84 12 MHz mikro-ohjelmistoversio on kirjoittanut Rickard Gunee vuonna 1998.
The video-signaali on tuotettu ohjelmallisesti digitaalisia tuotoksia.
4.3.5 "Scopetris" Oskilloskooppi Tetris, Lars Pontoppidan (2007.8)

"Scopetris" Oskilloskooppi Tetris, Lars Pontoppidan (2007.8)
Lars Pontoppidan kirjoitti koodi varten AtMega32 mikrokontrolleri, ja lisäsi yksinkertainen analoginen ohjauspiirit, luoda Tetris versio, joka voisi olla pelattu, joka oskilloskooppi.
Jotkin rekisterit, AtMega32 mikro-8-bittinen output signaaleja, ja kun ohi kautta "R-2R" sähkö vastus piiri digitaalisten-analoginen (D/A) muuntaminen, tuloksena analogisia signaaleja voi valvoa (x,y) koordinaatit, oskilloskooppi palkki (jolloin oskilloskooppi on asetettu "X-Y mode)."
YouTube video:
FLV video:
4.3.6 Monimutkainen koodi Tetris: C / Unix
Seuraavat sai "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 Monimutkainen koodi Tetris: Perl koodi
Seuraavassa on Tetris-Perl tulkki: Perltris (versio 20050717) Sean Adams.
#!/usr/bin/perl
$_='A=15; B=30; select(stdin); $¦=1; select(stdout);$¦=1; system
"stty -echo -icanon eol \001"; for C(split(/\s/,"010.010.010.010
77.77 022.020.020 330.030.030 440.044.000 055.550.000 666.060.".
"000")){D=0;for E(split(/\./,C)){F=0;for G(split("",E)){C[P][F++
][D]=G} D++}J[P]=F; I[P++] =D}%L=split(/ /,"m _".chr(72)." c 2".
chr(74)." a _m");sub a{for K(split(/ /,shift)){(K,L)=split(/=/,K
);K=L{K};K=~s/_/L/; printf "%c[K",27}}sub u{a("a=40");for D(0..B
-1){for F(0..A-1){M=G[F][D];if(R[F][D]!=M) {R[F][D]=M;a("m"."=".
(5+D).";".(F*2+5)); a("a=".(40+M).";" .(30+M));print " "x2}}}a(
"m=0;0 a=37;40")}sub r{(N)=@_;while(N--) {Q=W;W=O=H;H=Q;for F( 0
..Q-1){for D(0..O-1) {Q[F][D]=K[F][D]}}for F(0..O-1){for D(0..Q-
1){K[F][D]= Q[Q-D-1][F]}}}}sub l{for F(0..W-1){for D(0..H-1){(K[
F][D]&& ((G[X+F][Y+D])¦¦ (X+F<0)¦¦(X+F>=A)¦¦ (Y+D>=B)))&& return
0}}1}sub p{for F(0..W-1){for D(0..H-1){(K[F][D]>0)&&(G[X+F][Y+D]
=K[F][D]) }}1}sub o{for F(0..W-1){for D(0..H-1){(K[F][D]>0)&&(G[
X+F][ Y+D]=0)}}}sub n{C=int(rand(P)) ;W=J[C];H=I[C];X=int(A/2)-1
;Y=0;for F(0..W-1){for D(0..H-1){K[F][D]= C[C][F][D]}}r(int(rand
(4)));l&&p}sub c{d:for(D=B;D>=0;D--){for F(0..A-1){G[F][D]¦¦next
d}for(D2=D;D2>=0; D2--){for F(0..A-1){G[F][D2]= (D2>1)?G[F][D2-1
]:0; }}u;}}a ("m=0;0 a=0;37;40 c");print "\n\n".4x" "." "x(A-4).
"perltris\n".(" "x4)."--"xA."\n".((" "x3)."¦"." "x(A*2)."¦\n")xB
.(" "x4). "--"xA."\n";n;for(;;) {u;R=chr(1); (S,T)=select(R,U,V,
0.01);if(S) {Z=getc;}else {if($e++>20){Z=" ";$e=0;}else{next;} }
if(Z eq "k"){o;r(1);l¦¦r(3);p}; if(Z eq "j"){o;X--;l¦¦X++;p}; if
(Z eq "l"){o;X++;l¦¦X--;p};if(Z eq " "){o;Y++;(E=l)¦¦Y--;p;E¦¦ c
¦c¦c¦c¦c¦n¦¦goto g;};if(Z eq "q"){last;}}g: a("a=0 m=".(B+8).";0
" ); system "stty sane"; '; s/([A-Z])/\$$1/g; s/\%\$/\%/g; eval;
4.3.8 Mozilla SVG Tetris
Scalable Vector Graphics (SVG) on standardi kuvataan graafisia objekteja käyttäen XML.

Mozilla SVG Tetris: Tetris toteutetaan käyttäen Scalable Vector Graphics (SVG) kuvaus
4.3.9 Google "widget" Tetris
Google, Yahoo!, ja Microsoft, ja muut yritykset ovat edistäneet miniature Internet-pohjaisen ohjelmiston nimeltä "widgets", jotka ovat yleensä ominaista joidenkin käyttö dynaaminen data available on the Internet.
Yksi tällainen widget saatavilla Google on Tetris peli.
Seuraavassa esimerkissä on cute, mutta muodoista pyörittää, ärsyttäviä tapoja:

Google "widget" Tetris
Muut Google widgets:
4.3.10 MIT tutkimuksen paperi: "Tetris is Hard, Even to Approximate" (2002)
Seuraavat tutkimus-asiakirja sisältää todiste siitä, että tietyn tyyppistä Tetris variantti on "NP-täydellisiä."
Erik D. Demaine, Susan Hohenberger, ja David Liben-Nowell, "Tetris is Hard, Even to Approximate", Technical Report MIT-LCS-TR-865, Massachusetts Institute of Technology, 2002.10.21.
"NP täydennys" on luokittelu, kun kustannukset ja avaruus kustannukset algoritmi.
Muut luokitukset sisältävät "P" ja "NP".
A luokittelu "NP-täydellinen" merkitsee, että ongelmia on suurempi kuin joidenkin pienten kokoa, algoritmi on epätodennäköistä löytää haluamasi ratkaisun käytännön paljon aikaa tai tilaa.
4.3.11 Tutkimus-asiakirja: "Applying reinforcement learning to Tetris"
Seuraavat paperi, julkaistu 2005.5.30, Donald Carr at the Computer Science osasto Rhodes University, Etelä-Afrikka, esittelee soveltamisen "vahvistaminen oppimisen" Tetris.
4.3.12 Tetris Hame (2007.11)

Tetris Hame (2007.11)
The Tetris hame oli luotu "Lucy" ("hissyfitoly"-etsy.com) ennen 2007.11.
From the creator's kuvaus, hame (tarjotaan myytäväksi 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 huomautuksia tämän hame:
"Man, että hame sucks at Tetris"
"Ahahahaha, ajattelin, että sama asia."
"There's täydellisen linjan alas alareunassa ... loppuun rivit katoa." "TEHDÄ YLI" "."
"Ei pitäisi olla paikan päällä selkä-tai etuosassa jossa pitkä pala olisi sopii täydellisesti ..."
"Se on todella ruma hame though. My boyfriend ei voinut ostaa minulle tarpeeksi suklaata ja kukkia saanut minua vakuuttuneeksi pukeutua, että asia."
4.3.13 Tetris vaiheessa toimimaan (2007.4)

Tetris vaiheessa toimimaan (2007.4)
"From jotka tuonut teille Triforce vuonna 2006 ... Comes seuraavan sukupolven inanimate esinettä skit ... Tetris."
Paikallisesti välimuistissa video Flash video (FLV) format (käytä VLC pelata):
4.3.14 Hilpeä Tetris vaihtelut, japani-televisio-ohjelma

Tetris muunnelmia japani-televisio-ohjelma
Tämä video segmentti on japani-televisio-ohjelma sisältää hilpeä vaihteluita Tetris, mukaan lukien:
kappaleina että katoamme purettaessa, palanen, joka täyttää koko rivi (siis täyttämällä rivi purettaessa), monta kappaletta, jotka kuuluvat samanaikaisesti, epäsäännöllisesti muotoinen kappaletta, pitkä pala, että on hieman liian laaja sovi aukko (estää 4-rivinen suoritusaika!), Mario iskeydy yksi sienten ja tulossa valtava ja kuolevat!, pieni pala roskia jäljellä, kun rivit ovat tuhoutuneet, ylöspäin painovoiman tehdä kappaletta float to the top jne.
Paikallisesti välimuistissa video Flash video (FLV) format (käytä VLC pelata):
4.3.15 "The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)

"The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)
From the kuvausta YouTube:
"TETRIS ollut todellinen ihmisen olentoja Istunto on auditorio:"
TETRIS on 4th video suorituskyvystä, GAME OVER Project ohjaama Sveitsin taiteilija Guillaume REYMOND (NOTsoNOISY luova elin).
Tämä stop-motion video ammuttiin ja pelataan "LES URBAINES" festivaali
http://www.urbaines.ch klo Palais de Rumine (Lausanne, Sveitsi) November 24th 2007.
Paikallisesti välimuistissa video Flash video (FLV) format (käytä VLC pelata):
4.3.16 2,5-ulotteinen Tetris
Termi "2,5-ulotteinen" käytetään tässä tarkoitetaan ei-ortogonaaliset otetaan kaksi-ulotteinen versio Tetris, joitakin paksuus on kolmas ulottuvuus.
(Löydät linkin "tetris3d" vuonna "F7: GAMES".)
4.4 3-ulotteinen Tetris

Linux / GTK versio
Kolmiulotteinen Tetris-muodossa Java applet Internet-selaimet:
Kolmiulotteinen Tetris-Windows käyttöjärjestelmä:
4.5 4-ulotteinen Tetris

Greg Kaiser's "HyperTetris" (1996): 4-ulotteinen Tetris
Vuonna [1996], [...], Greg Kaiser koottu neljän-ulotteinen muunnos, klassinen peli.
Using IrisGL (a.k.a. igl) hän loi toimi, jos vaikea pelata, peli käyttämällä neljää osa-ruuduissa kuvata eri kolmiulotteinen näkökohtia koko peli-tilaa.
[Koska] ei ole helposti [ymmärrettäviä] tapa tehdä neljän D esineitä kahden-D-näytön, neljä osa-näkemykset ovat käytännöllinen tapa käsitellä ja visualisoida kiertoajan ja kääntäminen palaset kautta neljä ulottuvuutta ( - pelin nimeltä x,y,z,w).
Pikemminkin kuin täytätte riviä korttelin kuin alkuperäisessä, tavoite tässä tapauksessa on täyttää täydellisen kuution, x,y,z subview (yleensä 4, 4 4).
Muut subviews jotka sisältävät "w" ulottuvuus on sijoitettu oletusarvoisesti 4, 4, 10 lohko kanssa järjestelystä "w" on pitkä, "vertical" ulottuvuus kaikissa kolmessa tapauksessa, joilla on erilaiset perustat, (x,y), (x,z), (y,z).
Gravity-säädökset, jotka on "-w" suuntaan, joten nappulat "kaatua," kolme pitkää subviews, jotka sisältävät "w", ja eivät liiku ellei se pelaaja valvonta on viimeksi (x,y,z) subview.
Se kestää hetken tottua, eli vähiten.
Jos jotkut ihme kärsivällisyyttä tai muuttuvat parametrit peli, yksi ei täydellinen kuutiossa, se katoaa, koska valmista riviä tehdä alkuperäisen Tetris, vaikka ei pistemäärä on säilytettävä HyperTetris.
Benjamin Bernard (2000)
4.6 N-ulotteinen Tetris

Polytope Tetris (2003): N-ulotteinen Tetris peli variantti
Polytope Tetris on n-dimensionally Tetris.
Inspiraationa ovat HyperTetris ohjelma, Polytope Tetris voit tonnia pelata Tetris missään LUKUMÄÄRÄ ulottuvuus.
Play Tetris, 3D, 4D, 5D, tai enemmän.
HyperTetris on paljon catchier nimi kuin Polytope (def) Tetris, mutta en voi varastaa nimi.
5. "Standard Tetris" eritelmä
5.1 Johdanto
Määritelmä "Standard Tetris" on idealized mallin tärkeimmistä ominaisuuksista ja käyttäytymisestä on ensimmäinen IBM-PC täytäntöönpanoa, Tetris peli (circa 1986-1988).
The idealized malli perustuu päätellä ilmeisen aikomuksia ja kehittäjät ensimmäisen IBM-PC täytäntöönpanoa, Tetris peli.
Esimerkiksi, se tuntuu järkevältä päätellä, että kehittäjät ensimmäisen IBM-PC täytäntöönpanoa, Tetris pelin tarkoitus valita muoto jokaisen uuden kuuluvien pala "satunnaisesti," ja että käyttöä koskevien Borland C täytäntöönpanoa, rand() tehtävänä oli pelkästään käytännön lähentämisestä tarkoitus.
Määritelmä "Standard Tetris" täsmennetään, että muoto jokaisen uuden kuuluvien nappula on valittu "sattumanvaraisesti."
Tämä ihanne käyttäytymistä ei voida saavuttaa millään täytäntöönpanon, mutta toteutuksissa voi lähentää ihanteellinen käyttäytymistä.
Vaikka ei täytäntöönpano voi täysin toteuttaa määritelmän "Standard Tetris," ihanteita "Standard Tetris" mukaan objektiivisten ominaisuuksien perusteella, ja toteutukset voidaan verrata mukaan niiden suhteellinen läheisyys ihanteita "Standard Tetris."
Tässä jaksossa kuvataan joukko tekijöitä, käyttäytymisestä ja säännöt, jotka yhdessä määrittelevät "Standard Tetris."
5.2 Standard Tetris aluksella
Hallitus on ruudukon soluista, joilla on 10 saraketta ja 20 riviä, yhteensä 10 * 20 = 200 soluja.

Standard Tetris aluksella (10 saraketta, 20 riviä)
Jokainen solu voi olla joko tyhjyys (tyhjä) tai miehitettyjä (kokonaisuudessaan).
5.3 Standard Tetris kappaletta
On seitsemän (7) standardi Tetris kappaletta, seuraavalla kirjeellä nimet:
{ O, I, S, Z, L, J, T }
Kirjeessä nimet innoittajana on myötäisesti palaset.

Seitsemän Standard Tetris kappaletta ja niiden "linjausta"
The pisteen (0,0) yhtyy hallituksen kantaan (6,20) kun pala ensimmäisen kerran.
Ensimmäisessä sarakkeessa osoittaa alkuperäisen "linjausta."
Sen jälkeen, sana "suuntautumiseen" käytetään kuvaamaan mitä tahansa tilasta palanen, joka on asetettu sallitut todetaan, että tämä voi johtua vastapäivään kierto tapahtuma.
Changing "suuntautumisen," tiettyyn "suuntautumiseen," joka "I, S" tai "Z" pala edellyttää, että yhdistelmä vuorottelua ja käännös.
Näin ollen sana "suunta" on käytetty tässä tarkoitetaan muutakin kuin kierto yksin.
Kuitenkin "suuntautumista" voi muuttaa vain vastauksena on vastapäivään kierto tapahtuma, ja sykli erilliset "suuntaviivat" jokainen pala lähentää tai otteluihin, kierteen johtuvat puhdasta kierrosta.
Erityinen sanan käytön "suuntautumiseen" tässä yhteydessä on lähes vastaava kuin tarkoitettu sana "kiertoa" tai "kulma," mutta sana "suuntautumisen" sijaan käytetään "kierto" yrittää saada huomiota siihen, että jotkut palaset vaativat enemmän kuin kierto tuottaa asetettu sallitut todetaan johtuvat vastapäivään "kierto" tapahtumia.
Palat voi siirtää vain suuntaviivat (tai suoritetaan erityisten horisontaalisten tai vertikaalisten käännös) jos tuloksena state of the pala ei olisi miehitetty (kokonaisuudessaan) solujen ulkopuolella alueen hallituksessa, ja se ei ole miehitetty soluja, jotka ovat päällekkäisiä missään tällä hetkellä täytetty solujen : n hallituksen.
(Tässä sääntönä on, että miehitetyillä (kokonaisuudessaan) solujen urakkapalkalla ei pidetä osa "nykyisin miehitetyillä solujen hallituksen"
Sen jälkeen kommentteja, mitään viittausta, jonka vastapäivään kierto tapahtuma on tehty olettaen, että tällainen kierto voidaan todella suorittaa, ottaen huomioon vallitsevat urakkapalkalla ja aluksella.
The "O" (laatikko) pala on vain yhden suuntautumiseen, ja ei muuta paikkaa jonkin sen miehitetty (kokonaisuudessaan) solujen vastausta mihinkään vastapäivään kierto tapahtuma.
The "I" (rivi) Teos on kaksi mahdollista linjausta, aluksi näkymisen horisontaalinen suuntautumiseen.
The "I" pala varajäsenet kahden linjausta vastauksena peräkkäisten vastapäivään kierto tapahtumia.
The "S" ja "Z" kappaletta kummallakin on kaksi mahdollista linjausta.
Nämä palaset kunkin varajäsenen kahden linjausta vastauksena peräkkäisten vastapäivään kierto tapahtumia.
The "L", "J", ja "T" kappaletta kukin on neljä mahdollista linjausta, ja nämä suuntaviivat ovat tulokset yksinkertainen kierrosten noin center pisteitä muodoista.
Kun teoksen ensimmäisen kerran, johtokunnan, Teos on sen "tärkeimpien akselin" horisontaalinen suuntautumiseen, ja pala on yläreunassa linjan.
Näin ollen ei ole kappaleet ovat alun perin, joilla niiden suuntaviivat muuttuneet. Teos on laskeutumaan yhdellä rivillä on mahdollisuus ottaa sen suuntautumiseen muuttunut.
Kun kappale on pudonnut yksi rivi pöydällä, kaikki pala suuntaviivat voidaan saavuttaa (olettaen, että pala ei ole liian lähellä sivuseinät tai nykyisen kasa kappaletta).
5.4 Standard Tetris flowchart
Seuraavassa on lähentää flowchart: Standard Tetris peli.

Approximate flowchart: Standard Tetris peli

Approximate flowchart: Standard Tetris peli
5.5 Standard Tetris pala luominen
Seuraava kaavio osoittaa (4 cell * 2 cell) alueen hallituksessa, jossa kaikki palaset ovat näkyvissä, kun luotiin.

Alueella, jossa palaset näkyviin, kun luotiin Standard Tetris
Kun uusi pala ensimmäisen kerran pöydällä, sen alkuperä on sama kuin piste tässä kaavio, ja pala on täysin hallittavissa tummennetut alueella tämän kaavion mukaisesti.
Kun uusi peli on alkanut, täydellinen vapaapudotusta viive kuluu, ja ensimmäinen vapaapudotusta iteration pala on saanut yläreunassa linjan.
Aikana Normaali peli pelata, kun tietty vapaapudotusta iteration "lands" pala, täydellinen vapaapudotusta viive kuluu ja ensi vapaapudotusta iteration pala on saanut yläreunassa linjan.
Kun kappale on saanut, tyyppi nappula on valittu käyttäen seuraavaa algoritmia:
pieceIndex = 1 + (randomInteger % 7); // 1..7
Koska on olemassa jatkuva p (= 1/7) mahdollisuus valitsemalla lajin pala, ja kaikki kappaleet, samantyyppisiä ovat erottamattomat, todennäköisyys ottaa täsmälleen k paloja tietyntyyppiset jälkeen n kokeita seuraa Binomijakauma:
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 )
Kun me valita keskuudestaan 7 (seitsemän) kappaletta sattumanvaraisesti, todennäköisyys saada tietty pala on p=(1/7).
Jos teemme tämän n=70 kertaa, esimerkiksi todennäköisyys saada täsmälleen k kappaletta (k vuonna valikoiman 0, n) on antanut Binomijakauma, kuten käy ilmi seuraavasta kuvasta.

Binomijakauma for n=70, p=(1/7)
Näin ollen kukaan voi ennustaa keskimäärin yhteensä kappaletta, yksi tyypin annettiin yhteensä määrä pistokokeita kappaletta, ja yksi voi myös laskea odotettu varianssi ja standardipoikkeama (neliöjuuri varianssi):
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
Kun me muuntaa satunnainen arvo palan indeksi, voimme tulkita sen seuraavasti:
value piece
===== =====
1 "O"
2 "I"
3 "S"
4 "Z"
5 "L"
6 "J"
7 "T"
[Pre-kaupalliseen MS-DOS versio Tetris käytti satunnaisesti useita toimia tarjouksen tekijän Borland Pascal kääntäjään.
Tätä toimintoa käytetään 32-bittisiä valtion muuttuja.
Näin ollen jono satunnaisia numeroita oli vain 2^32 erillisiä arvoja.
Näin ollen periaate, pelaaja voi löytää, kun pudottamalla ehkä 10 kappaletta, tarkka paikka joukoksi 2^32 numerot vastaavat nykyiset state of the game.
Jos Tetris simulaatioilla on teloitettu kanssa kiinteän järjestyksessä 2^32 kappaletta, niin optimaaliset päätökset löytyvät jokaisen paikan järjestysnumero.
(Ei näytä olevan riittäviä mahdollisuuksia on aluksella on täysin tyhjä aluksella valtion, jonka avulla voimme saada synkronoitu kanssa precomputed optimaalisen ratkaisun tielle.)
Riski käyttää yksinkertaista satunnaisesti numeron generaattoria, joka simulaation tarkoitus löytää optimaalinen ratkaisu ongelmaan on se, että ratkaisu on optimaalinen vain tiettyä polkua kautta ongelman avaruuteen valitaan yksinkertaisella satunnaisesti numeron generaattoria. ]
5.6 Standard Tetris valvonta
Aikana peli pelata, seuraavat tuotantopanokset ovat saatavilla:
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
Kaikki tuotantopanokset tulevat voimaan nouseva reunojen on annettu myönteinen panos (nappia painamalla, vastakohtana painiketta release).
Kun nappia painamalla tapahtuu, tämä lasketaan pyynnöstä.
Holding A-painiketta alas ylittää tietyn aikaa saattaa johtaa siihen, että "auto-toistan" piirre näppäimistö, joka tuottaa uusia painikkeen painamisella - mutta tämä ominaisuus on ulkopuolisen pelin moottori.
Tulot edellä mainittujen vaatimusten alkuperäinen Tetris peli.
Käännä pyynnöt voidaan teloittaa, jos ei ole päällekkäisyyttä välillä toivomisen suuntautumiseen ja asettaa solujen nykyisen hallituksen (lukuun ottamatta laskussa kappale), ja jos toivottu suuntautuminen ei ole asetettu solujen ulkopuolella aluksella alueella.
Käännä pyynnöt voidaan teloittaa, jos ei ole päällekkäisyyttä välillä toivomisen käännetty kokoonpano ja asettaa solujen nykyisen hallituksen (lukuun ottamatta laskussa kappale), ja jos haluttu käännetty kokoonpano ei ole asetettu solujen ulkopuolella aluksella alueella.
Input pyynnöt käsitellään kanssa latenssi, että riippuu ruutunopeuksilla-peli (esimerkki: 75 Hz), ja pyyntöjä tulee voimaan (jos voimassa) hetkessä.
Pätkä voidaan laski ilman mitään linjaa, jotka kuuluvat vaiheet tapahtuvat.
Pätkä voidaan kääntää useita kertoja vasemmalle tai oikealle, ja sitten laski, kaikki ilman kokeminen virallinen linja kuuluvien askel.
Koska äskettäin saanut pala ei voi olla käännettävä (koska se on juuttunut vastaan ylälaidan hallituksessa), pelaajan on hyväksyttävä vähintään yksi pala kuuluvien askel, jos vuoroviljely ovat toivottu tai vaadittu.
Vaikutus pistemäärä on vähäinen.
5.7 Standard Tetris pala "laskeutumiseen"
Jos pala on yksinkertaisesti laskee, se laskee yhden rivin aikana jokainen pala kuuluvien iteration.
Siellä tulee olemaan iteration, joka liikkuu se paikka, jolla ei ole yhteyttä horisontaalisia pintojen paikka, joka on yhteydessä horisontaalisen pinnat. Kun tämä toistojen tapahtuu, palaset ovat levätessä yhteyttä.
Jos iteration alkaa pala, levätessä kosketuksessa vaakatasoon, pala "lands," ja siitä tulee osa staattisen kasaan.
5.8 Standard Tetris "riviä valmistunut"
A valmistunut rivi on rivi pinossa jossa kaikki solut on miehitetty. Kun loppuun rivi on pudotettu kasaan, ja rivit yläpuolella poistettava rivi on siirtynyt alaspäin yksi rivi poistaa kuilu, tämä lasketaan "täytetty."
Kun pala lands se tulee osa pinossa.
Välittömästi sen jälkeen, kun pala lands, pinossa on tarkastettu loppuun rivit, ja kaikki loppuun rivit on poistettu.
Jopa neljä riviä voidaan saattaa päätökseen samanaikaisesti.
Seuraavassa taulukossa esitetään ylärajaa riveillä valmistunut samanaikaisesti yhden palan:
piece max. simultaneous
rows completed
===== ==================
"O" 2
"I" 4
"S" 2
"Z" 2
"L" 3
"J" 3
"T" 2
5.9 Standard Tetris "tasot"
Standard Tetris on 10 vaikeuksissa tasoilla, numeroitu 1 (yksi) kautta 10 (TEN), joiden taso 1 on "vähintäänkin vaikeaa."
Tason indeksi on enintään kaksi-arvot:
actualLevel = max( initialLevel, earnedLevel );
The initialLevel arvo on tasolla, että pelaaja valitsee kun aloitetaan uusi peli.
Tämän rakenteen tasolla kuin funktiona loppuun rivit on helposti havaittavissa pre-kaupalliseen MS-DOS versio 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
Näin ollen earnedLevel arvo on laskettu mukaan seuraavat algoritmi:
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 kuuluvien iteration viive
Standard Tetris on reaaliaikainen välillä perättäisten line vapaapudotusta toistojen, että on tehtävä nykyistä vaikeus tasolla.
Seuraavat suhdetta tasolla hakemisto ja jotka kuuluvat iteration viivytystä perustuu toistuvista sekuntikello mittaukset kaikilla tasoilla pre-kaupalliseen MS-DOS versio 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
Näin ollen meidän perustaa seuraavan kaavan varten iteration viivytystä arvo on tehtävä todellinen taso hakemisto:
iterationDelay = ((11 - actualLevel) * 0.05); // [seconds]
Jos aluksella on tyhjä, eikä ole mitään käyttäjä syöttää, saanut pala on todellista tasoa 1 laskeutui noin 10 sekuntia, ja saanut pala on todellista tasoa 10 laskeutui noin 1 sekunnissa.
5.11 Standard Tetris "pisteet"
Standard Tetris vain palkintoja pisteiden teko purkamis-pala.
Ei ole pistettä, jotka myönnettiin sen säädöksen loppuun yhdellä rivillä, tai täyttämällä kaksi, kolme tai neljä riviä samanaikaisesti.
[Huomautus: Jotkin variantteja Tetris palkinnon pisteiden teko loppuun rivit, joilla on räjähdysmäisesti kasvava bonus yhä useammat samanaikaisesti valmistunut rivejä.
Näin ollen strategia maksimoi pisteet tällaisissa variantteja Tetris Siinä perustetaan mahdollisuuksia "saada Tetris," slangia käytöstä "I" muoto saada neljä samanaikaista linjojen ja saamme paljon pisteitä. ]
Jos sinulla on tyhjä aluksella, ja annat ei-"I" pala tehdä vapaapudotusta ja maa, tai heti pudottaa ei-"I" pala, voit perustaa seuraavat kohta chart käyttämällä ennalta-kaupalliseen MS-DOS versio 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, ei-"I" palaset kuuluvat yhteensä 18 riviä.
Tämä selittää, että kohta ero vapaapudotusta ja instant-pudota tapauksissa.
By kokeilemassa välitavoitteet tapauksissa se on helppo päätellä, että seuraava kohta kaavalla:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
Huomaa, että tämä kaava ei ole mitään tekemistä sen kanssa, etäisyys palan kuuluu!
Se on ehdottomasti tehtävä todellinen taso, ja seuraamuksen määrää toistojen pala on voitava pudota vapaasti.
Tämä rankaisee käyttäjä varten tarvitsee aikaa ajatella.
Huomaa myös, että koska kappale ei voi aluksi olla käännettävä, kun se ensin spawns, pelaaja on rangaistu ainakin yhden vapaapudotusta iteration jos vuoroviljely ovat velvollisia paikka pala, pinossa.
Tämä luultavasti koskaan vaikuttaa ihmisten pelaajia, elleivät he jotenkin: tunnista pala, paina käännös avaimet "(vasemmalla" tai "oikealla)," paina "käännä" avain yhden tai useamman kerran, ja paina "pudottaa" avaimen, kaikki alle 0.5 sekuntia tasolla 1, tai alle 0.05 sekuntia tasolla 10.
6. Standard Tetris strategia
6.1 Johdanto
Strategia Pelin pelaaminen riippuu pelin sääntöjä.
Strategia riippuu jonka parametri on optimoitu.