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

1. Software

StandardTetris_2007June4.zip
Tetris código fuente (C# y C++ versiones) y programa (“exe”);
4068277 bytes
MD5: 4e957e0ead66064183e9f7e04e618ec0

2. Introducción

Este artículo describe cómo un ordenador puede jugar el clásico videojuego de Tetris para obtener información sobre el tablero, la determinación de buenas acciones, y la realización de esas acciones.
Este artículo incluye software capaz de jugar al Tetris en tiempo real.
El software incluye los mejores en tiempo real de juego Tetris algoritmo en el dominio público.
Este artículo define las normas “estándar” para “Tetris,” una especificación basada en la original 1986 previa a la versión comercial de Tetris para el ordenador personal (PC).
En 2003, el software incluido en este artículo se utilizó para permitir un ordenador para jugar Tetris funcionando en un ordenador.
Un ordinario USB cámara de vídeo fue utilizado para permitir el ordenador para “ver” la pantalla de otra computadora.
A bordo de relé se controla a través de un interfaz RS-232 para que el equipo de “prensa teclas” en el teclado de otro ordenador.
Por lo tanto, el primer ordenador tiene una relación con el segundo equipo que es similar a un típico jugador humano a la relación de un ordenador al jugar Tetris, el juego de estado sólo se conoce mirando a la pantalla, reproductor y acciones sólo pueden ser presentadas a través de un teclado .
La configuración de esta manifestación demuestra que un ordenador puede jugar Tetris mejor que un ser humano, bajo condiciones normales de tiempo real las condiciones de juego Tetris.

3. Historia de Tetris

En 1985, Alexey Pajitnov y Dmitry Pavlovsky eran ingenieros informáticos a la Computing Center of the Russian Academy of Sciences.
computer_center_russian_academy_of_sciences.jpg
Dorodnicyn Computing Centre de la Russian Academy of Sciences
http://www.ccas.ru
Alexey y Dmitry estaban interesados en el desarrollo y la venta de juegos de ordenador adictivo.
Se probó a cabo varios juegos diferentes.
Alexey se inspiró en la antigua Grecia, donde el juego de puzzle, Pentaminos, en el que participaron la organización de piezas hechas de cinco plazas.
Alexey pensamiento de la idea de organizar Pentamino piezas, ya que cayó en un vaso rectangular, pero se dio cuenta de que las doce de cinco diferentes formas cuadradas son demasiado complejos para un videojuego.
Alexey pasa a utilizar “tetramino” siete piezas, cada una de cuatro plazas.
En 1985.6, Alexey Pajitnov programado la primera versión de Tetris en un Electronica 60.
d_pavlovsky_and_a_pajitnov.jpg
Dmitry Pavlovsky, Alexey Pajitnov, y Tetris.
En 1985-1986, Vadim Gerasimov, de 16 años, alta escuela ordenador prodigio que trabajó en la academia, ejecutado por el Tetris IBM PC ejecutando el sistema operativo MS-DOS.
(Vadim Gerasimov más tarde hizo una investigación en el MIT Media Laboratory, desde 1994 hasta 2003, recibiendo un doctorado después de terminar muchos proyectos interesantes: http://vadim.www.media.mit.edu)
original_tetris_splash_screen02.jpg
La introducción de la pantalla 1987-1988 pre-lanzamiento comercial de Tetris para la PC
original_tetris_start_game02.jpg
El juego de la pantalla 1987-1988 pre-lanzamiento comercial de Tetris para la PC
Después de 1987, Tetris propagación en todo el mundo.
The Tetris Company, LLC, Tetris es el propietario de la marca.
www_tetris_com_site.jpg
The Tetris Company, LLC, sitio en la Internet (tal como apareció en 2003).  http://www.tetris.com

4. Los proyectos inspirados por Tetris

4.1 0-dimensional Tetris

Pendiente de desarrollar.

4.2 1-dimensional Tetris

Ziga Hajdukovic ha elaborado 1-dimensional Tetris software que se pueden reproducir en un navegador de Internet.
tetris_1d_ziga_hajdukovic.jpg
1-dimensional de Tetris Ziga Hajdukovic http://www.tetris1d.org
Ziga Hajdukovic también ha elaborado 1-dimensional Tetris software para teléfonos móviles utilizando la plataforma Java J2ME.
(Instrucciones: http://www.tetris1d.org/mobile.php; WAP descarga: http://www.tetris1d.org/wap)

4.3 2-dimensional Tetris

Todas las variantes de Tetris convencionales se encuentran en esta categoría.
Esta sección incluye interesantes variantes.

4.3.1 Tetris más grande de todos los tiempos: Delft University of Technology (1995)

delft_univ_1995_2000sqmeters_tetris1.gif
Tetris jugado en un edificio; 2000 m^2 superficie; Delft University of Technology (1995)
delft_univ_1995_2000sqmeters_toveren.jpg
Tetris jugado en un edificio; 2000 m^2 superficie; Delft University of Technology (1995)

4.3.2 Otro juego Tetris en un edificio: Brown University (2000)

brown_university_bastille_tetris_tetris_game_square.jpg
Tetris juego se muestra mediante luces en las ventanas de un edificio en Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
brown_university_bastille_tetris_woz_play.jpg
Steve Wozniak, cofundador de Apple Computers, jugar Tetris; Brown University (2000) http://bastilleweb.techhouse.org
Creo que fue simplemente la más increíble de un día, cosa que yo puedo imaginar en mi vida.  Al igual que Steve Jobs siempre dice, el viaje es la recompensa.
Se me hizo pensar en proyectos que hicimos en la universidad.  Las cosas que eran casi deshacer que otras personas no piensan de hacer.
Steve Wozniak (2000)

4.3.3 Navegador de Internet con el juego MIT “Edificación” imagen

tetris_vadim_green_building3.jpg
Vadim Gerisimov's navegador de Internet Tetris
http://vadim.www.media.mit.edu/games/gbt.html
Este navegador de Internet variante de Tetris fue creado por Vadim Gerasimov.
Este navegador de Internet Tetris características “Green” el edificio en el campus de MIT.
Esta variante de Tetris sólo tiene nueve columnas en lugar de los diez columnas.
Esta variante de Tetris presenta nuevas piezas con orientaciones al azar.
Vadim Gerasimov es la persona que escribió el código de computadora para la PC versión de Tetris en 1986.
Vadim Gerasimov hizo Ph.D.  investigación en el MIT Media Laboratory durante 1994-2003, trabajando en muchos proyectos interesantes.

4.3.4 PIC16F84 12 MHz basado en microcontrolador NTSC / PAL video juego Tetris

tetris_pic_television_screen.jpg
PIC16F84 12 MHz basado en microcontrolador NTSC / PAL video juego Tetris
http://www.pablin.com.ar/electron/circuito/mc/tetris
La imagen de arriba muestra la NTSC / PAL salida de vídeo producida por un microcontrolador PIC16F84 12 MHz correr software escrito por Rickard Gunee en 1998.
La señal de vídeo es generado por un programa informático de control de salidas digitales.
Otros proyectos PIC: http://etronics.free.fr/liens5.htm

4.3.5 “Scopetris” osciloscopio de Tetris Lars Pontoppidan (2007.8)

scopetris_lars_pontoppidan_2007_aug.jpg
“Scopetris” osciloscopio de Tetris Lars Pontoppidan (2007.8)
http://pontoppidan.info/lars/index.php?proj=scopetris
Lars Pontoppidan escribió el código para el microcontrolador AtMega32, y agregó sencillo de circuitos analógicos, para crear una versión de Tetris que podrían desempeñar en un osciloscopio.
Algunos registros de la AtMega32 control microcontrolador de 8 bits señales de salida y, cuando pasa a través de una resistencia eléctrica “R-2R” circuito de digital a analógica (D/A) conversión, la resultante señales analógicas puede controlar la (x,y) las coordenadas de un osciloscopio haz (cuando el osciloscopio es conjunto a “modo de X-Y).”
YouTube video:
http://www.youtube.com/watch?v=Hui5Azx5jQo
FLV video:
scopetris_lars_pontoppidan_2007_aug.flv

4.3.6 Código ofuscado Tetris: C / Unix

El siguiente fue galardonado con “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);}
Referencia: http://homepages.cwi.nl/~tromp/tetris.html

4.3.7 Código ofuscado Tetris: Perl código

El siguiente es el Tetris para Perl intérprete: Perltris (versión 20050717) de 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;
Referencia: http://www.seanadams.com/perltris

4.3.8 Mozilla SVG Tetris

Scalable Vector Graphics (SVG) es un estándar para la descripción gráfica de objetos que utilizaban XML.
tetris_svg_640x480.gif
Mozilla SVG Tetris: Tetris aplicado usando una descripción Scalable Vector Graphics (SVG)
http://www.croczilla.com/svg/samples/svgtetris/svgtetris.svg
Otros ejemplos de SVG: http://www.croczilla.com/svg/samples

4.3.9 Google “widget” Tetris

Google, Yahoo!, y Microsoft, y otras empresas, han promovido en miniatura basadas en Internet software llamado “widgets” que son por lo general se caracteriza por el uso de algunos datos dinámicos en Internet.
Uno de esos widget disponibles a través de Google es un juego Tetris.
El siguiente ejemplo es lindo, pero las formas en rotar molesto maneras:
tetris_google_widget.gif
Google “widget” Tetris
http://www.playbie.com/Game.aspx?gm=1&wt=2&su=live.com&sn=Google&gn=Google
Otros Google widgets:
http://www.google.com/ig/directory?synd=open

4.3.10 MIT trabajo de investigación: “Tetris is Hard, Even to Approximate” (2002)

El siguiente documento de investigación contiene una prueba de que un cierto tipo de variante de Tetris es “NP-completa.”
http://theory.csail.mit.edu/~edemaine/papers/Tetris_TR2002
Erik D.  Demaine, Susan Hohenberger, y David Liben-Nowell, “Tetris is Hard, Even to Approximate”, Technical Report MIT-LCS-TR-865, Massachusetts Institute of Technology, 2002.10.21.
A nivel local-copia en caché (PDF): tetris_theory_mit_lcs_tr_865_0210020.pdf
“NP-es” una “completa” clasificación de los gastos tiempo y el espacio costo de un algoritmo.
Otras clasificaciones incluyen “P” y “NP”.
Una clasificación de “NP-completo” implica que, para los problemas más grandes que algunos pequeños tamaño, el algoritmo es poco probable que encontrar una solución deseada en un punto de vista práctico cantidad de tiempo o espacio.

4.3.11 Documento de investigación: “Applying reinforcement learning to Tetris”

El siguiente documento, publicado 2005.5.30, por Donald Carr en el departamento de Ciencias de la Computación en Rhodes University, Sudáfrica, presenta la solicitud de “refuerzo de aprendizaje” a Tetris.
ApplyingReinforcementLearningToTetris_DonaldCarr_RU_AC_ZA.pdf

4.3.12 Tetris falda (2007.11)

tetris_skirt.jpg
Tetris falda (2007.11)
La falda Tetris fue creado por “Lucy” (“hissyfitoly” en etsy.com) antes de 2007.11.
A partir de la descripción del creador de la falda (a la venta en 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."
Foro de comentarios respecto a esta falda:
“El hombre que aspira a falda Tetris”
“Ahahahaha, pensé lo mismo.”
“Hay una línea completa abajo en la parte inferior ...  completado las líneas desaparecen.”  “HACER MÁS” “.”
“Debería haber un terreno en la parte trasera o delantera, donde a largo pieza encajaría perfectamente ...”
“Esa es una realidad fea aunque falda.  Mi novio no podía comprar suficiente me chocolate y flores para convencer a mí para que lo use.”

4.3.13 Tetris etapa acto (2007.4)

tetris_stage_act.jpg
Tetris etapa acto (2007.4)
http://www.youtube.com/watch?v=sZrs8ZCO8xM
“De los que le trajo la Triforce en 2006 ...  Viene la próxima generación de objeto inanimado dramatización ...  Tetris.”
A nivel local-en caché de vídeo en Flash vídeo (FLV) formato (uso VLC a desempeñar):
tetris_stage_act.flv

4.3.14 Tetris hilarante variaciones sobre un japonés de televisión

tetris_funny_variations_japanese_tv.jpg
Tetris variaciones en japonés de televisión
http://www.youtube.com/watch?v=SYRLTF71Sow
Este segmento de video de un japonés de televisión hilarante incluye las variaciones de Tetris, entre ellas:
piezas que desaparecen en el aterrizaje, una pieza que llena toda una fila (completando así una fila en el aterrizaje), varias piezas pertenecientes al mismo tiempo, piezas de forma irregular, una larga pieza que es un poco demasiado grandes para caber en una laguna (la prevención de una fila de 4 conclusión!), Mario golpear a un hongo y se convierta en un enorme y morir!, pequeña pieza que queda después de desechos filas se destruyen, al alza gravedad de toma piezas flotan a la parte superior, etc
A nivel local-en caché de vídeo en Flash vídeo (FLV) formato (uso VLC a desempeñar):
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
A partir de la descripción que figura en YouTube:
“TETRIS real desempeñado por seres humanos sentados en un auditorio:”
TETRIS es el 4 º video de la ejecución GAME OVER Project, dirigida por el artista suizo Guillaume REYMOND (NOTsoNOISY agencia creativa).
Este stop-motion video fue filmado y jugó para “LES URBAINES” festival http://www.urbaines.ch en el Palais de Rumine (Lausanne, Suiza) en November 24th 2007.
Puede encontrar más información y también SPACE INVADERS, PONG y POLE POSITION en nuestro sitio web http://www.notsonoisy.com/gameover
A nivel local-en caché de vídeo en Flash vídeo (FLV) formato (uso VLC a desempeñar):
tetris_with_human_blocks_guillaume_reymond_2007nov.flv

4.3.16 2.5-dimensional Tetris

El término “2.5-dimensional” se utiliza aquí en el sentido de no ortogonales de una vista bidimensional versión de Tetris, con algunas espesor en la tercera dimensión.
tetris_2andhalfd_andre_michelle.jpg
Andre Michelle's Tetris Flash para un jugador http://lab.andre-michelle.com
(Encuentre el vínculo “tetris3d” en “F7: GAMES”.)

4.4 3-dimensional Tetris

tetris_3d_gno3dtet_seb.jpg
Linux / GTK versión
Tridimensionales Tetris en la forma de un applet Java para los navegadores de Internet:
http://paperstack.com/brokout
Tridimensionales para el Tetris Windows sistema operativo:
http://www.sfu.ca/~vwchu/3dtetris.html

4.5 4-dimensional Tetris

4d_tetris.jpg
Greg Kaiser's “HyperTetris” (1996): a 4-dimensional Tetris
En [1996], [...], Greg Kaiser juntos un período de cuatro dimensiones variante en el juego clásico.
El uso de IrisGL (a.k.a.  igl) creó un grupo de trabajo, si es difícil de jugar, juego con cuatro sub-pantallas diferentes para representar en tres dimensiones aspectos del juego-todo el espacio.
[Porque] no hay una manera fácil [comprensible] manera de sacar cuatro objetos-D en un período de dos D pantalla, los cuatro sub-puntos de vista son un método práctico para manipular y visualizar la rotación y la traducción de las piezas a través de las cuatro dimensiones ( en el juego llamado x,y,z,w).
En lugar de completar líneas de bloques como en el original, el objetivo en este caso es para llenar un cubo completo en la x,y,z subview (normalmente 4 de 4 en 4).
El otro subviews que contienen la dimensión “w” se organizan en un 4 por defecto de 4 por 10 bloques acuerdo con “w” ser el largo, “vertical” dimensión en los tres casos, con diferentes bases de (x,y), (x,z), (y,z).
Gravedad en los actos “-w” dirección, por lo que los pedazos “caen” en las tres largas subviews que incluyen “w”, y no se mueven a menos que el control de jugador en los últimos (x,y,z) subview.
Se toma un tiempo para acostumbrarse, por decir lo menos.
Si por algún milagro de paciencia o cambiar los parámetros del juego, uno no completa un cubo, que desaparecerá como el concluido líneas hacer en el original Tetris, aunque no Resultado se mantiene en HyperTetris.
Benjamin Bernard (2000)
http://archive.ncsa.uiuc.edu/Classes/MATH198/bernard/oldIndex.html

4.6 N dimensiones Tetris

polytope_tetris_screenshot3.jpg
Polytope Tetris (2003): un N dimensiones variante de Tetris
http://polytopetetris.sourceforge.net
Polytope Tetris es dimensionalmente n-Tetris.
Inspirado por la HyperTetris programa, permite que usted Polytope Tetris toneladas jugar Tetris en cualquier NÚMERO DE dimensión.
Juega Tetris en 3D, 4D, 5D, o más.
HyperTetris es mucho más catchier nombre Polytope (def) Tetris, pero no puedo robar el nombre.
http://polytopetetris.sourceforge.net

5. “Tetris” especificación “estándar”

5.1 Introducción

La definición de la “norma Tetris” es un modelo idealizado de las más importantes características y comportamientos de la primera IBM-PC aplicación del juego Tetris (circa 1986-1988).
El modelo idealizado se basa en deducir la aparente intención de los desarrolladores de la primera IBM-PC aplicación del juego Tetris.
Por ejemplo, parece razonable inferir que los desarrolladores de la primera IBM-PC aplicación del juego de Tetris para seleccionar la forma de cada pieza nueva caída “al azar,” y que el uso de la Borland C aplicación de la rand() función era simplemente una práctica de aproximación la intención.
La definición de la “norma Tetris” especifica que la forma de cada pieza nueva caída se seleccionaron “al azar.”
Este ideal de conducta no pueden ser alcanzados por cualquier aplicación, pero las implementaciones pueden aproximar el comportamiento ideal.
Aunque no aplicación puede aplicar perfectamente a la definición de la “norma Tetris,” los ideales de la “norma” la participación de “Tetris” características objetivas, y las implementaciones se pueden comparar en función de su relativa proximidad a los ideales de la “norma Tetris.”
Esta sección describe un conjunto de elementos, los comportamientos y las normas que, colectivamente, definir “Standard Tetris.”

5.2 Norma Tetris bordo

La placa es una red de células, observando las 10 columnas y 20 filas, con un total de 10 * 20 = 200 células.
tetris_diagram_board_10x20_empty_new.jpg
Norma Tetris bordo (10 columnas, 20 filas)
Cada celda puede ser desocupadas (vacías) u ocupados (lleno).

5.3 Norma piezas de Tetris

Hay siete (7) estándar de piezas de Tetris, con los siguientes nombres de letras:
{ O, I, S, Z, L, J, T }
Los nombres de letras se inspiran en las formas de las piezas.
tetris_diagram_pieces_orientations_new.jpg
Las siete piezas estándar de Tetris y sus “orientaciones”
El punto en (0,0) coincide con la posición (6,20) bordo cuando la pieza aparece por primera vez.
La primera columna muestra la “orientación” inicial.
En el siguiente, la palabra “de orientación” se utiliza para describir cualquier estado de una pieza, dentro de un conjunto de estados permitidos, que puede ser resultado de una rotación caso contrario.
El cambio de “orientación” de una determinada “orientación” de un “I, S,” o “Z” pieza, requiere la combinación de una rotación y una traducción.
Por lo tanto, la “orientación” palabra se usa aquí para significar algo más que la rotación por sí solo.
Sin embargo, la “orientación” sólo puede cambiar en respuesta a una rotación caso contrario, y el ciclo de distintas “orientaciones” de cada pieza se aproxima, o partidos, como resultado del ciclo de rotaciones puras.
El especial uso de la palabra “de orientación” en este contexto es casi equivalente al significado de la palabra o “ángulo de rotación,” pero la palabra “de orientación” se utiliza en lugar de la “rotación” para tratar de llamar la atención sobre el hecho de que algunas piezas requieren más de rotación para producir la conjunto de estados resultantes permitido La “rotación” de los acontecimientos.
Las piezas sólo pueden cambiar las orientaciones (o someterse a un específico horizontal o vertical de traducción) si el estado resultante de la pieza no tendría ningún ocupados (lleno) células más allá de la zona del tablero y no tendría ningún ocupados células que se solapan cualquier actualmente ocupado células de la junta.
(En este estado, los ocupados (lleno) las células de la pieza no se consideran como parte de los “que actualmente ocupan las células de la junta”
En los siguientes comentarios, cualquier referencia a un resultado de un evento La rotación se hace con el supuesto de que dicha rotación puede ser realizada, debido a las condiciones existentes de la pieza y el tablero.
El “O” (véase el recuadro) pieza sólo tiene una sola orientación, y no cambia la ubicación de cualquiera de sus ocupados (lleno) las células en respuesta a cualquier evento en sentido de rotación.
El “I” (línea) pieza tiene dos orientaciones posibles, que aparece inicialmente en una orientación horizontal.
La pieza “I” alterna entre las dos orientaciones en respuesta a los sucesivos acontecimientos en sentido de rotación.
El “S” y “Z” piezas tienen cada uno dos posibles orientaciones.
Estas piezas cada una alternativa entre dos orientaciones en respuesta a los sucesivos acontecimientos en sentido de rotación.
El “L”, “J”, y “T” piezas tienen cada uno cuatro posibles orientaciones, y estas orientaciones son el resultado de las rotaciones simples puntos sobre el centro en las formas.
Cuando una pieza aparece por primera vez en el tablero, la pieza tiene su “eje mayor” en una orientación horizontal, y la pieza es en la parte superior del tablero.
Por lo tanto, no son piezas inicialmente capaz de haber cambiado sus orientaciones.  La pieza debe descender por una fila para tener la posibilidad de haber cambiado su orientación.
Una vez que una pieza se ha reducido de una fila en el tablero, todas las orientaciones pieza se puede alcanzar (suponiendo que la pieza no está demasiado cerca de las paredes laterales o al actual montón de piezas).

5.4 Norma Tetris diagrama de flujo

El siguiente es un diagrama de flujo aproximado de una norma Tetris juego.
standard_tetris_flowchart_for_timer_event_001.gif
Diagrama de flujo aproximado de una norma Tetris juego
standard_tetris_flowchart_for_input_events_001.gif
Diagrama de flujo aproximado de una norma Tetris juego

5.5 Norma Tetris pieza creación

El siguiente diagrama muestra la (4 * 2 celular móvil) región en el tablero todas las piezas que aparecen cuando creada.
tetris_diagram_board_10x20_spawn_area.jpg
Región en la que las piezas aparecen cuando creada en la Norma Tetris
Cuando una nueva pieza aparece por primera vez en el tablero, su origen coincide con el punto en este diagrama, y la pieza será completamente contenida por el área sombreada en este diagrama.
Cuando un nuevo juego se inicia, una plena caída libre transcurre demora, y en la primera caída libre iteración un pedazo es generado en la parte superior del tablero.
En condiciones normales de juego, cuando una caída libre de “tierras” iteración un pedazo, una plena caída libre y demora transcurre en la próxima caída libre de un pedazo de iteración es generado en la parte superior del tablero.
Cuando una pieza es engendrado, del tipo de pieza se selecciona mediante el siguiente algoritmo:
pieceIndex = 1 + (randomInteger % 7);  // 1..7
Porque hay una constante p (= 1/7) oportunidad de seleccionar un tipo específico de la pieza, y todas las piezas del mismo tipo son indistinguibles, la probabilidad de tener exactamente k piezas de un tipo específico después de los ensayos n sigue una distribución binomial:
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 )
Cuando se elige de entre los 7 (siete) piezas al azar, la probabilidad de obtener una determinada pieza es p=(1/7).
Si hacemos esto n=70 veces, por ejemplo, la probabilidad de obtener exactamente k piezas (con k en el rango 0 a n) está dado por la distribución binomial, tal y como se muestra en la siguiente imagen.
binomial_distribution_n70_p7th.jpg
Distribución binomial para n=70, p=(1/7)
De este modo, se puede predecir el promedio total de piezas de un solo tipo dado un número total de piezas al azar, y también se puede calcular la diferencia esperada y desviación estándar (raíz cuadrada de la varianza):
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
Cuando convertimos un valor aleatorio a una pieza índice, que lo interpretan como sigue:
value  piece
=====  =====
  1     "O"
  2     "I"
  3     "S"
  4     "Z"
  5     "L"
  6     "J"
  7     "T"
[El pre-comercial MS-DOS versión de Tetris utiliza la función de números aleatorios ofrecido por el Borland Pascal compilador.
Esta función utiliza una de 32 bits variable de estado.
Por lo tanto, la secuencia de números aleatorios se limitó a 2^32 distintos valores.
Por lo tanto, en principio, un jugador puede descubrir, después de caer tal vez 10 piezas, el lugar exacto en el conjunto de 2^32 números correspondientes al estado actual del juego.
Si Tetris simulaciones se ejecutan con la secuencia fija de 2^32 piezas, entonces decisiones óptimas se puede encontrar para cada lugar en la secuencia.
(Al parecer hay suficientes oportunidades para que la junta directiva a una junta totalmente vacía estado, lo que nos permite obtener sincronizado con la solución óptima precomputed camino.)
El riesgo de utilizar un simple generador de números aleatorios en una simulación destinada a encontrar una solución óptima a un problema es que la solución sea óptima sólo para el particular ruta por el problema de espacio seleccionado por el simple generador de números aleatorios.  ]

5.6 Norma Tetris controles

Durante el juego, los siguientes insumos están disponibles:
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
Todas las entradas en vigor el aumento de punta de los aspectos positivos de entrada (pulse sobre el botón, a diferencia de botón de liberación).
Cuando pulse un botón se produce, este cuenta como una solicitud.
La celebración de un botón abajo más allá de un determinado periodo de tiempo podría dar lugar a la “auto-repetición” característica de un teclado, la generación de nuevas presionar un botón -, pero esta característica es externo al juego motor.
Las entradas se establece más arriba se ajustan a la original Tetris.
Rotar las solicitudes se pueden ejecutar si no hay coincidencia entre la orientación deseada y establecer células en la actual junta (con exclusión de la caída de pieza), y si la orientación deseada no ha establecido las células fuera del tablero.
Traducir las solicitudes se pueden ejecutar si no hay coincidencia entre la configuración deseada traducido y establecer células en la actual junta (con exclusión de la caída de pieza), y si la configuración deseada traducido no ha establecido las células fuera del tablero.
Entrada solicitudes se procesan con una latencia que depende de la velocidad de cuadro de juego (por ejemplo: 75 Hz), y pide a surtir efecto (si es válido) al instante.
Una pieza puede ser disminuido sin ningún tipo de línea de caída se producen pasos.
Una pieza puede ser traducido en varias ocasiones a la izquierda oa la derecha, y posteriormente descendió, todos sin experimentar una caída de la línea oficial de paso.
Debido a generado una nueva pieza no puede ser rotado (porque se ha quedado atascado contra el borde superior de la placa), el jugador debe aceptar al menos una pieza caída de paso si las rotaciones son conveniente o necesario.
El efecto sobre la puntuación es insignificante.

5.7 Norma Tetris pieza “de aterrizaje”

Si una pieza es más que caer, cae de una sola fila en cada pieza caída de iteración.
Se llevará a cabo una iteración que se mueve desde un lugar sin contacto con las superficies horizontales a un lugar que tiene contacto con las superficies horizontales.  Una vez que esto ocurre iteraciones, las piezas son de descanso en contacto.
Si una iteración comienza con una pieza de descanso en contacto con una superficie horizontal, la pieza “tierras,” y se convierte en parte de la estática de pilotes.

5.8 Norma Tetris “líneas terminado”

Una fila se completó una fila de la pila en la que todas las celdas están ocupadas.  Cuando un componente se elimina la fila de la pila, y las filas por encima de la fila eliminada se desplaza hacia abajo por una fila para eliminar la brecha, esta cuenta como una “línea de” terminado.
Cuando un pedazo de tierras se convierte en parte del montón.
Inmediatamente después de la pieza tierras, la pila está marcada por terminado filas, y todo terminó, se eliminan las filas.
Hasta cuatro líneas se puede hacer a la vez.
En el cuadro siguiente se da el límite superior en las líneas por terminado al mismo tiempo una sola pieza:
piece   max. simultaneous
         rows completed
=====   ==================
 "O"           2
 "I"           4
 "S"           2
 "Z"           2
 "L"           3
 "J"           3
 "T"           2

5.9 Norma Tetris “niveles”

Norma Tetris tiene 10 niveles de dificultad, que llevan los números 1 (uno) a través de 10 (diez), con nivel 1 ser el “menos difícil.”
El nivel es el índice máximo de dos valores:
actualLevel = max( initialLevel, earnedLevel );
El initialLevel valor es el nivel que el jugador selecciona al iniciar un nuevo juego.
El patrón de nivel en función de líneas terminado es fácilmente observado en el pre-comerciales MS-DOS versión de 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
De este modo, el earnedLevel valor se calcula de acuerdo con el siguiente algoritmo:
if (linesCompleted <= 0)
{
  earnedLevel = 1;
}
else if ((linesCompleted >= 1) && (linesCompleted <= 90))
{
  earnedLevel = 1 + ((linesCompleted - 1) / 10);
}
else if (linesCompleted >= 91)
{
  earnedLevel = 10;
}

5.10 Norma Tetris caída de iteración demora

Norma tiene un Tetris en tiempo real de demora entre los sucesivos línea de caída libre de iteraciones que es una función del actual nivel de dificultad.
La siguiente relación entre el nivel del índice y la caída de iteración demora se basa en mediciones repetidas cronómetro en todos los niveles de la pre-comerciales MS-DOS versión de 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
Por lo tanto, establecemos la siguiente fórmula para la iteración demora valor en función del nivel real índice:
iterationDelay = ((11 - actualLevel) * 0.05);  // [seconds]
Si la junta está vacía, y no hay entrada del usuario, una pieza generado a nivel real 1 tierras en aproximadamente 10 segundos, y una pieza generado a nivel real 10 tierras en aproximadamente 1 segundo.

5.11 Norma Tetris “Resultado”

Norma Tetris sólo concede puntos para el acto de una pieza de aterrizaje.
No hay puntos adjudicados para el acto de completar una sola línea, o para completar dos, tres o cuatro líneas simultáneamente.
[Nota: algunas variantes de Tetris adjudicación de puntos para el acto de completar líneas, con un aumento exponencial de bonificación para un número cada vez mayor de líneas simultáneamente terminado.
Por lo tanto, la estrategia de maximización de Resultado en tales variantes de Tetris lleva consigo la creación de oportunidades para “obtener un Tetris,” argot para el uso de la “I” forma a obtener cuatro líneas simultáneamente y obtener un montón de puntos.  ]
Si usted tiene un tablero vacío, y le permite a un no-“I” hacer una pieza caída libre y la tierra, o si una gota de inmediato no “I” pieza, puede establecer el punto siguiente gráfico usando el pre-comerciales MS-DOS versión de 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, no “I” piezas caen un total de 18 filas.
Esto explica la diferencia entre el punto de caída libre y al instante de que retiraran los cargos.
Al experimentar con casos intermedios, es fácil deducir el punto siguiente fórmula:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
Tenga en cuenta que esta fórmula no tiene nada que ver con la distancia un pedazo cae!
Es estrictamente una función de el nivel real, y una pena para el número de iteraciones un pedazo se le permite caer libremente.
Este castiga a un usuario para que necesitan tiempo para pensar.
También tenga en cuenta que, debido a que una pieza no puede inicialmente ser rotado en sus desoves, un jugador es castigado con pena de al menos una caída libre de iteración si las rotaciones son necesarias para colocar una pieza en la pila.
Esto pro