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

1. Oprogramowanie

StandardTetris_2007June4.zip
Tetris kodu źródłowego (C# i C++ wersje) oraz program ("exe");
4068277 bajtów
MD5: 4e957e0ead66064183e9f7e04e618ec0

2. Wstęp

W tym artykule opisano, w jaki sposób komputer może odtwarzać wideo klasyczna gra Tetris przez uzyskiwać informacje dotyczące zarządu, określające dobrego działania i skuteczności tych działań.
Ten artykuł zawiera oprogramowanie zdolne do gry Tetris w czasie rzeczywistym.
Program obejmuje najlepszych czasie rzeczywistym Tetris-algorytm gry w domenie publicznej.
Artykuł ten określa zasady "Standard Tetris," specyfikację w oparciu o oryginalne 1986 pre-komercyjna wersja Tetris na komputer osobisty (PC).
W 2003, oprogramowanie zawarte w tym artykule została użyta, aby włączyć komputer do gry Tetris działa na osobnym komputerze.
Zwykły USB kamery wideo został wykorzystany w celu umożliwienia komputera, aby "zobaczyć" ekran innego komputera.
A przekaźnik pokładzie było kontrolowane za pomocą interfejsu RS-232 aby umożliwić komputera "naciśnij klawisze" na klawiaturze z innego komputera.
Tak, pierwszy komputer ma stosunek do drugiego komputera, który jest podobny do typowego gracza stosunek człowieka do komputera podczas gry Tetris; gra państwa jest jedynym znanym patrząc na ekran, i odtwarzacz działań może być wszczęte jedynie za pośrednictwem klawiatury .
Konfiguracja w tej demonstracji ustalono, że komputer może grać lepiej niż Tetris człowieka, w ramach normalnego czasu rzeczywistego gry Tetris.

3. Historia Tetris

W 1985, Alexey Pajitnov i Dmitry Pavlovsky były na komputerze inżynierów Computing Center of the Russian Academy of Sciences.
computer_center_russian_academy_of_sciences.jpg
Dorodnicyn Computing Centre z Russian Academy of Sciences
http://www.ccas.ru
Alexey i Dmitry były zainteresowane w tworzeniu i sprzedaży uzależniających gier komputerowych.
One testowane w różnych grach.
Alexey był inspirowany przez starożytnych Grecki układanka gra, Pentaminos, którego zorganizowanie kawałki układanki w pięciu kwadratów.
Alexey myśl idei organizowania Pentamino sztuk, jakie spadły na prostokątnym kielich, ale zdajesz sobie sprawę, że dwanaście różnych pięciu kwadratowe kształty były zbyt skomplikowane dla gier wideo.
Alexey włączony do korzystania "tetramino" siedem sztuk, z których każdy złożony z czterech kwadratów.
W 1985.6, Alexey Pajitnov zaprogramowane pierwsza wersja Tetris na Electronica 60.
d_pavlovsky_and_a_pajitnov.jpg
Dmitry Pavlovsky, Alexey Pajitnov i Tetris.
W 1985-1986, Vadim Gerasimov, 16-letni wysokiej szkole komputer prodigy którzy pracowali w Akademii, realizowane Tetris na IBM PC uruchomiony MS-DOS system operacyjny.
(Vadim Gerasimov później zrobił badania na MIT Media Laboratory, od 1994 r.  poprzez 2003, otrzymując tytuł doktora po wypełnieniu wiele ciekawych projektów: http://vadim.www.media.mit.edu)
original_tetris_splash_screen02.jpg
Wprowadzenie na ekranie 1987-1988 e-wydania Tetris na PC
original_tetris_start_game02.jpg
Do gry na ekranie 1987-1988 pre-handlowych uwolnienia Tetris na PC
Po 1987, Tetris rozpowszechniania na całym świecie.
The Tetris Company, LLC, Tetris jest właścicielem znaku towarowego.
www_tetris_com_site.jpg
The Tetris Company, LLC, stronie internetowej (jak okazało się w 2003).  http://www.tetris.com

4. Projekty inspirowane Tetris

4.1 0-wymiarowych Tetris

Dotychczas nie opracowano.

4.2 1-wymiarowej Tetris

Ziga Hajdukovic opracowała 1-wymiarowej Tetris oprogramowania, które mogą być odtwarzane w przeglądarce internetowej.
tetris_1d_ziga_hajdukovic.jpg
1-wymiarowej Tetris przez Ziga Hajdukovic http://www.tetris1d.org
Ziga Hajdukovic posiada również 1-wymiarowej Tetris oprogramowania dla telefonów komórkowych z wykorzystaniem platformy Java J2ME.
(Instrukcje: http://www.tetris1d.org/mobile.php; WAP pobrania: http://www.tetris1d.org/wap)

4.3 2-wymiarowy Tetris

Wszystkie warianty są Tetris konwencjonalnych w tej kategorii.
Ta sekcja zawiera interesujące warianty.

4.3.1 Największy tetris game ever: Delft University of Technology (1995)

delft_univ_1995_2000sqmeters_tetris1.gif
Tetris zagrał w budynku; 2000 m^2 powierzchni; Delft University of Technology (1995)
delft_univ_1995_2000sqmeters_toveren.jpg
Tetris zagrał w budynku; 2000 m^2 powierzchni; Delft University of Technology (1995)

4.3.2 Kolejna gra Tetris zagrał w budynku: Brown University (2000)

brown_university_bastille_tetris_tetris_game_square.jpg
Tetris gry wyświetlane przy użyciu światła w oknach budynku na Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
brown_university_bastille_tetris_woz_play.jpg
Steve Wozniak, w tym w Polsce Apple Computers, gry Tetris; Brown University (2000) http://bastilleweb.techhouse.org
"Myślę, że był po prostu najbardziej niesamowite jednego dnia mogę sobie wyobrazić rzeczą w moim życiu.  Jak zawsze powiedział Steve Jobs, podróż jest nagroda."
"It made me think projektów zrobiliśmy z powrotem w kolegium.  Rzeczy, które były niemal można cofnąć, że inne osoby nie myśleć robi."
Steve Wozniak (2000)

4.3.3 Internetowej grze z MIT "Zielona Budowanie" wizerunku

tetris_vadim_green_building3.jpg
Vadim Gerisimov's internetowej Tetris
http://vadim.www.media.mit.edu/games/gbt.html
Ta przeglądarka internetowa Tetris wariant został utworzony przez Vadim Gerasimov.
Ta przeglądarka internetowa Tetris funkcje "Green" budynku na kampusie MIT.
Tetris Ten wariant ma tylko dziewięć kolumn zamiast standardowego dziesięć kolumn.
Ten wariant Tetris prezentuje nowe utwory z losowo kierunki.
Vadim Gerasimov jest osoba, którzy napisali do komputera kod do PC wersja Tetris w 1986.
Vadim Gerasimov zrobił dr badań na MIT Media Laboratory podczas 1994-2003, pracujących na wielu interesujących projektów.

4.3.4 PIC16F84 12 MHz mikrokontrolera opartego na NTSC / PAL wideo gry Tetris

tetris_pic_television_screen.jpg
PIC16F84 12 MHz mikrokontrolera opartego na NTSC / PAL wideo gry Tetris
http://www.pablin.com.ar/electron/circuito/mc/tetris
Obrazek powyżej pokazuje NTSC / PAL wideo wyjście wyprodukowane przez PIC16F84 12 MHz mikrokontrolerem uruchomione oprogramowanie pisane przez Rickard Gunee w 1998.
Sygnału wideo jest generowane przez oprogramowanie do sterowania wyjściami cyfrowymi.
Inne projekty PIC: http://etronics.free.fr/liens5.htm

4.3.5 "Scopetris" Oscyloskop Tetris przez Lars Pontoppidan (2007.8)

scopetris_lars_pontoppidan_2007_aug.jpg
"Scopetris" Oscyloskop Tetris przez Lars Pontoppidan (2007.8)
http://pontoppidan.info/lars/index.php?proj=scopetris
Lars Pontoppidan pisał kod dla mikrokontrolera AtMega32, proste i dodaje analogowe obwodów, aby stworzyć wersję Tetris, które mogą być odtwarzane na oscyloskop.
Niektóre z rejestrów kontroli AtMega32 mikrokontrolera 8-bitowego sygnału wyjściowego oraz, gdy przeszedł przez "R-2R" rezystora obwodu elektrycznego na cyfrowy-analogowy (D/A) konwersji, wynikające z sygnałów analogowych może kontrolować (x,y) współrzędne oscyloskopu wiązki (jeżeli jest oscyloskop ustawiony na "tryb X-Y)."
YouTube wideo:
http://www.youtube.com/watch?v=Hui5Azx5jQo
FLV wideo:
scopetris_lars_pontoppidan_2007_aug.flv

4.3.6 Kod ukrywane Tetris: C / Unix

Następujące została wyróżniona "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);}
Nr referencyjny: http://homepages.cwi.nl/~tromp/tetris.html

4.3.7 Tetris ukrywane kod: kod Perl

Poniżej Tetris na Perl tłumacza: Perltris (wersja 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;
Nr referencyjny: http://www.seanadams.com/perltris

4.3.8 Mozilla SVG Tetris

Scalable Vector Graphics (SVG) jest standardem opisu obiektów przy użyciu graficznego XML.
tetris_svg_640x480.gif
Mozilla SVG Tetris: Tetris realizowane za pomocą Scalable Vector Graphics (SVG) opis
http://www.croczilla.com/svg/samples/svgtetris/svgtetris.svg
Inne przykłady SVG: http://www.croczilla.com/svg/samples

4.3.9 Google "widget" Tetris

Google, Yahoo! i Microsoft, i inne spółki, mają promować miniaturowych do Internetu oparty na oprogramowaniu o nazwie "widgets", które są zazwyczaj charakteryzuje się dynamicznym wykorzystania niektórych danych dostępnych w Internecie.
Jednym z takich widget dostępny jest za pośrednictwem Google gry Tetris.
W poniższym przykładzie jest cute, ale kształty obracać w irytujące sposoby:
tetris_google_widget.gif
Google "widget" Tetris
http://www.playbie.com/Game.aspx?gm=1&wt=2&su=live.com&sn=Google&gn=Google
Inne Google widgets:
http://www.google.com/ig/directory?synd=open

4.3.10 MIT badań papieru: "Tetris is Hard, Even to Approximate" (2002)

Następujące badania dokument zawiera dowód, że pewnego rodzaju Tetris "NP-wariant" jest "kompletny."
http://theory.csail.mit.edu/~edemaine/papers/Tetris_TR2002
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.
Lokalnie buforowana kopia (PDF): tetris_theory_mit_lcs_tr_865_0210020.pdf
"NP-kompletne" jest klasyfikacja kosztów w czasie i przestrzeni koszt algorytmu.
Inne klasyfikacje obejmują "P" i "NP".
Klasyfikacja "NP-kompletne" oznacza, że dla niektórych problemów większych niż niewielki rozmiar, algorytm jest mało prawdopodobne, aby znaleźć żądane rozwiązanie w praktyce czas i przestrzeń.

4.3.11 Badania dokumentu: "Applying reinforcement learning to Tetris"

Następujące papieru, opublikowany 2005.5.30, Donald Carr w Informatyka w departamencie Rhodes University, Południowa Afryka, przedstawia wniosek o "wzmocnienie uczenia" się Tetris.
ApplyingReinforcementLearningToTetris_DonaldCarr_RU_AC_ZA.pdf

4.3.12 Tetris Spódniczka (2007.11)

tetris_skirt.jpg
Tetris Spódniczka (2007.11)
Tetris w spódnicy została utworzona przez "Lucy" ("hissyfitoly" na etsy.com) przed 2007.11.
Od twórca opis w spódnicy (oferowanych do sprzedaży 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 uwagi dotyczące tego spódnica:
"Mężczyzna, że w spódnicy sucks Tetris"
"Ahahahaha, myślałam to samo."
"Nie ma pełną linię w dół na dole ...  zakończone linie znikają."  "TO PONAD" "."
"Nie powinno być w miejscu, z przodu lub z tyłu, gdzie będzie długi kawałek idealnie pasuje ..."
"To naprawdę brzydki chociaż spódnica.  Mój chłopak nie mógł kupić mi wystarczy czekolada i kwiaty, aby przekonać mnie do tego, co nosić."

4.3.13 Tetris etapie aktu (2007.4)

tetris_stage_act.jpg
Tetris etapie aktu (2007.4)
http://www.youtube.com/watch?v=sZrs8ZCO8xM
"Od tych, którzy cię na Triforce w 2006 ...  Comes następnej generacji obiektów przyrody nieożywionej skit ...  Tetris."
Lokalnie buforowanych Flash wideo w formacie wideo (FLV) (wykorzystanie VLC do gry):
tetris_stage_act.flv

4.3.14 Hilarious Tetris Japoński różnice w telewizji pokazują

tetris_funny_variations_japanese_tv.jpg
Japoński Tetris różnice w telewizji pokazują
http://www.youtube.com/watch?v=SYRLTF71Sow
Ten fragment filmu z telewizji pokazują Japoński obejmuje hilarious odmian Tetris, w tym:
sztuk, które zniknie po wyładunku, utwór, że wypełnia cały wiersz (wypełniając tym samym wierszu po wylądowaniu), kilka sztuk objętych jednocześnie, kawałków o nieregularnych kształtach, długi utwór, który jest nieco zbyt szeroki, by zmieścić się w lukę (zapobieganie 4-rzędowy zakończenie!), uderzanie Mario grzyb i stają się ogromne i umierania!, kawałek gruzu pozostałych po wiersze są zniszczone, co sztuk wzwyż ciężkości pływaka do góry, itp.
Lokalnie buforowanych Flash wideo w formacie wideo (FLV) (wykorzystanie VLC do gry):
tetris_funny_variations_japanese_tv.flv

4.3.15 "The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)

tetris_with_human_blocks_guillaume_reymond_2007nov.jpg
"The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)
http://www.youtube.com/watch?v=G0LtUX_6IXY
Z opisu na YouTube:
"TETRIS odgrywaną przez rzeczywistych ludzi-istot posiedzenia w audytorium:"
TETRIS jest 4 wideo z GAME OVER Project, kierowane przez szwajcarskiego artysty Guillaume REYMOND (NOTsoNOISY kreatywnych agencji).
Ten stop-motion video was shot "LES URBAINES" i zagrali na festiwalu w http://www.urbaines.ch Palais de Rumine (Lausanne, Szwajcaria) na November 24th 2007.
Możesz znaleźć więcej informacji, a także SPACE INVADERS, PONG i POLE POSITION na naszej stronie internetowej http://www.notsonoisy.com/gameover
Lokalnie buforowanych Flash wideo w formacie wideo (FLV) (wykorzystanie VLC do gry):
tetris_with_human_blocks_guillaume_reymond_2007nov.flv

4.3.16 2,5-wymiarowej Tetris

Termin "2,5-wymiarowej" jest używany tutaj oznacza nie ortogonalnych widok dwuwymiarowy wersja Tetris, z grubość w trzeci wymiar.
tetris_2andhalfd_andre_michelle.jpg
Andre Michelle's gry Tetris na Flash gracz http://lab.andre-michelle.com
(Link "tetris3d" Znajdź w "F7: GAMES".)

4.4 3-wymiarowy Tetris

tetris_3d_gno3dtet_seb.jpg
Linux / GTK wersji
Trójwymiarowy Tetris w formie z Java aplet do przeglądarki Internet:
http://paperstack.com/brokout
Trójwymiarowy Tetris na Windows system operacyjny:
http://www.sfu.ca/~vwchu/3dtetris.html

4.5 4-wymiarowej Tetris

4d_tetris.jpg
Greg Kaiser's "HyperTetris" (1996): 4-wymiarowej Tetris
W [1996], [...], Greg Kaiser ułożyła czterech wariantów wymiarowych na klasyczne gry.
Korzystanie IrisGL (a.k.a.  igl) on stworzył pracy, jeżeli trudno jest grać, gra przy użyciu czterech podprogramów ekrany do zobrazowania trójwymiarowego różnych aspektów całej przestrzeni gry.
[Z powodu], nie jest łatwo [zrozumiały] sposobem na rozwój czterech obiektów na ekranie D dwóch, czterech podprogramów poglądy są praktyczne metody do manipulacji i wizualizację rotacji i tłumaczenia części za pośrednictwem czterech wymiarach ( w grze o nazwie x,y,z,w).
Zamiast zakończenia linii bloków, jak w pierwotnym, w tym przypadku celem jest wypełnienie kompletne kostki w x,y,z subview (zazwyczaj 4 na 4 przez 4).
W innych subviews, które zawierają wymiar "w" są ułożone w domyślnej 4 o 4 przez 10 blokować porozumienie z "w" jest długi, "vertical" wymiar we wszystkich trzech przypadkach, z różnych podstaw (x,y), (x,z), (y,z).
Gravity działa w kierunku "-w", klocki spadają w "dół" trzy długie subviews, które zawierają "w", a nie przenosić, chyba że kontrola przez gracza w ciągu ostatnich (x,y,z) subview.
To trwa już od jakiegoś czasu, aby się do, co najmniej.
Jeśli jakimś cudem cierpliwości lub zmiany parametrów gry, jedna ma wypełnić kostka, znikną jak linie zakończone zrobić w oryginalnym Tetris, choć nie jest trzymany w gości HyperTetris.
Benjamin Bernard (2000)
http://archive.ncsa.uiuc.edu/Classes/MATH198/bernard/oldIndex.html

4.6 N-wymiarowej Tetris

polytope_tetris_screenshot3.jpg
Polytope Tetris (2003): N-wymiarowej wariant gry Tetris
http://polytopetetris.sourceforge.net
Polytope Tetris jest n-wymiarach Tetris.
Zainspirowany przez HyperTetris program, Polytope Tetris ton pozwala grać w każdym Tetris LICZBA wymiar.
Zagraj w Tetris 3D, 4D, 5D lub więcej.
HyperTetris jest znacznie catchier nazwę niż Polytope (def) Tetris, ale nie mogę ukraść nazwę.
http://polytopetetris.sourceforge.net

5. "Standard Tetris" specyfikacji

5.1 Wstęp

Definicja "Standard Tetris" jest idealized model z najważniejszych cech i zachowań w pierwszym IBM-PC realizacji w gry Tetris (ok.  1986-1988).
W idealized model oparty jest na powodując widocznej intencji twórców pierwszego wykonania IBM-PC z gry Tetris.
Na przykład, wydaje się uzasadnione, by wywnioskować, że deweloperzy z pierwszych IBM-PC wykonania przeznaczone do gry Tetris, aby wybrać kształt każdego nowego kawałka objętych "losowo," i że korzystanie z Borland C wprowadzenia w życie rand() funkcja była jedynie praktyczne zbliżenia zamiar.
Definicja "Standard Tetris," że kształt każdego nowego kawałka objętych ma być wybrane "losowo."
To idealne zachowanie nie może być osiągnięty poprzez realizację wszelkich, ale implementacje mogą zbliżenie idealne zachowanie.
Chociaż nie można w pełni realizować wdrożenie definicji "Standard Tetris," ideałów "Standard Tetris" obejmować obiektywne cechy i implementacje mogą być porównywane zgodnie z ich względną bliskość do ideałów "Standard Tetris."
Ta sekcja opisuje szereg elementów, zachowań i zasad, które wspólnie definiują "Standard Tetris."

5.2 Standard Tetris pokładzie

Na pokładzie jest siatki komórek, posiadający 10 kolumn i 20 wierszy, dla całkowitej liczby komórek 10 * 20 = 200.
tetris_diagram_board_10x20_empty_new.jpg
Standard Tetris pokładzie (10 kolumn, 20 wierszy)
Każda komórka może być pustostanów (pusta) lub zajmowane (pełna).

5.3 Standard Tetris sztuk

Istnieje siedem standardowych (7) Tetris sztuk, z następującą literę nazwiska:
{ O, I, S, Z, L, J, T }
W piśmie z nazwy są inspirowane przez kształtów części.
tetris_diagram_pieces_orientations_new.jpg
Siedem Standard Tetris sztuk i ich "kierunki"
Kropki na pokładzie (0,0) zbiega się z pozycji (6,20) kiedy pojawi się pierwszy utwór.
Pierwsza kolumna pokazuje wstępnej "orientacji."
W następnym, słowo "orientacja" jest używany do opisania każdego państwa na sztukę, w zestawie dozwolone stwierdza, że mogą wynikać z zegara przypadku rotacji.
Zmiana "orientacji" z określonej "orientacji" z "I, S" lub "Z" sztukę, wymaga połączenie rotacji i tłumaczenia.
W związku z tym słowo "orientacja" jest używany tutaj oznacza coś więcej niż sama rotacji.
Jednakże, "orientację" można zmienić tylko w odpowiedzi na zdarzenie zegara rotacji i cyklu odrębne "wytyczne" dla każdego utworu zbliżona, lub mecze z cyklu wynikające z czystej rotacji.
Specjalne użycia słowa "orientację" w tym kontekście jest niemal równoważne w rozumieniu tego słowa "rotacji" lub "kąt," ale słowo "orientacja" jest używany zamiast "rotacji" próby dostosowania uwagę na fakt, że niektóre fragmenty wymagają więcej niż rotacja do produkcji zestaw dozwolonych Członkowskich wynikające z "rotacji" zegara wydarzeń.
Kawałki można tylko przełączać kierunki (lub poddane szczególnej poziomej lub pionowej tłumaczenia), jeśli wynikające z tego stanu w kawałku nie ma żadnego okupowanych (pełne) komórek poza obszar rady nadzorczej i nie miałby żadnych zajmowanych komórek, które pokrywają wszystkie aktualnie zajmowanych komórek rady nadzorczej.
(W tej reguły, zajmowane (pełne) komórek kawałku nie są uważane za część "obecnie zajmowanych komórek na pokładzie"
W poniższych uwag, wszelkie odniesienia do związku z zegara przypadku rotacji jest z założenia, że taka rotacja może być rzeczywiście wykonywane, ze względu na istniejące warunki kawałku i zarządu.
W "O" (ramka) kawałek tylko jednym kierunku, i nie zmienia lokalizacje wszystkich swoich okupowanych (pełne) komórek w odpowiedzi na wszelkie zegara przypadku rotacji.
W "I" (linia) kawałek ma dwa możliwe kierunki, znajdujących się początkowo w orientacji poziomej.
W "I" kawałek zastępców między dwoma kierunkami w odpowiedzi na kolejne imprezy zegara rotacji.
W "S" i "Z" sztuk każdy ma dwa możliwe kierunki.
Te sztuk każdego zastępcy między dwoma kierunkami w odpowiedzi na kolejne imprezy zegara rotacji.
W "L", "J" i "T" sztuk każdego cztery możliwe kierunki, i te kierunki są wyniki prostych obr.  o punkty w centrum kształty.
Kiedy pierwszy utwór pojawi się na pokładzie, utwór ma swoją "głównych osi" w orientacji poziomej, a kawałek jest na górze planszy.
Dlatego początkowo nie są zdolne sztuk o ich zmianie orientacji.  Utwór musi descend przez jeden wiersz, aby mieć możliwość posiadania zmienił kierunek.
Po kawałku spadła o jeden wiersz na pokładzie, wszystkie kierunki sztuki można osiągnąć (przy założeniu, że utwór nie jest zbyt blisko ścian bocznych lub do bieżącego stosu sztuk).

5.4 Standard Tetris diagram

Poniższy diagram jest orientacyjna dla standardowego Tetris gry.
standard_tetris_flowchart_for_timer_event_001.gif
Szacunkowe diagram dla standardowego Tetris gry
standard_tetris_flowchart_for_input_events_001.gif
Szacunkowe diagram dla standardowego Tetris gry

5.5 Standard Tetris sztukę tworzenia

Poniższy wykres pokazuje (4 * 2 komórki komórki) na pokładzie regionie, gdzie wszystkie elementy pojawiają się, gdy utworzony.
tetris_diagram_board_10x20_spawn_area.jpg
Region, w którym pojawiają się fragmenty, gdy utworzono w Tetris Standard
Kiedy po raz pierwszy pojawia się nowy kawałek na pokładzie, jego pochodzenie zbiega się z kropką na ten schemat, a utwór będzie zawierał całkowicie zasłonięte przez ten obszar na wykresie.
Gdy gra zostanie uruchomiona nowa, w pełni wolnego spadek opóźnienia upływa, a na pierwszym wolnym spadek iteracja utwór zrodził się na górze planszy.
Podczas normalnej gry, gdy szczególne wolnego spadek iteracja "ląduje" kawałek, pełnego wolnego spadek opóźnień i upływa w dniu następnym wolnym spadek iteracja utwór zrodził się na górze planszy.
Gdy utwór jest piedestał, rodzaj sztuki jest zaznaczona przy użyciu następującego algorytmu:
pieceIndex = 1 + (randomInteger % 7);  // 1..7
Ponieważ istnieje stały p (= 1/7) szansę wybrania konkretnego rodzaju sztukę, a wszystkie elementy tego samego typu są indistinguishable, prawdopodobieństwo posiadania dokładnie k sztuk danego typu po n prób następstwem Rozkład dwumianowy:
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 )
Kiedy wybierać spośród 7 (siedem) sztuk losowe, prawdopodobieństwo uzyskania konkretnego utworu jest p=(1/7).
Jeśli chcemy to zrobić n=70 razy, na przykład, prawdopodobieństwo uzyskania dokładnie k sztuk (z k w zakresie 0 do n) jest podany przez dwumianowy dystrybucji, jak pokazano na poniższym obrazie.
binomial_distribution_n70_p7th.jpg
Rozkład dwumianowy dla n=70, p=(1/7)
Tak, można przewidzieć, średnia całkowita sztuk jednego typu biorąc pod uwagę całkowitą liczbę losową sztuk, można również obliczyć oczekiwane wariancji i odchylenie standardowe (pierwiastek kwadratowy z wariancji):
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
Kiedy przekonwertować wartość losową utwór do indeksu, interpretować je w następujący sposób:
value  piece
=====  =====
  1     "O"
  2     "I"
  3     "S"
  4     "Z"
  5     "L"
  6     "J"
  7     "T"
[Pre-handlowych MS-DOS wersji Tetris użyto losowo numer funkcji oferowanych przez Borland Pascal kompilatora.
Ta funkcja używane 32-bitowej zmiennej stanu.
W związku z tym, sekwencji liczb losowych został ograniczony do 2^32 odrębne wartości.
Dlatego, w zasadzie, gracz może odkryć, po upuszczeniu może 10 sztuk, dokładne miejsce w zestawie 2^32 numery odpowiadające na aktualny stan gry.
Jeśli Tetris symulacje są wykonane ze stałych sekwencji 2^32 sztuk, a następnie podejmowania optymalnych decyzji można znaleźć w każdym miejscu w sekwencji.
(Nie wydaje się wystarczające możliwości, aby będąc na pokładzie statku stanie całkowicie pusty, co pozwoliło nam uzyskać zsynchronizowane z precomputed optymalne rozwiązanie ścieżkę).
Ryzyko przy użyciu prostych generator liczb losowych w symulacji przeznaczone do znalezienia optymalnego rozwiązania problemu jest to, że optymalnym rozwiązaniem będzie tylko dla danej drogi problem przestrzeń wybranych przez prosty generator liczb losowych.  ]

5.6 Standard Tetris kontroli

Podczas gry, dostępne są następujące komponenty:
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
Wszystkich wejść w życie na krawędzi-rosnące pozytywny wkład (naciśnij przycisk, w przeciwieństwie do przycisku prasowa).
Gdy występuje naciśnij przycisk ten liczy się jako jeden wniosek.
Holding przycisku w dół po pewnym czasie może doprowadzić do "automatycznego powtarzania" funkcji z klawiatury, generowanie nowych naciska przycisk - ale ta funkcja jest zewnętrzną w stosunku do silnika gry.
Wejścia określone powyżej są zgodne z pierwotnym gry Tetris.
Obróć wnioski mogą być wykonywane, jeżeli nie istnieje podobieństwo między pożądany kierunek i ustaw komórek na pokładzie bieżącego (z wyłączeniem objętych sztukę), a jeśli nie ma pożądanej orientacji zestaw komórek poza planszy.
Przetłumacz wnioski mogą być wykonywane, jeżeli nie istnieje podobieństwo między pożądanego przetłumaczone i ustawić konfigurację komórek na pokładzie bieżącego (z wyłączeniem objętych sztukę) i, jeśli pożądane przetłumaczone konfiguracji ma ustawione komórek poza planszy.
Wejście wnioski są przetwarzane z tego opóźnienia zależy od klatek w grze (np.: 75 Hz), a wnioski w życie (jeśli ważnych) natychmiast.
A kawałek może zostać pominięte bez linii występujących objętych kroki.
A kawałek można przetłumaczyć kilka razy w lewo lub w prawo, a następnie spadł, doświadcza wszystkich bez oficjalnej linii objętych kroku.
Ponieważ nowo zrodził utwór nie może być obracany (bo tkwi w stosunku do górnej krawędzi tablicy), gracz musi zaakceptować co najmniej jeden utwór objętych krok, jeżeli obroty są pożądane lub konieczne.
Wpływ na wynik jest znikomy.

5.7 Standard Tetris kawałek "wyładunku"

Jeśli kawałek jest po prostu spadają, wchodzi ona w jednym rzędzie podczas każdego kawałka objętych iteracja.
Nie będzie iteracja, że przenosi go z miejsca bez kontaktu z poziomej powierzchni na miejscu, że ma kontakt z poziomych powierzchniach.  Gdy występuje powtórzeń, kawałki są w spoczynku kontakt.
Jeśli iteracja rozpoczyna się kawałek odpoczynku w kontakcie z poziomej powierzchni, sztukę "ziemie," i staje się częścią statycznego stosu.

5.8 Standard Tetris "linie zakończone"

A wiersz jest wypełniony wiersz stos, w którym wszystkie komórki są zajmowane.  Gdy zakończona zostanie wyeliminowana z rzędu stos, i wiersze powyżej rzędzie są przesunięte wyeliminowane przez jeden wiersz, aby wyeliminować luki, ten liczy się jako wypełniony "wiersz."
Gdy ląduje kawałek staje się częścią stos.
Natychmiast po kawałku ziem, stos jest sprawdzana za zakończone wiersze, wypełnione wszystkie wiersze są eliminowane.
Do czterech wierszy może być zakończone jednocześnie.
Poniższa tabela przedstawia górną granicę na linii zakończone jednocześnie przez jeden utwór:
piece   max. simultaneous
         rows completed
=====   ==================
 "O"           2
 "I"           4
 "S"           2
 "Z"           2
 "L"           3
 "J"           3
 "T"           2

5.9 Standardowe "poziomy" Tetris

Standard Tetris ma 10 poziomów trudności, ponumerowane 1 (jeden) poprzez 10 (dziesięć), z poziomu 1 jest "co najmniej trudne."
Poziom wskaźnika jest maksymalnie dwóch wartości:
actualLevel = max( initialLevel, earnedLevel );
W initialLevel wartość to poziom, że gracz wybiera przy uruchamianiu nowej gry.
W strukturze poziomu jako funkcja zakończone linii jest łatwo zaobserwować w pre-handlowych MS-DOS wersja 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
Tak, earnedLevel wartość jest obliczana według następującego algorytmu:
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 objętych iteracja opóźnienia

Standard Tetris jest w czasie rzeczywistym opóźnienie między kolejnymi wiersza wolnego spadek powtórzeń, że jest funkcją bieżącego poziomu trudności.
W poniższej relacji między poziomem indeksu i objętych iteracja opóźnienia jest oparty na powtarzające się stoper pomiarów na wszystkich poziomach sprzed handlowych MS-DOS wersję 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
Dlatego ustalenie następującego wzoru dla iteracji wartości opóźnienia w zależności od rzeczywistego poziomu wskaźnika:
iterationDelay = ((11 - actualLevel) * 0.05);  // [seconds]
Jeżeli na pokładzie jest pusty, nie ma użytkownika, piedestał sztuki na rzeczywisty poziom 1 ląduje w przybliżeniu 10 sekund, a na piedestał sztuki rzeczywisty poziom 10 ląduje w 1 około sekundy.

5.11 Standard Tetris "gości"

Standard Tetris tylko nagrody za punkty aktu wyładunku utwór.
Nie ma punktów za akt ukończenia jednej linii, lub wypełniając dwóch, trzech lub czterech linii jednocześnie.
[Uwaga: Niektóre warianty Tetris przyznawania punktów do akt zakończenia linii, z wykładniczo rosnącej premii dla coraz większej liczby linii jednocześnie zakończone.
Tak, strategii dla maksymalizacji gości w takich wariantów Tetris obejmuje tworzenie możliwości "uzyskania Tetris," Dziękujemy za korzystanie z "I" kształt, aby uzyskać cztery linie i jednoczesnego pobierania wielu punktów.  ]
Jeśli masz pusty pokładzie, i niech was nie "I" zrobić kawałek wolnego spadku i ziemi, ani razu nie spadnie "I" kawałek, można ustalić w następujący punkt wykresu za pomocą e-MS-DOS wersja 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, nie "I" sztuk spadek łącznie 18 wierszy.
Z tego punktu różnicy między wolnym i natychmiastowy spadek-spadek przypadków.
Do eksperymentowania z pośrednich przypadkach jest łatwo wyprowadzić następujący punkt wzoru:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
Należy pamiętać, że ta formuła nie ma nic wspólnego z odległości utwór spada!
Jest to ściśle funkcja rzeczywistego poziomu, a kary za liczbę powtórzeń utwór jest dopuszczone do swobodnego upadku.
Ten użytkownik karze dla wymagających czasu do myślenia.
Również pamiętać, że utwór nie może być obracany początkowo, gdy po raz pierwszy spawns, gracz jest karane przez co najmniej jednego wolnego spadek iteracji, jeżeli obroty są zobowiązane do umieszczenia utworu w stos.
To prawdopodobnie nie wpływa na ludzkie graczy, chyba że w jakiś sposób: rozpoznać utwór, naciśnij klawisze tłumaczenia "(w lewo" lub w "prawo)," naciśnij "obracać" klucz jednego lub więcej razy, a następnie naciśnij "spadku" klucz, wszystkie w terminie krótszym niż sekunda 0.5 na poziomie 1, lub mniej niż 0.05 sekund na poziomie 10.

6. Standard Tetris strategii

6.1 Wstęp

Strategia gry gry zależy od reguł gry.