Tetris
Colin Fahey
1. Software
StandardTetris_2007June4.zip
Tetris-Source-Code (C# und C++ Versionen) und Programm („exe“);
4068277 bytes
MD5: 4e957e0ead66064183e9f7e04e618ec0
2. Einleitung
Dieser Artikel beschreibt, wie ein Computer spielen können, das klassische Videospiel Tetris von Informationen über den Vorstand, die Festlegung gute Aktionen, und die Durchführung dieser Maßnahmen.
Dieser Artikel enthält Software der Lage, Tetris spielen in Echtzeit.
Die Software beinhaltet unter anderem den besten Echtzeit-Tetris-Spielen Algorithmus für die Öffentlichkeit zugänglich.
Dieser Artikel legt Regeln für „Standard-Tetris,“ eine Spezifikation basiert auf dem ursprünglichen 1986 pre-kommerzielle Version von Tetris für den heimischen Computer (PC).
In 2003, die Software in diesem Artikel wurde benutzt, um einen Computer zu spielen Tetris läuft auf einem separaten Computer.
Ein gewöhnlicher USB Videokamera verwendet wurde, um den Computer, um zu „sehen,“ den Bildschirm des anderen Computers.
Ein Relais-Platine wurde über ein RS-232 Schnittstelle zu ermöglichen, den Computer zu „drücken Tasten“ auf der Tastatur des anderen Computers.
So, die ersten Computer hat eine Beziehung zu dem zweiten Computer, der ähnlich wie bei einem typischen menschlichen Spieler die Beziehung zu einem Computer beim Abspielen von Tetris, das Spiel Staat ist nur bekannt, indem Sie auf dem Bildschirm, Spieler und Aktionen können nur begonnen werden, über eine Tastatur .
Die Konfiguration in dieser Demonstration fest, dass ein Computer spielen können, Tetris besser als ein Mensch, unter normalen Echtzeit-Tetris spielen.
3. Die Geschichte von Tetris
In 1985, Alexey Pajitnov und Dmitry Pavlovsky wurden Computer-Ingenieure auf die Computing Center of the Russian Academy of Sciences.

Dorodnicyn Computing Centre der Russian Academy of Sciences
Alexey und Dmitry daran interessiert waren, in Entwicklungs-und Verkauf von Computerspielen süchtig.
Sie testeten mehrere verschiedene Spiele.
Alexey wurde inspiriert durch die antike griechische Puzzlespielspiel, Pentaminos, der Vermittlung beteiligt Puzzleteile aus fünf Plätzen.
Alexey dachte an die Idee der Vermittlung Pentamino Stücke, wie sie fielen sich in einem rechteckigen Tasse, aber realisiert, dass die zwölf verschiedenen Fünf-Quadrat Formen waren zu komplex für ein Videospiel.
Alexey auf „tetramino“ mit sieben Stücken, die jeweils aus vier Quadraten.
In 1985.6, Alexey Pajitnov programmierte die erste Version von Tetris auf einem Electronica 60.

Dmitry Pavlovsky, Alexey Pajitnov, und Tetris.
In 1985-1986, Vadim Gerasimov, eine 16-jährige High-School-Computer-Wunderkind, arbeitete an der Akademie, umgesetzt Tetris für den IBM PC laufen MS-DOS Betriebssystem.
(Vadim Gerasimov später hat die Forschung auf die MIT Media Laboratory, von 1994 bis 2003, einen Doktortitel erhalten nach Abschluss viele interessante Projekte:
http://vadim.www.media.mit.edu)

Die Einführung Bildschirm des 1987-1988 pre-kommerzielle Freisetzung von Tetris für den PC

Das Spiel spielen Bildschirm des 1987-1988 pre-kommerzielle Freisetzung von Tetris für den PC
Nach 1987, Tetris Ausbreitung rund um den Globus.
The Tetris Company, LLC, Eigentümer der Marke Tetris.
4. Projekte inspiriert von Tetris
4.1 0-dimensionale Tetris
Noch nicht entwickelt.
4.2 1-dimensionale Tetris
Ziga Hajdukovic entwickelt hat 1-dimensionale Tetris-Software, die gespielt werden können in einem Internet-Browser.
Ziga Hajdukovic hat auch 1-dimensionale Tetris-Software für Mobiltelefone mit dem Java J2ME Plattform.
4.3 2-dimensionale Tetris
Alle herkömmlichen Tetris-Varianten sind in dieser Kategorie.
Dieser Abschnitt umfasst interessante Varianten.
4.3.1 Größte Tetris-Spiel aller Zeiten: Delft University of Technology (1995)

Tetris spielte in einem Gebäude; 2000 m^2 Fläche; Delft University of Technology (1995)

Tetris spielte in einem Gebäude; 2000 m^2 Fläche; Delft University of Technology (1995)
4.3.2 Ein weiteres Tetris Spiel in einem Gebäude: Brown University (2000)

Tetris Spiel angezeigt mit Lichter in den Fenstern eines Gebäudes in Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
„Ich glaube, es war nur die unglaublichsten Ein-Tages-Ding Ich könnte mir vorstellen, in meinem Leben. Wie Steve Jobs immer gesagt, die Fahrt ist der Lohn.“
„Es machte mich der Meinung von Projekten haben wir im College zurück. Dinge, die waren fast rückgängig gemacht, dass andere Menschen nicht denken tun.“
Steve Wozniak (2000)
4.3.3 Internet-Browser-Spiel mit MIT „Green Building“ Bild

Vadim Gerisimov's Internet-Browser Tetris
Diese Internet-Browser Tetris-Variante wurde entwickelt durch Vadim Gerasimov.
Diese Internet-Browser Tetris Funktionen der „Green“ Gebäude auf dem Campus der MIT.
Diese Tetris-Variante hat nur neun Spalten statt der Standard aus zehn Spalten zusammen.
Diese Tetris-Variante präsentiert neue Stücke mit zufälligen Orientierungen.
Vadim Gerasimov ist die Person, schrieb der Computer-Code für die PC Version von Tetris in 1986.
Vadim Gerasimov hat Ph.D. Forschung an den MIT Media Laboratory bei 1994-2003, arbeitet an vielen interessanten Projekten.
4.3.4 PIC16F84 12 MHz Mikrocontroller-basierten NTSC / PAL Video-Tetris-Spiel

PIC16F84 12 MHz Mikrocontroller-basierten NTSC / PAL Video-Tetris-Spiel
Das Bild oben zeigt die NTSC / PAL Video-Ausgang von einem PIC16F84 12 MHz Mikrocontroller laufende Software, die von Rickard Gunee in 1998.
Die Video-Signal wird generiert durch Software-Steuerung der digitalen Ausgänge.
4.3.5 „Scopetris“ Oszilloskop Tetris von Lars Pontoppidan (2007.8)

„Scopetris“ Oszilloskop Tetris von Lars Pontoppidan (2007.8)
Lars Pontoppidan schrieb Code für die AtMega32 Mikrocontroller, und fügte hinzu, einfache analoge Schaltungen, um eine Tetris Version werden könnten, gespielt auf einem Oszilloskop.
Bestimmte Register der Kontrolle AtMega32 Microcontroller 8-Bit-Output-Signale und, wenn durch ein „R-2R“ elektrischen Widerstand Schaltung für Digital-Analog-(D/A) Umwandlung, die sich daraus ergebende analoge Signale können die Koordinaten des (x,y) ein Oszilloskop Strahl (wenn das Oszilloskop ist auf „X-Y-Modus).“
YouTube Video:
FLV Video:
4.3.6 Obfuscated Code Tetris: C / Unix
Die folgenden erhielt „1989 IOCCC Best Game“.
long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K
=0,i=276,j,k,q[276],Q[276],*n=q,*m,x=17,f[]={7,-13,-12,1,8,-11,-12,-1,9,-1,1,
12,3,-13,-12,-1,12,-1,11,1,15,-1,13,1,18,-1,1,2,0,-12,-1,11,1,-12,1,13,10,-12,
1,12,11,-12,-1,1,2,-12,-1,12,13,-12,12,13,14,-11,-1,1,4,-13,-12,12,16,-11,-12,
12,17,-13,1,-1,5,-12,12,11,6,-12,12,24};u(){for(i=11;++i<264;)if((k=q[i])-Q[i]
){Q[i]=k;if(i-++I||i%12<1)printf("\033[%d;%dH",(I=i)/12,i%12*2+28);printf(
"\033[%dm "+(K-k?0:5),k);K=k;}Q[263]=c=getchar();}G(b){for(i=4;i--;)if(q[i?b+
n[i]:b])return 0;return 1;}g(b){for(i=4;i--;q[i?x+n[i]:x]=b);}main(C,V,a)char*
*V,*a;{h[3]=1000000/(l=C>1?atoi(V[1]):2);for(a=C>2?V[2]:"jkl pq";i;i--)*n++=i<
25||i%12<2?7:0;srand(getpid());system("stty cbreak -echo stop u");sigvec(14,v,
0);t();puts("\033[H\033[J");for(n=f+rand()%7*4;;g(7),u(),g(0)){if(c<0){if(G(x+
12))x+=12;else{g(7);++w;for(j=0;j<252;j=12*(j/12+1))for(;q[++j];)if(j%12==10){
for(;j%12;q[j--]=0);u();for(;--j;q[j+12]=q[j]);u();}n=f+rand()%7*4;G(x=17)||(c
=a[5]);}}if(c==*a)G(--x)||++x;if(c==a[1])n=f+4**(m=n),G(x)||(n=m);if(c==a[2])G
(++x)||--x;if(c==a[3])for(;G(x+12);++w)x+=12;if(c==a[4]||c==a[5]){s=sigblock(
8192);printf("\033[H\033[J\033[0m%d\n",w);if(c==a[5])break;for(j=264;j--;Q[j]=
0);while(getchar()-a[4]);puts("\033[H\033[J\033[7m");sigsetmask(s);}}d=popen(
"stty -cbreak echo stop \023;sort -mnr -o HI - HI;cat HI","w");fprintf(d,
"%4d from level %1d by %s\n",w,l,getlogin());pclose(d);}
4.3.7 Obfuscated Code Tetris: Perl Code
Der folgende Text ist Tetris für den Perl Dolmetscher: Perltris (Version 20050717) von 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) ist ein Standard zur Beschreibung von grafischen Objekten mit XML.

Mozilla SVG Tetris: Tetris umgesetzt mit einer Beschreibung Scalable Vector Graphics (SVG)
4.3.9 Google „widget“ Tetris
Google, Yahoo! und Microsoft, und andere Unternehmen, haben die Mini-Internet-basierte Software namens „widgets“ das sind in der Regel zeichnen sich durch einige Verwendung von dynamischen Daten über das Internet verfügbar.
Eine solche widget über Google ist ein Tetris-Spiel.
Das folgende Beispiel ist niedlich, aber die Formen drehen auf lästige Wege:

Google „widget“ Tetris
Andere Google widgets:
4.3.10 MIT Forschung Papier: „Tetris is Hard, Even to Approximate“ (2002)
Die folgenden Forschungs-Dokument enthält ein Beweis dafür, dass eine bestimmte Art von Tetris-Variante ist „NP-abgeschlossen.“
Erik D. Demaine, Susan Hohenberger und David Liben-Nowell, „Tetris is Hard, Even to Approximate“, Technical Report MIT-LCS-TR-865, Massachusetts Institute of Technology, 2002.10.21.
„NP-Complete“ ist eine Klassifizierung der Kosten Zeit und Raum Kosten eines Algorithmus.
Andere Klassifikationen umfassen „P“ und „NP“.
Eine Einteilung der „NP-Komplett“ bedeutet, dass für die Probleme größer als einige kleine Größe, den Algorithmus ist unwahrscheinlich, dass eine gewünschte Lösung in einem praktischen Höhe der Zeit und Raum.
4.3.11 Forschung Dokuments: „Applying reinforcement learning to Tetris“
Die folgenden Papier, 2005.5.30 veröffentlichte, von Donald Carr am Department of Computer Science in Rhodes University, Südafrika, präsentiert die Anwendung von „Reinforcement Learning“ an Tetris.
4.3.12 Tetris Rock (2007.11)

Tetris Rock (2007.11)
Die Tetris Rock wurde entwickelt durch „Lucy“ („hissyfitoly“ in etsy.com), bevor 2007.11.
Aus der Schöpfer der Beschreibung der Rock (zum Verkauf angeboten in 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 Kommentare zu diesem Rock:
„Man saugt das Rock in Tetris“
„Ahahahaha, dachte ich dasselbe.“
„Es gibt eine komplette Zeile nach unten auf den Boden ... ausgefüllte Linien verschwinden.“ „SIE ÜBER“ „.“
„Es sollte ein Platz in der Vorder-oder Rückseite, wo langes Stück passen würde perfekt ...“
„Das ist eine wirklich hässliche Rock though. Mein Freund kann mich nicht kaufen genug Schokolade und Blumen zu überzeugen, mich zu tragen, dass die Sache.“
4.3.13 Tetris Bühne agieren (2007.4)

Tetris Bühne agieren (2007.4)
„Von denen, die dir die Triforce in 2006 ... Kommt die nächste Generation der unbelebten Objekt skit ... Tetris.“
Lokal zwischengespeichert Video in Flash Video (FLV) Format (benutze VLC zu spielen):
4.3.14 Hilarious Tetris Variationen über ein japanisches TV-Show

Tetris Variationen über japanische Fernseh-Show
Dieses Video-Segment von einem japanischen TV-Show umfasst hilarious Varianten von Tetris, unter anderem:
Stücke, die verschwinden nach der Landung ein Stück, füllt eine ganze Reihe (womit eine Zeile nach der Landung), mehrere Stücke gleichzeitig fallen, unregelmäßig geformte Stücke, ein langes Stück, die etwas zu weit, sich in eine Lücke (Verhinderung einer 4-reihig Abschluss!), Mario Schlagen ein Pilz und immer enorm und sterben!, kleines Stück Trümmer, die nach Zeilen werden zerstört, die Schwerkraft nach oben zu schweben Stück nach oben, usw.
Lokal zwischengespeichert Video in Flash Video (FLV) Format (benutze VLC zu spielen):
4.3.15 „The Original Human TETRIS Performance by Guillaume Reymond“ (2007.11)

„The Original Human TETRIS Performance by Guillaume Reymond“ (2007.11)
Aus der Beschreibung auf YouTube:
„TETRIS gespielt von realen menschlichen Wesen-Sitzung in einem Auditorium:“
TETRIS ist der 4. Video-Performance der GAME OVER Project, geleitet von dem Schweizer Künstler Guillaume REYMOND (NOTsoNOISY Kreativ-Agentur).
Diese Stop-Motion-Video wurde gedreht und spielte für „LES URBAINES“ Festival
http://www.urbaines.ch im Palais de Rumine (Lausanne, Schweiz) auf November 24th 2007.
Lokal zwischengespeichert Video in Flash Video (FLV) Format (benutze VLC zu spielen):
4.3.16 2,5-dimensionale Tetris
Der Begriff „2,5-dimensional“ ist hier im Sinne einer nicht-orthogonale Hinblick auf eine zweidimensionale Version von Tetris, mit einigen Dicke in der dritten Dimension.
(Finden Sie den Link „tetris3d“ in „F7: GAMES“.)
4.4 3-dimensionale Tetris

Linux / GTK Version
Dreidimensionale Tetris in Form einer Java-Applet für den Internet-Browser:
Dreidimensionale Tetris für den Windows Betriebssystem:
4.5 4-dimensionale Tetris

Greg Kaiser's „HyperTetris“ (1996): ein 4-dimensionale Tetris
In [1996], [...], Greg Kaiser zusammengenommen ein Vier-dimensionalen Variante auf dem klassischen Spiel.
Verwenden IrisGL (a.k.a. igl) schuf er eine Arbeitsgruppe, wenn schwer zu spielen, Spiel mit vier Unter-Bildschirmen zu zeigen verschiedene dreidimensionale Aspekte der gesamten Spiel-Raum.
[Weil] es ist nicht leicht [verständlich] Art und Weise zu ziehen Vier-D-Objekte in einer Zwei-D-Bildschirm, die vier Sub-Ansichten sind eine praktische Methode zu manipulieren und zu visualisieren die Drehung und Übersetzung der Stücke durch die vier Dimensionen ( im Spiel namens x,y,z,w).
Anstatt die Vollendung von Blöcken Zeilen wie im Original, das Ziel ist in diesem Fall füllen einen kompletten Würfel in der x,y,z subview (in der Regel 4 von 4 von 4).
Die anderen subviews, die die „w“ Dimension sind in eine Standard-4 von 4 von 10 Block Absprache mit „w“ gegen den langen, „vertical“ Dimension in allen drei Fällen mit unterschiedlichen Grundlagen der (x,y), (x,z), (y,z).
Gravity Handlungen in der „-w“ Richtung, so dass Teile „herunterfallen“ in den drei langen subviews, die „w“, und nicht bewegen, es sei denn, durch die Spieler in den letzten (x,y,z) subview.
Es dauert eine Weile gewöhnen, gelinde gesagt.
Wenn durch ein Wunder der Geduld oder eine Veränderung der Parameter des Spiels, man tut, ein Würfel, sie werden verschwinden, wenn die das ausgefüllte Linien tun in der ursprünglichen Tetris, obwohl keine der Gäste wird in HyperTetris.
Benjamin Bernard (2000)
4.6 N-dimensionale Tetris

Polytope Tetris (2003): ein N-dimensionale Spiel Tetris-Variante
Polytope Tetris ist n-dimensional Tetris.
Inspiriert durch die HyperTetris Programm, ermöglicht es Ihnen Polytope Tetris Tonnen Tetris spielen in irgendeiner ZAHL DER Dimension.
Tetris spielen in 3D, 4D, 5D, oder mehr.
HyperTetris ist ein viel catchier Name als Polytope (def) Tetris, aber ich kann nicht stehlen den Namen.
5. „Standard Tetris“ Spezifikation
5.1 Einleitung
Die Definition von „Standard-Tetris“ ist ein idealisiertes Modell der wichtigsten Merkmale und Verhaltensweisen der ersten IBM-PC Umsetzung des Tetris-Spiel (ca. 1986-1988).
Die idealisierten Modell basiert auf inferring die scheinbare Absicht der Entwickler des ersten IBM-PC Umsetzung des Tetris-Spiel.
Beispielsweise scheint es vernünftig zu folgern, dass die Entwickler der ersten IBM-PC Umsetzung des Tetris-Spiel dient zur Auswahl der Form von jedem neuen Stück „zufällig“ fallen, und dass die Verwendung des Borland C Umsetzung der rand() Funktion war lediglich eine praktische Annäherung der die Absicht.
Die Definition von „Standard-Tetris“ legt fest, dass die Form von jedem neuen Stück fallen wird „zufällig“ ausgewählt.
Dieses ideale Verhalten kann nicht erreicht werden durch eine Umsetzung, aber Implementierungen können Angleichung der ideale Verhalten.
Obwohl keine Umsetzung kann durchaus Umsetzung der Definition von „Standard-Tetris,“ die Ideale der „Norm Tetris“ mit objektiven Merkmale und Implementierungen verglichen werden können entsprechend ihrer relativen Nähe zu den Idealen der „Norm Tetris.“
Dieser Abschnitt beschreibt eine Reihe von Elementen, Verhaltensweisen und Regeln, die gemeinsam definieren „Standard Tetris.“
5.2 Standard Tetris Bord
Die Platine ist ein Raster von Zellen, mit 10 Spalten und 20 Zeilen, mit einem Gesamtvolumen von 10 * 20 = 200 Zellen.

Tetris Standard Board (10 Spalten, 20 Zeilen)
Jede Zelle kann entweder unbesetzt (leer) oder besetzt (voll).
5.3 Standard Tetris Stücke
Es gibt sieben Tetris (7) Standard-Stück, mit folgendem Schreiben Namen:
{ O, I, S, Z, L, J, T }
Das Schreiben Namen sind inspiriert von den Formen der Stücke.

Die sieben Tetris Standard-Stücke und ihre „Ausrichtung“
Der Punkt in (0,0) fällt mit Bord Position (6,20), wenn das Stück den ersten Blick scheinen mag.
Die erste Spalte zeigt die „ersten“ Einschätzungen.
Im folgenden wird das Wort „Orientierung“ dient zur Beschreibung von jedem Staat ein Stück, in einer Reihe von Staaten erlaubt, das kann dazu führen, von einer Rotation entgegen dem Ereignis.
Ändern der „Ausrichtung“ von einer bestimmten „Ausrichtung“ eines „I, S“ oder „Z“ Stück, erfordert die Kombination aus einer Rotation und einer Übersetzung.
Daher ist das Wort „Orientierung“ ist hier im Sinne von etwas mehr als Rotation allein.
Allerdings, „Orientierung“ ändern kann nur in Reaktion auf eine Rotation entgegen dem Ereignis, und der Zyklus beginnt von unterschiedlichen „Orientierungen“ für jedes Stück kommt, oder Streichhölzer, den Zyklus aus reinen Rotationen.
Die besondere Verwendung des Wortes „Orientierung“ in diesem Zusammenhang ist fast gleichbedeutend mit der Bedeutung des Wortes „Dreh-oder Winkel,“ aber das Wort „Orientierung“ dient anstelle der „Rotation“ zu versuchen, um die Aufmerksamkeit auf die Tatsache, dass einige Stücke erfordern mehr als die Rotation um die Reihe von Staaten erlaubt die sich aus Veranstaltungen „Rotation“ entgegen dem Uhrzeigersinn.
Teile können nur Orientierungen Schalter (oder an einem bestimmten horizontalen oder vertikalen Übersetzung), wenn die sich ergebende Zustand der das Stück hätte keine besetzten (ganze) Zellen außerhalb des Gebiets des Vorstands und hätte keine besetzten Zellen, die sich derzeit alle besetzten Zellen des Vorstandes.
(In dieser Regel, den besetzten (ganze) Zellen des Stückes sind nicht als Teil der „derzeit besetzten Zellen des Vorstands“
In den folgenden Bemerkungen, jede Bezugnahme auf das Ergebnis einer Rotation entgegen dem Wettkampf wird mit der Annahme, dass eine solche Rotation kann tatsächlich durchgeführt werden, da die bestehenden Bedingungen des Stückes und das Brett.
Die „O“ (box) Stück hat nur eine einzige Ausrichtung, und ändert nichts an den Standorten eines seiner besetzten (voll) Zellen in Reaktion auf eine Rotation entgegen dem Ereignis.
Die „I“ (Linie) Stück hat zwei mögliche Ausrichtungen, zunächst in eine horizontale Ausrichtung.
Die „I“ Stück wechselt zwischen den beiden Orientierungen als Reaktion auf Rotation entgegen dem Uhrzeigersinn aufeinanderfolgenden Veranstaltungen.
Die „S“ und „Z“ Stücke jeweils über zwei mögliche Orientierungen.
Diese Stücke wechseln sich jeweils zwischen zwei Orientierungen als Reaktion auf Rotation entgegen dem Uhrzeigersinn aufeinanderfolgenden Veranstaltungen.
Die „L“, „J“ und „T“ Stücke jeweils über vier möglichen Orientierungen, und diese Leitlinien sind die Ergebnisse von einfachen Drehungen um Punkte-Center in die Formen.
Wenn ein Stück nach der Installation auf dem Brett, das Stück hat seinen „großen Achse“ in eine horizontale Ausrichtung, und das Stück ist auf der Oberseite des Brettes.
Es wird daher keine Stücke werden zunächst der Lage, die ihren Leitlinien verändert. Das Stück muss Abstieg durch eine Zeile haben die Möglichkeit, ihre Ausrichtung ändern.
Sobald ein Stück zurückgegangen ist durch eine Zeile auf dem Brett, alle Stück Leitlinien erreicht werden kann (vorausgesetzt, das Stück ist nicht zu nah an den Seitenwänden oder an der aktuellen Haufen Stück).
5.4 Standard Tetris Flussdiagramm
Im Folgenden finden Sie eine ungefähre Flussdiagramm für ein Standard-Tetris Spiel.

Voraussichtliche Flussdiagramm für ein Standard-Tetris Spiel

Voraussichtliche Flussdiagramm für ein Standard-Tetris Spiel
5.5 Standard Tetris Stück Schöpfung
Die folgende Abbildung zeigt die (4 * 2 Zelle Zelle) Region auf dem Brett, in dem alle Stücke angezeigt, wenn erstellt.

Region, in Stücke angezeigt werden, wenn im Standard Tetris
Wenn ein neues Stück nach der Installation auf dem Brett, seinen Ursprung fällt mit dem Punkt in diesem Diagramm, und das Stück wird vollständig durch den schattigen Bereich auf dieser Abbildung.
Wenn ein neues Spiel gestartet wird, eine vollständige freien Fall Verzögerung abgelaufen ist, und auf der ersten freien Fall Iteration ein Stück ist, brachte in die Oberseite des Brettes.
Während des normalen Spiel spielen, wann ein bestimmtes freien Fall Iteration ein Stück „Land,“ eine vollständige freien Fall Verzögerung abgelaufen ist und auf der nächsten freien Fall Iteration ein Stück ist, brachte in die Oberseite des Brettes.
Wann ist ein Stück hervorgebracht, die Art von Stück ausgewählt ist mit dem folgenden Algorithmus:
pieceIndex = 1 + (randomInteger % 7); // 1..7
Denn es ist ein konstanter p (= 1/7) Chance der Auswahl einer bestimmten Art von Stück, und alle Stücke des gleichen Typs werden nicht unterschieden, die Wahrscheinlichkeit, dass genau k Stücke eines bestimmten Typs nach n Studien folgt eine Binomialverteilung:
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 )
Wenn wir wählen aus dem Kreis der 7 (sieben) Stück nach dem Zufallsprinzip, liegt die Wahrscheinlichkeit, daß sich ein bestimmtes Stück ist p=(1/7).
Wenn wir dies tun n=70 mal, zum Beispiel die Wahrscheinlichkeit, sich genau k Stücke (mit k im Bereich 0 zu n) ist gegeben durch die Binomialverteilung, wie im folgenden Bild.

Binomialverteilung für n=70, p=(1/7)
So kann man vorhersagen, die durchschnittlichen Gesamtkosten Stücke von einer einzigen Art eine Gesamtzahl von zufälligen Stück, und man kann auch die Berechnung der zu erwartenden Varianz und Standardabweichung (Quadratwurzel der Varianz):
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
Wenn wir konvertieren einem zufälligen Wert zu einem Stück Inhalt, wir interpretieren sie wie folgt:
value piece
===== =====
1 "O"
2 "I"
3 "S"
4 "Z"
5 "L"
6 "J"
7 "T"
[Die vor-kommerziellen MS-DOS Version von Tetris verwendet die Zufallszahl-Funktion bietet die Borland Pascal Compiler.
Diese Funktion verwendet eine 32-Bit-Status-Variable.
Daher ist die Folge von Zufallszahlen beschränkte sich auf 2^32 unterschiedliche Werte.
Daher ist im Prinzip ein Spieler könnte entdecken, nach Fallenlassen vielleicht 10 Stücke, die genaue Stelle in einer Reihe von 2^32 Zahlen entsprechen dem derzeitigen Stand des Spiels.
Wenn Tetris Simulationen ausgeführt werden mit der festen Abfolge von 2^32 Stücke, dann optimale Entscheidungen finden Sie für jeden Platz in der Sequenz.
(Es scheint ausreichend zu sein Chancen zu verwirklichen, die an Bord einer völlig leeren Zustand Bord, das uns erlaubt, synchronisiert mit dem precomputed optimale Lösung Pfad.)
Die Gefahr der Verwendung einer einfachen Zufallszahlengenerator in eine Simulation zu finden, eine optimale Lösung für ein Problem ist, dass die Lösung optimal nur für den jeweiligen Weg durch das Problem Raum von der einfachen Zufallszahlengenerator. ]
5.6 Standard Tetris Kontrollen
Während des Spiels werden die folgenden Eingänge stehen zur Verfügung:
left : request to translate left by one column
right : request to translate right by one column
rotate : request to do a counterclockwise rotation
drop : request to instantly drop the piece
Alle Eingänge nehmen Einfluss auf die steigende Kante der positiven Eingang (auf den Knopf drücken, im Gegensatz zu Button release).
Wenn eine Taste drücken auftritt, gilt dies als Antrag.
Holding eine Taste nach unten ab einem bestimmten Zeitpunkt könnte dazu führen, dass die „auto-repeat“ Merkmal einer Tastatur, neue Schaltfläche Pressen - aber diese Funktion ist außerhalb der Game-Engine.
Die Eingänge oben mit dem ursprünglichen Spiel Tetris.
Drehen Anfragen ausgeführt werden können, wenn es keine Überschneidungen zwischen der gewünschten Ausrichtung und Zellen auf dem aktuellen Board (mit Ausnahme der sinkenden Stück), und wenn die gewünschte Ausrichtung hat keine festgelegten Zellen außerhalb der Platine.
Übersetzen Anfragen ausgeführt werden können, wenn es keine Überschneidungen zwischen der gewünschten Konfiguration übersetzt und Zellen auf dem aktuellen Board (mit Ausnahme der sinkenden Stück), und wenn die gewünschte Konfiguration übersetzt hat keine festgelegten Zellen außerhalb der Platine.
Input-Anfragen werden verarbeitet mit einer Latenz hängt davon ab, dass die Framerate des Spiels (Beispiel: 75 Hz), und ersucht wirksam (falls gültig) sofort.
Ein Stück entfallen kann ohne Linie fallen Schritte auftritt.
Ein Stück kann übersetzt werden mehrmals nach links oder rechts, und später fallen gelassen, ohne alle erleben eine offizielle Linie fallen Schritt.
Weil ein Stück neu hervorgebracht, kann sich nicht gedreht werden (denn es ist steckengeblieben gegen die Oberkante der Platine), der Spieler muss akzeptieren, zumindest ein Stück fallen Schritt, wenn Rotationen sind erwünscht oder erforderlich.
Die Auswirkungen auf die Partitur ist unbedeutend.
5.7 Standard Tetris Stück „Landung“
Wenn ein Stück ist einfach fallen, es fällt durch eine einzige Zeile bei jedem Stück fallen Iteration.
Es wird eine Iteration bewegt, dass er von einem Ort ohne Kontakt mit horizontalen Flächen zu einem Ort, hat Kontakt mit horizontalen Flächen. Sobald dieser Iterationen tritt auf, die Stücke sind im ruhenden Kontakt.
Wenn eine Iteration beginnt mit einem Stück Ruhe in Kontakt mit einer horizontalen Fläche, das Stück „Land,“ und wird Teil der statischen Haufen.
5.8 „Standard-Tetris-Linien abgeschlossen“
Ein ausgefülltes Zeile ist eine Zeile des Haufens, in denen alle Zellen besetzt sind. Wenn eine Zeile abgeschlossen wird eliminiert aus dem Haufen, und die Zeilen über dem eliminiert Zeile nach unten verschoben werden, indem eine Zeile, um die Lücke, dieses gilt als „abgeschlossen.“
Wenn ein Stück Land wird es Teil des Haufens.
Unmittelbar nach dem Stück Land, den Haufen kontrolliert wird für abgeschlossene Reihen, und alle Zeilen abgeschlossen werden eliminiert.
Bis zu vier Zeilen können gleichzeitig abgeschlossen werden kann.
Die folgende Tabelle gibt die obere Grenze auf Strecken gleichzeitig abgeschlossen durch ein einziges Stück:
piece max. simultaneous
rows completed
===== ==================
"O" 2
"I" 4
"S" 2
"Z" 2
"L" 3
"J" 3
"T" 2
5.9 Standard Tetris „Ebenen“
Standard Tetris hat 10 verschiedene Schwierigkeitsstufen, nummeriert 1 (eins) durch 10 (zehn), mit Niveau 1 werden die „am wenigsten schwierig.“
Die Höhe Index ist die maximal zwei Werte:
actualLevel = max( initialLevel, earnedLevel );
Die initialLevel Wert ist die Ebene, dass die Spieler wählt beim Start ein neues Spiel.
Das Muster der Stufe als Funktion der ausgefüllten Zeilen ist problemlos in die vor-kommerziellen MS-DOS Version von 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
Somit ist die earnedLevel Wert wird nach den folgenden Algorithmus:
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 fallen Iteration Verzögerung
Standard Tetris ist ein Echtzeit-Verzögerung zwischen aufeinanderfolgenden Linie den freien Fall Iterationen, dass ist eine Funktion des aktuellen Schwierigkeitsgrad.
Die folgende Beziehung zwischen dem Umfang und Inhalt fallen Iteration Verzug auf Stoppuhr wiederholten Messungen auf allen Ebenen der vor-kommerziellen MS-DOS Version von 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
So schaffen wir die folgende Formel für die Iteration Verzögerung Wert als Funktion der tatsächlichen Inhalt:
iterationDelay = ((11 - actualLevel) * 0.05); // [seconds]
Wenn die Platine ist leer, und es gibt keine Benutzereingaben, brachte ein Stück auf tatsächliche Höhe 1 landet in etwa 10 Sekunden, und brachte ein Stück auf tatsächliche Höhe 10 landet in etwa 1 Sekunde.
5.11 Standard Tetris „des Gastes“
Standard Tetris nur vergibt Punkte für den Akt der Landung ein Stück.
Es gibt keine Punkte vergeben für den Akt der Abschluss einer einzigen Zeile, oder den Abschluß zwei, drei oder vier Zeilen gleichzeitig.
[Anmerkung: Einige Varianten von Tetris Punkte vergeben für die Handlung der Vollendung Linien, mit einer exponentiell steigenden Bonus für eine zunehmende Anzahl von Zeilen gleichzeitig abgeschlossen.
Somit ist die Strategie zur Maximierung des Gastes in solchen Varianten von Tetris verlangt die Schaffung Chancen bekommt „man einen Tetris“ vom Slang für die Benutzung der „I“ Form zu vier gleichzeitige Linien und bekommen viele Punkte. ]
Wenn Sie einen leeren Karton, und Sie lassen einen nicht „I“ Stück eine den freien Fall und landen, oder Sie sofort ein Drop-„I“ Stück, können Sie die folgende Nummer Diagramm mit dem vor-kommerziellen MS-DOS Version von 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, nicht „I“ Stücke fallen insgesamt 18 Zeilen.
Dies entspricht dem Punkt Unterschied zwischen den freien Fall und Instant-Drop-Fällen.
Durch das Experimentieren mit Zwischen-Fällen ist es einfach zu schließen, die folgende Nummer Formel:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
Beachten Sie, dass diese Formel hat das nichts zu tun mit der Entfernung ein Stück fällt!
Es ist unbedingt eine Funktion der tatsächlichen Niveau, und eine Strafe für die Anzahl der Iterationen ein Stück darf frei fallen.
Dies straft eines Benutzers für benötigen Zeit zum Nachdenken.
Beachten Sie bitte auch, dass da ein Stück kann nicht gedreht werden zunächst als es zum ersten Mal Spawns, ein Spieler bestraft wird von mindestens einem freien Fall, wenn Iteration Rotationen sind erforderlich, um ein Stück auf den Haufen.
Dies wirkt sich wahrscheinlich nie menschlichen Spielern, es sei denn, sie irgendwie: erkennen, das Stück, drücken Sie die Übersetzung Tasten „(links“ oder „rechts),“ drücken Sie die Taste „rotieren“ ein oder mehrere Male, und drücken Sie die Taste „Drop,“ alle innerhalb von weniger als 0.5 Sekunden bei 1 Ebene, oder weniger als 0.05 Sekunden bei 10 Ebene.
6. Standard Tetris Strategie
6.1 Einleitung
Eine Strategie für ein Spiel spielen, hängt von den Regeln des Spiels.
Eine Strategie hängt davon ab, welche Parameter zu optimieren.
In der Standard-Tetris, ein überlebt, indem Sie Reihen, bekommt Punkte für die Landung Stück, Bewertungen und die meisten Punkte möglich für jedes Stück durch das Ausführen einer Drop-vor einem oder mehreren freien Fall Iterationen transpire.
Ein A.I. optimieren können die vergebenen Punkte für jedes Stück einfach von der Entscheidung über einen Umzug schnell und „Drücken der Tasten“ zur Ausführung der Bewegung.
Mehr wichtig, ein A.I. ist Überleben, weil unbestimmte Überleben bedeutet eine willkürlich Highscore erreicht werden kann. Da die Stücke fallen Tetris zu einem bestimmten Zinssatz, der A.I. Entscheidungen treffen müssen mindestens diese schnell - und die A.I. müssen dafür bewegt sich das komplette Zeilen zu einem Satz, dass Durchschnitt mindestens 1 Zeile pro Stück 2,5. (Jedes Stück hat 4 Zellen, und jede Zeile hat 10 Zellen.)
Natürlich kann man verschieben Abschluss Zeilen Anhäufung von Stücken und der Aufbau einer großen Haufen, aber es gibt nur 200 Zellen auf die gesamte Spielfeld, der im Prinzip nur halten können, 50 Stück, so dass jeder Spieler (wie zum Beispiel ein A.I.) müssen Sie die Zeilen eine grundlegende Priorität.
In der Standard-Tetris, das Spiel Staat umfasst die aktuellen Board-Besetzung und der aktuellen fallenden Stück (Typ, Position und Orientierung). Das Spiel Staat kann optional auch die "nächste Stück".
6.2 Eine abwechselnde Folge von "S" und "Z" Stücke
Heidi Burgiel, Ph.D., der Department of Mathematics, Statistics and Computer Science in der University of Illinois at Chicago, hat bewiesen, dass eine abwechselnde Folge von "S" und "Z" Stücke zwingen wird ein Standard (10-Spalte, Zeile 20) Tetris-Spiel zu beenden innerhalb eines vorhersehbaren Zahl der bewegt.
Zitat aus dem Artikel: "You can't win a game in which only alternating 'S' and 'Z' pieces appear."
Beteiligt gedruckten Artikel: Mathematical Gazette, Juli 1997, "How to Lose at Tetris"
Heidi Burgiel bietet eine Java applet das läuft in einem Internet-Browser Features, die ein verändertes Tetris-Klon, dass Spawns abwechselnd "S" und "Z" Stücke.
[Der "Standard Tetris"-Software im Zusammenhang mit dem Dokument, das Sie Lesung gibt es auch einen Modus der Spawns abwechselnd "S" und "Z" Stücke. ]
Heidi Burgiel behauptete, dass ein Spiel mit abwechselnden "S" und "Z" Stück (für ein Standard-Tetris Bord von 10 Spalten und 20 Zeilen) muss ein Ende haben, bevor weniger als 70000 Stück gesunken.
Die Standard-Software im Lieferumfang enthalten Tetris mit diesem Dokument ermöglicht eine Person zu spielen abwechselnd mit "S" und "Z" Stücke, und ändern Sie die Breite Bord.
Es ist leicht zu sehen, dass Boards, deren Breite der ganzzahligen Vielfachen von vier Spalten (Beispiele: 4 Spalten, 8 Spalten, 12 Säulen, usw.) gespielt werden kann, wenn immer Stücke wechseln sich zwischen "S" und "Z", mit der steigenden kein Haufen höher als 4 Zeilen. Ich erwähne das, um klarzustellen, dass die begrenzte Überlebensfähigkeit in der Forschungs-Dokument bereits erwähnt ist speziell für den Fall eines Standard-Tetris-Platine (mit 10 Spalten und 20 Zeilen).
6.3 Unlösbare Stück Sequenzen im Allgemeinen
Es gibt ganze Kategorien von pathologischen Sequenzen, die sich nicht überlebt.
Es wäre interessant, um die Wahrscheinlichkeit der gesamten Begegnung ein Spiel-Sequenz zu beenden, denn diese würde ein obere Schranke an der Wertentwicklung einer Strategie, auch mit vollständiger Kenntnis aller künftigen Stücke zu einem bestimmten Punkt in einem Spiel.
6.4 Total Bord Konfigurationen möglich
Angesichts der Tatsache, dass der Verwaltungsrat nicht 10 * 20 = 200 Zellen, und angesichts der Tatsache, dass jede Zelle kann nur in einem der beiden Staaten (leer oder besetzt), die Gesamtzahl der Board-Konfigurationen muss kleiner als oder gleich: (2 ^ 200).
Angesichts der Tatsache, dass jedes Stück fügt 4 Zellen auf einem Brett, und jede Zeile Abschluss eliminiert 10 Zellen aus dem Brett, die Zahl der besetzten Zellen auf dem Brett wird immer noch. Zum Beispiel, (3*4 - 1*10) = 2, (1*4 - 0*10) = 4, (4*4 - 1*10) = 6, (2*4 - 0*10) = 8, (5*4 - 1*10) = 10, usw. So, nur die Hälfte der (2 ^ 200) Bord Konfigurationen kann erreicht werden durch das Spiel.
Somit ist die Gesamtzahl der Board-Konfigurationen ist ca.: (2 ^ 199) = 8.03469... * 10^59.
Aber wir sollten aus unserem gesamten beliebiger Konfiguration mit gefüllten Reihen, weil Zeilen gefüllt werden beseitigt, bevor das Ende eines jeden Umzug abgeschlossen. Jede Konfiguration mit einem oder mehreren Zeilen gefüllt werden Zusammenbruch zu einer anderen Konfiguration, enthält zur Zeit keine gefüllten Reihen.
Auch sollten wir ausschließen, dass jede Konfiguration beinhaltet eine nicht-leere Zeile über eine oder mehrere leere Zeilen, denn eine nicht-leere Zeile über eine leere Zeile wird immer fallen, und alle fallen abschaltet, bevor das Ende jeder Bewegung.
Jede Zeile kann in 2^10 = 1024 Staaten, einer davon ist "leer", einer davon ist "voll", und (1024 - 2) = 1022 davon sind teilweise besetzt. Wir schließen die "voll" von Fall zu versichern.
Wenn der untersten Zeile ist leer, dann werden alle Zeilen oberhalb der unteren Zeile muss auch leer sein.
Wenn der untersten Zeile ist teilweise besetzt, dann die zweite Zeile kann leer oder teilweise besetzt.
Fortsetzung dieser Analyse, können wir eine Reihe von Board-Konfigurationen, die sich in der Ausgrenzung der vollen Reihen und die Beschränkungen für leere Zeilen: 1 + (1022 * (1 + 1022 * (1 + 1022 * (1 + 1022 * (... * (1023)))))), der sich auf etwa ((1022 ^ 19) * (1023)).
So finden wir eine genauere Schätzung der Gesamtzahl der stabilen Bord Konfigurationen: (1/2) * ((1022 ^ 19) * (1023)) = 0.9625... * (2 ^ 199), dh etwa 3,74% niedriger ausfällt als die Schätzung (2 ^ 199).
Allerdings ist die tatsächliche Zahl der stabilen und zugänglich Bord Staaten dürfte vor allem niedrigere auf die Tatsache zurückzuführen, dass die meisten Top-Reihen können nur ausgefüllt werden in ein paar Möglichkeiten. Da die meisten Top-Reihen füllen, eine neu generierte Stück kann nicht verschoben oder gedreht sehr viel. Dies begrenzt die Anzahl der Möglichkeiten, die meisten Top-Reihen besetzt werden können.
6.5 Im Prinzip ist die beste Bewegung kann zu jedem Stück Bord und Konfiguration
Da können wir alle von sieben möglichen Stücke für einen bestimmten Staat Bord, die Gesamtzahl der Spiel-Staaten beträgt ca. 7 * (2 ^ 199) = 5.624... * 10^60.
Da können wir im Prinzip eine tiefe Suche nach allen möglichen Futures für alle möglichen Züge für ein bestimmtes Spiel Staat, wir können nur eine einzelne "beste" bewegen, die mit jedem Spiel.
Wir gehen davon aus, dass wir keinen Zugang zu allen Informationen anderer als der aktuelle Vorstand und aktuelle Stück, so daß "beste" bedeutet, "dass der Umzug bietet die größte Chance der Erfüllung unserer langfristigen Ziel des Überlebens".
Ein Umzug ist nur eine Übersetzung (bis zu 10 Optionen) und eine Rotation (bis zu 4 Optionen), können wir problemlos encodieren die besten bewegen sich in einem einzigen Byte.
Also, im Prinzip könnten wir eine Tabelle mit 10^61 Einträge (bytes) sagte uns, dass die besten bewegen irgendwelche Bord Staat und aktuelle Stück.
Natürlich ist unpraktisch, genauso wie alle aufzuzählen "Go" Brettern oder "Chess" Boards ist unpraktisch. Aber der Punkt ist, dass es eine wahre Lösung, und es gibt eine Bewegung am besten für eine bestimmte Konfiguration. Es könnte ebenso gut bewegt sich für eine bestimmte Konfiguration, aber wir können beliebig wählen Sie eine einzelne Schritt in diesem Fall.
Viele Spiel-Algorithmen spielen haben Tabellen, abschließend alle aufzählen Spiel staatlichen Möglichkeiten innerhalb einer begrenzten Kontexten, wie "die Öffnung der (ursprünglichen) bewegt" oder "End-Spiel (endgültig) bewegt sich" in Schach. Vielleicht erschöpfende Aufzählung von Tetris Haufen Oberflächen (etwa (20 ^ 10) Staaten) ist möglich. Es ist eine interessante Idee.
Erschöpfende Aufzählung aller Staaten der unteren zwei Zeilen, multipliziert mit den sieben Stücken möglich, die Lagerung und die besten bewegen sich in einem einzigen Byte, wäre ganz einfach; erfordern nur 7 MB Speicher. Vielleicht Optimierung der Leistung für diese sieben Millionen Fällen würde Rohdaten für die Analyse und die Entwicklung von einfachen Modellen für die Daten; solche Modelle könnten als Teil der Gesamtstrategie ideale Tetris-Strategie spielen.
Beachten Sie, dass die Ausführung am besten bewegt sich immer noch nicht schützen uns vor möglichen pathologischen Spiel-Sequenzen zur Einstellung Stück. Es ist nur, dass wir auch immer bewegt, bietet uns das maximale Potenzial für die Zukunft Überleben angesichts der Tatsache, dass alle künftigen Stücke sind völlig willkürlich (wie auch unbekannte in der Zeit sind wir zu entscheiden, wie Verschieben einer einzigen aktuellen bekannten Stück).
6.6 Echtzeit-Performance
Ein Zwang, denen einige Algorithmen Strategie ist die Notwendigkeit für die Echtzeit-Performance - was bedeutet, dass der Algorithmus muss eine Entscheidung innerhalb einer bestimmten Höhe der Zeit.
Wenn ein Mensch spielt Tetris, die Stücke nicht stoppen fallen, damit der Spieler eine Chance zu denken. Das ist Teil der Herausforderung von Tetris. So A.I. ein System, das bedeutete, zu simulieren die Rolle eines menschlichen Spieler muss auch Entscheidungen treffen zu einem Satz diktiert durch die Tetris-Spiel.
6.7 Row und Stück Summen
Beachten Sie, dass in die langfristige, die Zahl der Stücke fallen gelassen ist sehr nah an 2.5 mal die Zahl der abgeschlossenen Zeilen - weil jede Zeile hat 10 Zellen, und jedes Stück ist ein 4-Zellen, und wir müssen eine Zeile im Durchschnitt (10/4) = 2.5 einmal alle Stücke fallen gelassen.
Also wir können "abgeschlossen Reihen" und "fallengelassen Stück" fast austauschbar mit den entsprechenden Verhältnismäßigkeit konstant. Der größte Fehler ist, wenn das Brett komplett gefüllt ist mit Ausnahme eines einzigen Lücke in jeder Zeile (((10*20)-20)/4) = 45 Stücke fallen gelassen, sondern ein Mangel der vorhergesagten (45/2.5) = 18 abgeschlossen Reihen.
6.8 Aktuelle-Stück (Unterkunft und Verpflegung) Strategie
Wenn wir nur die A.I. zu haben Kenntnisse über die aktuellen Bord und das aktuelle Stück, und wir nur prüfen, das Ergebnis der Bewegung des aktuellen Stück insbesondere Art und Weise, dann kann dies den Namen eines "one-piece"-Analyse.
Hier ist eine grobe Skizze, wie ein Stück ein-Analyse kann entscheiden, ein Schritt in Tetris:

Aktuelle-teilige Analyse eines Tetris-Spiel Zustand
Grundsätzlich versuchen wir, alle möglichen Züge und Abtransport der Umzug brachte das beste Ergebnis.
Der schwierigste Teil ist die Bewertungsfunktion jedes Ergebnis.
Wir müssen eine hypothetische Rate Spiel Staat je nachdem, wie gut ein solcher Staat unterstützt unsere kurzfristigen und langfristigen Ziele.
Unser langfristiges Ziel ist Überleben. Überleben hängt davon ab, die Verhinderung der Haufen aus den überquellenden Bord. Wir können die Stapelhöhe von kompletten Reihen bilden, die dann beseitigt aus dem Haufen.
Um eine komplette Zeile, müssen wir fit Teile von Stücken in jeder Spalte dieser Zeile. So werden wir verlangen, dass alle Teile einer Zeile zu ausgesetzt werden die Stücke fallen, wenn wir die schließlich füllen Sie bitte die gesamte Zeile.
Wenn aus irgendeinem Grund decken wir bis leere Teile einer Reihe von Stücken in jeder Zeile höher, so sind wir jetzt nicht in der Lage zu besetzen in diesen leeren Teile der Reihe. Der einzige Weg (sofern keine Schiebetüren) für den Zugriff auf die "Löcher begraben" ist die Beseitigung der Zeilen oben, die Teile, die als Hindernisse.
Die folgenden Faktoren sind unter den wir verwenden können, um einen bestimmten Satz Bord Zustand:
Overall pile height
Je höher der Haufen, desto schlechter ist unsere Situation zu sein scheint, denn wir sind näher an den überquellenden Bord.
Roughness of pile area (number of times cells alternate between empty and filled as any row or column is scanned)
Die rauerer der Haufen, desto wahrscheinlicher ist es, dass es schwierig sein wird, füllen Sie alle der eingebetteten komplexen Konturen, sobald sie exponiert an die Oberfläche.
Number of buried empty cells
Je mehr Löcher haben wir begraben, desto schlechter ist unsere Situation ist, denn wir müssen aufdecken begraben Löcher, bevor wir können die entsprechenden Zeilen.
Sie können sich vorstellen, dass andere Faktoren im Allgemeinen Tarif eine hypothetische Bord auf, wie gut ihre Haufen kann alle möglichen Zukunft Stück, und wie gut sieht die Situation für alle diese Stücke möglich.
Die nächste Frage ist, wie Sie feststellen können die relative Bedeutung dieser Faktoren.
Ein allgemeines Konzept ist folgende. Weisen Sie eine Reihe von "Gewichte" (relative Bedeutung) zu diesen Faktoren und dann simulieren zahlreiche Spiele und das Ergebnis dieser Spiele (Endnote, etc). Dann legen Sie einen neuen Satz von Gewichten und simulieren eine neue Reihe von Spielen. Basierend darauf, ob die neue Reihe von Spielen hatte bessere Ergebnisse als die vorherige Reihe von Spielen, wir wissen, ob der neue Satz von Gewichten war besser als die vorangegangenen Satz von Gewichten.
In meinem eigenen Experimente Ich habe versucht eine systematische Suche und zufällige Suche nach guten Kombinationen, aber ich habe nicht irgendwelche großen Trends, die ich verfolgen konnte. Allerdings sah ich, wie viele überraschend glatte Bodenwellen. Ich fand es interessant, dass die durchschnittliche Performance bilden könnte eine glatte Kurve, wenn ein Parameter war abwechslungsreich langsam mit den anderen Parametern bei einigen Wert Kombination.
Die besten Echtzeit-, einteilig Tetris-Algorithmus in der Welt, geschaffen von Pierre Dellacherie (Frankreich) in 2003, verdankt einen großen Teil seines Erfolges seiner Reihe von Messungen (oder Metriken). Gewichte zu finden, ist notwendig, wenn die Optimierung einer Strategie, aber es ist auch von entscheidender Bedeutung, beginnen mit der Art der Messungen zeigen, dass die relevanten Merkmale des Staates.
Pierre Dellacherie's Erfindung neuer Möglichkeiten zur Charakterisierung jedes Brett macht seine Algorithmus wirklich ausgezeichnet; dem Board-Capture-Charakterisierungen der wichtigen strategischen Dimensionen des Brettes.
Man könnte eine ganz andere Reihe von Charakterisierung Dimensionen, die ebenso gut gearbeitet, ich bin zuversichtlich, dass es möglich ist, spannt den einschlägigen staatlichen Bord Raum, in vielen verschiedenen Möglichkeiten, die genutzt werden kann, um eine Strategie-Funktion. Der Schlüssel zu finden, ist das Projekt Merkmale der Staat Raum auf eine kleine Anzahl von Dimensionen verwendet werden können zur Entwicklung eines einfachen Rating-Funktion (Beispiel: die lineare gewichtete Kombinationen von Merkmalen, die von Pierre's Algorithmus).
Die One-Piece-Algorithmus verwendet, durch die "bot" im "xtris"-Software (1996) geschrieben von Roger Espel Llima verwendet Gewichte bestimmt durch eine breit angelegte Erforschung der möglichen Kombinationen von "genetischen Algorithmen". Simulierte Glühen ist eine weitere mögliche Methode zur Erforschung der multidimensionalen Raum von Gewicht Kombinationen.
Es scheint, dass, basierend auf verschiedenen Beobachtungen, die mehrdimensionale Funktion der durchschnittlichen Tetris Leistung als Funktion der Gewichte, Beispiel: F(w1,w2,w3,...), ist die "grobe" (viele lokale Minima und Maxima), was bedeutet, dass eine einfache mehrdimensionale "Bergrennen" könnte nicht funktionieren.
6.9 Strategie bei der aktuellen Stück, nächste Stück, und Karton sind bekannt
Wenn ein Algorithmus-Strategie ist angesichts der aktuellen Stück, nächste Stück, und Karton, dann kann es Entscheidungen zu treffen, die Nutzen aus der Kombination von Stücken.
Das Wissen um die nächste Stück verbessern können den Erfolg einer Tetris spielen Algorithmus durch mehrere Größenordnungen. Es ist ganz einfach zu verstehen, wie die Kenntnis der nächsten Stück macht einen großen Unterschied in der Strategie.
Man kann nicht "verrückt" bewegt, wie die riesige Löcher, etc, weil sie wissen bereits, dass das nächste Stück kann verwendet werden, zu "reparieren" der Situation. Wenn Sie nicht über Kenntnisse der nächste Stück, Sie sind ständig versucht, spielen die Chancen, versuchen, um Ihre Optionen offen für den Fall, das nächste Stück ist nicht ideal.
Die folgende Skizze zeigt, wie alle der möglichen Züge des aktuellen Stück in Betracht gezogen, und für jede solche bewegen wir alle möglichen Züge, die die nächste Stück.

Strategie, die aktuellen und nächsten Stück Stück
Die Standard-Tetris-Software verwendet diese Strategie, wenn die "Next Stück" aktiviert ist, indem der Benutzer und ist sichtbar auf dem Bildschirm, und wenn eine zweiteilige A.I. aktiviert ist (wie das von mir geschriebene, Colin Fahey). Wenn die "Weiter Piece" ist nicht sichtbar auf dem Bildschirm, meine zwei Stück fällt zurück auf ein Stück A.I..
Meine einem Stück A.I. ist schrecklich, wenn im Vergleich zu den anderen AIs in der Standard-Software Tetris, so dass dies von Vorteil zeigt Ihnen mehr Informationen (Beispiel: das nächste Stück) können zu einem A.I. System, es ist genug, zur Verbesserung der Leistung meines eigenen mittelmäßig zweiteilige A.I. durch mehrere Größenordnungen - leicht übertraf die Performance der besten ein-Stück A.I. in der Welt.
(Allerdings, das Umwandeln der beste A.I.-Stück in der Welt zu prüfen, zwei Stücke würden leicht verbessern, indem es mehrere Größenordnungen, too! Kennen des nächsten Stück ist groß!)
Meine erste Test-Spiel mit meinen zwei Stück A.I. dauerte etwa 182 Stunden (7,6 Tage) auf einer 800 MHz PC, zur Vollendung 7216290 Zeilen. Ich habe nicht geprüft, welcher Algorithmus in einen schnelleren Rechner.
Wenn Sie den Zustand eines Tetris-Spiel (Shift-W) in eine Textdatei, können Sie dann kopieren und die Liste der Zahlen, aus dem Abschnitt "heightHistogram", in eine Excel-Tabelle.
Jeder Container im Histogramm zeigt die Anzahl der abgeschlossenen bewegt sich das endete mit einem bestimmten Stapelhöhe (nach vollständiger Datensätze werden eliminiert). Wie Sie sich vorstellen können, was ein Schritt, völlig eliminiert einen Haufen ist selten, so dass die Gesamtzahl der bewegt sich das endet mit einer Stapelhöhe von Null ist relativ gering.
Inzwischen, können Sie erwarten, dass die Stapelhöhe der Regel schwankt um einige Durchschnitt, so dass entsprechende Kästen zu diesen Zeilen wird das Histogramm dominieren. Abschließend, Papierkörben für die meisten Top-Reihen (wo sind wir in Gefahr überfüllter das Board) haben sehr geringe Summen.
Im Laufe der vielen Stunden, mit der A.I. Abspielen eines einzigen Spiel mit der Strategie, die Kenntnisse über die "nächsten Stück", habe ich Stichproben des Spiels Staat, das Kopieren der Stapelhöhe Histogramme zu einer Tabelle, wie unten gezeigt:

Stapelhöhe Histogramme erfasst an verschiedenen Punkten in einem typischen Spiel (mit Strom-und-next-Stück-Strategie)
Sie können jeden Maßstab Histogramm durch die Gesamtzahl der Stücke (Gesamtzahl der abgeschlossenen bewegt), um die folgende Daten:

Scaled Histogramme, und eine Theorie
Die bemerkenswerte Sache ist, dass diese skaliert Histogramme identisch aussehen, obwohl die verschiedenen Aufträge der Größenordnung der Zahl der Stücke (abgeschlossen bewegt) beteiligt.
Just werden, indem man die Zahlen habe ich die These, dass der Schwanz der Kurve ist eine exponentielle Zerfall. Mit dem "Trial and Error" Ich kam auf die grobe Theorie, dass der Schwanz war beschrieben durch:
relative_frequency = ((0.122) * ((0.375)^(row-5)))
Die folgende Grafik zeigt die skalierten Histogramm über den gesamten Bereich von Zeilen.

Graf der skaliert Histogramme
Beachten Sie, dass die Kurve für 50000 Stück, und die Kurve für 2000000 Stück, und die Kurve der Schwanzflosse Theorie sind fast ununterscheidbar in dieser Größenordnung.
Der folgende Text ist ein genauerer Blick an der Spitze der Kurve.

Unterer Teil der Höhe Histogramm
Im Folgenden finden Sie eine stark vergrößerte-angesichts der extremen Schwanz Ende der gemessenen und theoretischen Histogramm-Kurven.

Vergrößerte Ansicht von extremen Schwanz Ende skaliert Histogramme
Wie Sie vielleicht erwarten, ist es sehr selten vor, dass der Haufen zu erreichen diese Höhen in noch lange Experimente - aber auch mit unseren begrenzten Beweisaufnahme in dieser extremen Region, die Theorie scheint noch akzeptabel.
In der vollständigen Tabelle der Theorie scheint zu Überschneidungen der Schwanz der Verteilung "genau", während sie in der vergrößerten Karte der Schwanz der Schwanzflosse, sehen wir offensichtliche Fehler. Aber ich behaupten, dass dies aufgrund unzureichender Daten in diesen extremen Höhen Haufen. Wenn ich erhöht das Spielbrett auf, sagen wir, eine Höhe von 25 Zeilen statt 20 Zeilen, so dass die Spiele nicht abrupt beenden, ich denke, die Theorie von mir oben zusammenfallen würde perfekt mit dem Trend.
Mein Gefühl ist, dass diesem Histogramm ist eine direkte Folge der kombinierten die Tetris A.I. und die Regeln von Tetris. Also, dieser Verteilung beobachtet werden für einen beliebigen langfristigen Spiel Tetris mit meinem besonderen A.I. Strategie für das Spielen mit "Next Stück" Wissen.
Außerdem denke ich, diese Art von Histogramm kann verwendet werden, um vergleichen AIs dass beschäftigen die gleichen Informationen während des Abspielens. So müssen Sie nicht spielen komplette Spiele (das könnte dauern Tage oder Jahre) zum Vergleich der langfristigen Wertentwicklung der verschiedenen Strategie-Algorithmen.
Zum Beispiel, trotz der Einfachheit der mein Modell, ich denke, es kann verwendet werden, um vorherzusagen, die durchschnittliche Dauer Spiel! Wir einfach herauszufinden, wie viele Stücke macht der "Reihe 21" Stapelhöhe eine beträchtliche Zahl, wie zum Beispiel die Anzahl ein.
Die relative Häufigkeit für Zeile 21, meiner Meinung nach, einfache Theorie, ist:
((0.122) * ((0.375)^( 21 -5 ))) = 1.8 * 10^(-8)
Sie müssen diese Zahl multiplizieren (5.3 * 10^(7)) von rund 50 Millionen, um einen Wert von eins.
So habe ich etwa sagen voraus, dass mein bisheriger "Weiter Piece"-Strategie ist nur gut für die in der Größenordnung von etwa 10 Millionen Zeilen abgeschlossen. Ein Grund, warum ich diese konservative Schätzung ist die Tatsache, dass selbst 18 Zeilen kann tödlich für meine A.I., weil ich nicht zulassen, dass mein A.I. Stücke zu prüfen haben, bis sie um mindestens eine Zeile! (Dies ist so dass ich keine Gedanken darüber zu machen, nicht in der Lage zu drehen Stücke.)
Ich bin beeindruckt von der Tatsache, dass Spielen nur 50000 Stück (und möglicherweise viel weniger Stück) kann Ihnen eine extrem gute Schätzung des langfristigen Höhe Histogramm und somit eine gute Schätzung der Größenordnung der abgeschlossenen Reihen vor dem Spiel endet. Dieser Ansatz ist extrem wertvoll für die Bewertung schnell subtile Veränderungen in einer A.I. das bereits tut sehr gut.
6.10 Evaluation Board Metriken imitieren spekulative Look-Ahead
Wenn ein Algorithmus, wie der, die ich mit diesem Projekt, versucht einfach alle Stück Orientierungen und Übersetzungen für Fallenlassen, und die Sätze jeweils resultierende Bord nach Konfiguration bis zu einem gewissen Maß an Wert, der Algorithmus ist im Wesentlichen imitieren "Look-Ahead".
Wenn man beschäftigt Messdaten, wie beispielsweise die "Stapelhöhe", "begraben Löcher", "Rauhigkeit" oder "gut Tiefen", ist man wirklich über eine vereinfachte Form der "Blick nach vorn". Diese allgemeinen Charakterisierungen des Vorstands geben einige Hinweise auf die langfristige Lebensfähigkeit des Vorstandes.
Der ideale Ansatz, da eine unendliche Menge an Rechenleistung, wäre die Evaluierung einer Bord-Konfiguration mit allen möglichen Stück Sequenzen, folgen können.
Obwohl Sie müssen alle 7 Stücke als gleichermaßen wahrscheinlich auf jeder Ebene der Look-Ahead, benötigen Sie zur Optimierung der tatsächlichen Übersetzungen (bis 10) und Orientierungen (bis 4) für jedes Stück in jeder Reihenfolge möglich! Das ist bis zu (7*10*4) = 280 Niederlassungen auf allen Ebenen des Vorstands Bewertung! Also, das ist bis zu ((280)^(LookAheadLevels)) Bord Konfigurationen zu beachten.
Da müssen wir beenden die Analyse nach einer endlichen Zahl von Ebenen, brauchen wir einige nicht-Look-Ahead-Methode zur Bewertung der Board-Staat - eine Möglichkeit, deren Werte auf der Blatt-Knoten unserer Suche Baum. Also, für diese Blatt-Knoten, sind wir wieder mit einer Formel, verkörpert allgemeine Prädiktoren der Zukunftsfähigkeit der Bord!
Diese Art von Spekulation kann versucht werden, mit dem One-Piece-und Zwei-Element-Algorithmen anstelle des vereinfachende Bord Bewertung Metriken. Nehmen Sie alle nachfolgenden Stücke sind ebenso wahrscheinlichen und Summe der Fähigkeiten von einem Brett, um Stücke aller Art in der bestmöglichen Art und Weise. Dies kann durchgeführt werden, mit einem, zwei oder eine beliebige Anzahl von spekulativen bewegen Tiefen - mit allen Stücken gleichermaßen wahrscheinlichen (p=1/7).
Das Terminal Knoten dieses Baumes könnte noch den gewichteten Metriken zur Bewertung, aber die spekulativen Schichten genauer erfassen die Essenz dessen, was wir tun wollen: Ermitteln Sie, wie gut ein bestimmtes Bord kann alle möglichen Stücke, einschließlich positiver Faktoren wie die Vollendung Linien und negative Faktoren wie die Zunahme von insgesamt Stapelhöhe, usw.
7. Tetris A.I. System Demonstration
7.1 System-Übersicht
Das folgende Diagramm zeigt, meine experimentellen Set-up.

Gesamtsystem zur Demonstration
7.2 Ausstattung
Hier ist eine kurze Liste der verwendeten Geräte in dieser Demonstration:
[1] Ontrak Control Systems ADR2200 RS-232 8-Relay Board: $149.00 (USD 2003)
[2] Ontrak Control Systems ADRPWR Power Supply : $ 12.95 (USD 2003)
[3] Creative WebCam Pro (640x480 USB video camera) : $ 39.95 (USD 2003)
Natürlich können Sie ähnliche Geräte, um die gleichen Ergebnisse. Nähere Einzelheiten über die Ausrüstung sind in die entsprechenden Abschnitte in diesem Artikel.
Hier sind kurze Beschreibungen der Personal Computer in diesem Demonstration:
[1] Personal Computer (PC), 350 MHz, Windows 98 [Runs video game]
[2] Personal Computer (PC), 800 MHz, Windows 2000 [Runs AI program]
Diese Demonstration könnte leicht reproduziert werden mit anderen Betriebssystemen, wie zum Beispiel Linux. Es ist wichtig, dass wir eine CPU Geschwindigkeit in der Größenordnung von 800 MHz oder schneller für den Computer, ist die Ausführung der A.I. Software, denn diese Computer wird so tun, Echtzeit-Verarbeitung von Video.
7.3 Video-Capture-Hardware
Ich benutzte eine gemeinsame USB Video-Kamera als Video-Capture-Gerät für meine A.I. System. Genauer gesagt, benutzte ich die Creative "WebCam Pro", ein USB Videokamera mit 640 * 480 Auflösung.

Creative(TM) USB Videokamera Beschreibung

USB Video-Kamera (im Winkel)

USB Videokamera (vorne)

USB Videokamera (Board mit CCD)

USB Videokamera (Haupt-Chips)

OV511 Haupt-Blöcke (Anmerkung: USB Videokamera ist OV511+)
7.4 OV511 Datenblatt
ov511ds.pdf
OV511 Datenblätter
1136328 bytes
MD5: e927d786e16baea59b7e7e54529778c0
7.5 OV511+ ( "plus") unterschiede
ov511plus_101.pdf
OV511+ unterschiede
56271 bytes
MD5: 388a03c56d6f67d6d5d80e3d06c4de21
7.6 Video Capture Software
Microsoft hat eine sehr alte API namens "Video for Windows" (VFW), dass ich erfolgreich eingesetzt für dieses Projekt. (Sie Link zu "vfw32.lib" C++ in Ihrem Projekt, oder führen Sie eine DllImport von "vfw32.dll" C# in Ihrem Code.) Beispiele für die Verwendung der VFW API sind überall erhältlich.
Eine Alternative ist die Verwendung Microsoft's "DirectShow" API zu tun, Video-Capture.
Da VFW dauerte nur ein Dutzend Zeilen Code zu verwenden, und durchzuführen ist akzeptabel auf meinem 800 MHz Maschine, ich habe nicht die Mühe der Erforschung alternativer APIs. Aber DirectShow ist eine zeitgenössische API für Windows Video-Capture und möglicherweise ergibt sich eine wesentlich höhere Frame-Rate für die gleiche Hardware.
Sehen Sie sich die "CPF.StandardTetris.STVideoCapture" Quellcode-Dateien in der Standard-Software Tetris zu sehen, wie einfach es ist, um Video-Capture-in Ihrem eigenen Projekten.
7.7 Computer-Schnittstelle zu Relais (via RS232)
Wenn Sie ein Computer "drücken Sie" auf der Tastatur von einem anderen Computer benutzte ich einen "Relaiskarte" von Text-Befehle, die aus einem seriellen Kommunikations-Port (Beispiel: "COM1") über ein Kabel RS-232. Ich habe jedes Relais verbinden die beiden Drähte eines spezifischen Tastatur-Taste zu simulieren eine Taste gedrückt wurde.
Dies erforderte die Öffnung der Tastatur und die Verbindungen. Es gibt viele Methoden leichter zu simulieren, drücken Sie Taste auf einem Computer, aber ich wollte etwas tun, das schien so nah wie möglich an eine Person wirklich der Eingabe über die Tastatur eingegeben.
Ein sehr vielseitig und gut gemacht Relais-Platine ist die ADR2200 made by Ontrak Control Systems:

Ontrak Control Systems ADR2200 RS232 / RS485 Relay I/O Interface

Ontrak Control Systems ADR2200 RS232 / RS485 Relay I/O Interface
Sie können sich die "CPF.StandardTetris.STRS232" Quellcode-Dateien zu sehen, wie einfach es ist zu senden Bytes über eine serielle Schnittstelle, die dann verwendet werden, um die Kontrolle von Geräten wie dem ADR2200 Bord oben gezeigt.
8. Tetris Standard-Software
8.1 Download Software
Gehen Sie an den Anfang dieses Artikels finden Sie einen Link zum Download des Quellcodes (C# und C++ Versionen) und baute Software (*.exe).
8.2 Zusammenfassung der Funktionen
Software-Eigenschaften:
Instruction Bildschirme und Gutschriften
Monochrom-Modus
Shadow-Modus
Tipp-Modus
Junk-Reihen
Rate Control
Weiter Stück
Board Größe
S/Z Stück
ABGLEICHMODUS
Video-Capture und Anerkennung
Debugging Konsole
Speichern Spiel
Load-Spiel
8.3 Beginnend Aussehen
Aussehen, wenn die Software gestartet wird:

Aussehen, wenn die Software gestartet wird
8.4 Monochrom-Modus
Standardmäßig erscheint das Board in Farbe:

Standardmäßig erscheint das Board in Farbe.
Der Farbmodus kann so geändert werden, monochrom (Shift + K):

Die Farb-Modus geändert werden kann, um Schwarz-Weiß.
8.5 Shadow-Modus
Shadow-Modus gibt an, wo ein Stück landet. Dies ist sehr hilfreich für sehr große Platten, weil es schwierig ist zu beurteilen, wo ein Stück landet.

Shadow-Modus gibt an, wo ein Stück landet.
8.6 Tipp-Modus
Tipp-Modus zeigt Ihnen, wo die gerade ausgewählten AI würde sich angesichts der derzeitigen Situation. (Shift + H)

Tipp-Modus zeigt, wo die aktuell ausgewählte AI bewegen würde.
8.7 Junk-Reihen
Legen Sie "Junk" Zeilen am unteren Rand des Haufens, eins nach dem anderen, auch manuell eingeben. (Shift + J)

Legen Sie "Junk" Zeilen am unteren Rand des Haufens.
8.8 Rate Control
Die '+' (plus) und '-' (minus)-Tasten steuern die Geschwindigkeit des Spiels.
Standardmäßig wird das Spiel läuft auf einem Standard-Geschwindigkeit, nach den Regeln von Standard-Tetris (Geschwindigkeit basierend auf Ebene).
Hier ist eine Tabelle mit der Bedeutung von Geschwindigkeit Bias:
-3,-4,...: Langsamkeit proportional zur Voreingenommenheit
-2: langsamer als Ebene 1
-1: Normal, sondern beschränkt sich auf Ebene 6 (0,2 sec) Geschwindigkeit;
0: normal; Standard Tetris Geschwindigkeitsregelung;
+1: etwas schneller als Ebene 9 (0.05 sec Verzögerungen);
+2: begrenzt durch die Rendering-Rate (Beispiel: 75 Hz);
+3,+4,...: mehrere Iterationen pro Frame gerendert;
Ich mag die Ausführung der A.I. auf eine Einstellung von "+2" (Hit '+'-Taste zweimal, wenn Voreingenommenheit beginnt bei Null).

Speed Voreingenommenheit verändert die Geschwindigkeit des Spiels.
8.9 Zeige nächste Stück
Hit 'N ", um die" nächsten Stück "-Display. Die A.I. wird die "Next Stück" Informationen nur dann, wenn der "nächsten Stück" erscheint auf dem Bildschirm.
Sie können sicher sein, dass die KI ist nicht mit "Next Stück" Informationen, wenn Sie nicht sehen können "Weiter Piece" auf dem Bildschirm.

Lassen Sie sich die nächsten Stück
8.10 Board Größe
Drücken Ctrl + (links, rechts, unten, oben) kann man anpassen, die Größe Bord zu willkürlichen 4 * 4 Größen von bis zu 200 * 400.

Board size: 4 * 8

Board size: 20 * 40

Board size: 40 * 80

Board size: 20 * 5

Board size: 4 * 100
8.11 S/Z Stück nur
Studieren Sie die interessante abwechselnd S/Z Muster.
Dieses Muster kann nicht gelöst werden, für eine 10 * 20 Bord (Breite * Höhe).
Allerdings, Platten, die Weiten, die ein Vielfaches von 4 sind trivially gezeigt zu ermöglichen unendliche Überleben.
Die AIs überleben unbestimmte Zeit in diesen Fällen, obwohl sie nicht speziell abgestimmt, dass mit dieser pathologischen Situation.

S/Z Stück nur
8.12 Video-Modus Kalibrierung
Hit 'C' zu geben "Calibration Mode". Wenn im Kalibriermodus, können Sie auf die Zifferntasten: {1,2,3,4,5,6,7}, um ein Stück {O,I,S,Z,L,J,T} am oberen Rand des Spielfeldes.
Dies ist nützlich, als Referenz Bild für die Video-Capture über eine zweite Tetris Standard-Software.
Wenn Sie mit der 0 (Null)-Taste gedrückt, wird sie das Brett leer.
Sie können so tun, wo sie laichen Stücke, indem Sie ein Stück (1..7), und wählen Sie dann eine leere (0), während ein zweiter Computer tun, Video-Capture-Uhren für Stück.
Sie können den A.I. auf dem zweiten Computer und sehen, wie es sich mit Ihren manuell eingegebenen Szenarien pathologischen Tetris!
Calibration-Modus ist die einzige Zeit, die Sie manipulieren können die Video-Capture-Bildverarbeitung Vorlage (4 * 2 Raster). Sie können mit der Maus auf das Rechteck, aber dann können Sie mit den Cursor-Tasten ( "up", "Down", "links", "rechts") zu haben feine Kontrolle der Grenzen - mit dem Shift gedrückt, um entgegengesetzten Grenzen des Rechtecks (Beispiel: "Shift-links" Combo ist anders als "links").

Video-Modus Kalibrierung
8.13 Video-Capture und Anerkennung
Durch Drücken von "V 'schaltet die Video-Capture-Modus. Wenn richtig kalibriert (siehe "Video-Kalibrierung" in einem vorherigen Abschnitt), die Stücke von einem Remote-Bildschirm wird aufgenommen von der Videokamera und klassifiziert - und die Stücke werden hervorgebracht in der lokalen Spiel für die A.I. prüfen und zu reagieren .
Die A.I. Ausgang muss dann übertragen werden (über die RS-232-Schnittstelle an der Demonstration in diesem Artikel beschrieben) auf dem Remote-Spiel-Eingang (Beispiel: Tastatur) für die A.I. erfolgreich zu spielen, die Remote-Spiel.
Wenn jederzeit diesem geschlossenen Kreislauf ist gestört (Beispiel: Video-Capture-Fehlfunktion, oder Output-Signal Fehlfunktion), dann die A.I. entwickeln wird ein falscher Eindruck über den Status des Remote-Spiel, und die A.I. wird unangebracht, dass Entscheidungen schnell verlieren das Spiel .
(Anmerkung: Dieses Problem kann überwunden werden mit einem bescheidenen Aufwand: Die A.I. System muss nur prüfen, das gesamte Remote-Tetris-Bildschirm für einen laufenden "Reality-Check" der gesamte Vorstand und die A.I. System sollten bereit sein, für einige Befehle zum Ausgang nicht in einigen Art und Weise.)

Video-Capture und Anerkennung
9. Original Tetris AI-Experiment (2003)
Nachstehend finden Sie die ersten Arbeitstag Version des Tetris A.I. System im Jahr 2003.

Videokamera mit Computer # 1 laufen alle plain Tetris-Spiel

Computer # 2 läuft Tetris Standard-Software in A.I.-Modus

Links: Zeichnung Gitter zu kalibrieren Videobild Anerkennung;
Rechts: Tetris Stück Anerkennung Fälle.

Frame aus Video von Tetris A.I. Experiment im Jahr 2003
10. Best-Stück ein Tetris-Algorithmus spielt in der Welt
10.1 Pierre Dellacherie (2003; Frankreich)
Pierre Dellacherie (2003; Frankreich), Entwickler der besten ein Tetris-Stück-Algorithmus spielt in der Welt
Das beste Stück-, Real-Time Tetris-Algorithmus meines Wissens wurde entwickelt durch Pierre Dellacherie von Frankreich.
Seine erstaunliche Algorithmus manchmal füllt mehr als 2 Millionen Zeilen!
Die durchschnittliche Leistung ist in der Größenordnung von 650000 Zeilen.
Der Algorithmus braucht sehr wenig Speicher und läuft mit hoher Geschwindigkeit (ca. 160 Zeilen pro Sekunde auf meinem 800 MHz Computer).
Die Leistung von Pierre Dellacherie's Algorithmus:
Meine aktuelle Modell für die Leistung von Tetris EI ist, dass für einen bestimmten Stück gibt es einen konstanten Wahrscheinlichkeit, dass das Spiel endet, p.
Somit ist die Wahrscheinlichkeit, dass ein Stück nicht beenden ein Spiel q=(1-p).
Die Wahrscheinlichkeit, das Spiel zu beenden, nachdem k bewegt ist einfach das Produkt aus der Wahrscheinlichkeit des Überlebens (k-1) bewegt, nämlich q^(k-1), und die Wahrscheinlichkeit, dass der zur Einstellung in die nächsten Schritte, nämlich p.
Dies entspricht einer "Geometric Distribution":
Geometric Distribution:
P(k) = p * [(1-p)^(k-1)] = p * [q^(k-1)] = p * exp[ln(q) * (k-1)]
MEAN: [1/p]
VARIANCE: [q/(p*p)]
STANDARD DEVIATION: sqrt( VARIANCE )
Für kleine p, ln(q) ist etwa (-p), und wir haben die folgende:
Exponential Distribution:
P(k) = p * exp[-p * (k-1)]
= p * exp[-p * k ] approximately
MEAN: [1/p]
VARIANCE: [1/(p*p)]
STANDARD DEVIATION: sqrt( VARIANCE )
Wir erwarten, dass der Anteil an der Gesamtzahl der gespielten Partien zu beenden, mit einer Reihe von abgeschlossenen Zeilen im Intervall [k1, k2] zu sein:
Integral of the Exponential Distribution:
I(k1,k2) = exp[-p * k1] - exp[-p * k2]
Nach Abschluss der 36 Spiele auf meinem Computer, die über einen Zeitraum von zwei Tagen fand ich ein durchschnittlich 674827 Zeilen abgeschlossen.
Nach den allgemeinen Theorie vor, ich würde erwarten, dass die folgenden relativen Anteil von Spielen bis zum Ende in den folgenden Bereichen abgeschlossen Zeile:
p = (1/674827) = 0.000001482 = 1.482*10^(-6)
Completed Row Range Relative Fraction of Total Games
======================= =================================
0 ... 400 000 [exp( 0 )-exp(-0.59)] = 0.447
400 000 ... 800 000 [exp(-0.59)-exp(-1.19)] = 0.250
800 000 ... 1 200 000 [exp(-1.19)-exp(-1.78)] = 0.135
1 200 000 ... 1 600 000 [exp(-1.78)-exp(-2.37)] = 0.075
1 600 000 ... 2 000 000 [exp(-2.37)-exp(-2.96)] = 0.042
2 000 000 ... 2 400 000 [exp(-2.96)-exp(-3.55)] = 0.023
Hier ist ein Diagramm, dass Exponential Distribution vergleicht die Theorie mit der beobachteten Verteilung der Spiele.

Die Leistung von Pierre's Algorithmus über 36 Spiele abgeschlossen
Obwohl es nur sehr wenige Spiele in diesem Datensatz, ist es offensichtlich, dass das Modell ist ziemlich gut in passender der Verteilung beobachtet.
Pierre's Einführung zu seinem Algorithmus:
Pierre begonnen Arbeit an diesem Stück ein-Algorithmus in 2003,1.
Pierre mir eine E-Mail über seinen Algorithmus auf 2003.4.9, melden den folgenden Leistung über 20 aufeinander folgenden Spielen:
Game 1 : 1 213 220 rows
Game 2 : 876 618 rows
Game 3 : 37 327 rows
Game 4 : 260 337 rows
Game 5 : 165 349 rows
Game 6 : 2 288 991 rows
Game 7 : 1 112 094 rows
Game 8 : 138 648 rows
Game 9 : 107 089 rows
Game 10 : 1 284 387 rows
Game 11 : 935 011 rows
Game 12 : 80 766 rows
Game 13 : 253 158 rows
Game 14 : 1 877 331 rows
Game 15 : 145 034 rows
Game 16 : 888 081 rows
Game 17 : 433 694 rows
Game 18 : 15 446 rows
Game 19 : 494 498 rows
Game 20 : 16 273 rows
Average is 631167 completed rows.
"Der Algorithmus ist implementiert in Turbo Pascal und vervollständigt 7000 Zeilen / Min. Athlon 1600+ mit ein."
Ich konvertiert Pierre's Algorithmus zu C++ auf 2003,6, nachdem mehrere E-Mail-Austausch mit Pierre. Wir stellte fest, dass das A.I. im C++ Version aus dem gleichen Entscheidungen des Pascal Version.
Ich beobachtete ähnliche Performance zu seinem ursprünglichen Bericht; durchschnittlich rund 650000 Zeilen abgeschlossen, und einige Spiele Vollendung 2 Millionen Zeilen.
Unglaublich!
10.2 Gespräch mit Pierre Dellacherie
[1] Wann haben Sie zum ersten Mal schaffen, diesen Code?
Ich arbeite seit über den Algorithmus ab Ende Januar 2003 bis jetzt.
[2] Wie lange haben Sie gearbeitet?
Ich arbeitete sie in fast jede Woche ... aber nicht jeden Tag lang, da ich noch andere Aktivitäten: Ich habe leider Geld zu verdienen wie jeder andere!
[3] Was inspiriert das Design der Code?
Ich spielte Tetris 10 oder 15 Jahre alt, aber ich hatte nicht wieder für eine lange Zeit. Ich würde sagen, dass ich einen "durchschnittlichen" Spieler, kennt die Regeln und einige Tricks.
Allerdings, als ich begann die Arbeit an den Algorithmus habe ich nicht so viel spielen, weil ich fand es war eher eine effektivere, um den Computer zu spielen und zu analysieren, seine Schwächen.
[4] Haben Sie eine Automatisierung zu „trainieren“ Ihren Code besser zu funktionieren? Haben Sie noch Feedback zur Verbesserung der Algorithmus?
Oder haben Sie einfach nur die Ergebnisse ansehen und entscheiden, um Änderungen?
Ich komme aus „der alten Schule:“ Ich sah nur die Ergebnisse und beschlossen, Änderungen machen.
"Automatisches Lernen" ist eine Art Meta-Algorithmus, damit ich bin nicht versichert, dass er tun würde diese Weise einfacher, da dieser Meta-Algorithmus hätte gebaut werden, und auch das ist nicht so einfach!
Was mehr ist, stimme ich wieder mit Roger Penrose, wenn er sagt (in seinem Buch "Shadows of the mind"), dass die menschliche Verständnis und Intuition kann nicht algorithmische (Beispiel: berechenbar).
[5] Wann haben Sie zum ersten Mal starten Tetris spielen, und wann hatten Sie die Idee zur Lösung von Tetris mit einem A.I.?
Ich unterrichte und algorithmische Computerprogrammierung (Turbo Pascal und Scilab) für Studenten, Zug für Aufnahmeprüfung in Diplom-Ingenieurin der Schulen.
Auf den ersten, "Computer spielt Tetris" war eine Idee, ich wollte für meine Entwicklung im nächsten Jahr Studenten.
Ich war mir nicht bewusst, Ihrer Webseite, als ich begann die Arbeit an den Algorithmus.
Ich hatte Glück, dass sich bewusst sein, Ihrer Web-Seite nur ein paar Wochen, weil ich glaube, ich hätte entmutigt durch Ihre Ergebnisse (wie du vielleicht erraten, die frühen Versionen von meinem Algorithmus nicht so gut spielen!).
[6] Was ist Ihre aktuelle Status?
Ich bin fast 30 [vor 2003 27. April]. Ich habe mehrere Tätigkeiten: Ich bin ein Cellist, ich komponiere Musik und Ich unterrichte Computer-Programmierung.
Ich habe einen Master-Abschluss in Musikwissenschaft (1994) und ein "Artificial Intelligence and Algorithmic" Diplom (1998).
In Frankreich diesem Diplom entspricht dem 5. Jahr Studium an der Universität (4. Jahr ist der Master-Grad und 6. Jahr ist die These).
Pierre's Kompositionen:
[7] Wo wohnst du?
Ich bin Französisch und ich wohne in Rouen (Normandie).
[8] Weitere Kommentare:
Irgendwann habe ich keine neue Idee zu verbessern.
Ich habe versucht so viel nutzlos (und dumm) Dinge, die ich bezweifle es verbessert werden könnte.
Auf der anderen Seite, ich denke, es bestehen können völlig unterschiedliche Algorithmen der hätte besser Performances.
Übrigens, ein schneller Test bestehen in der Einleitung die Stücke in einem halb-Box (10 Zeilen x 10 Spalten): In einer halben Kasten, mein Algorithmus macht einen Durchschnitt von 280 Zeilen abgeschlossen.
Eine weitere Sache: Der Algorithmus kann leicht verändert in einer Doppel-Schicht-Algorithmus ([Ich werde] die Tests in Kürze).
Ich liebe Filmmusik: zum einen Film Komponisten ist ein Teil meiner Träume wichtigsten (aber es ist nur Traum!).
11. Beste menschliche Spieler in der Welt
11.1 Japanisch Tetris Master (2001 Januar 27) Video

Tetris Meister (2001, Japan) Video
Arika präsentiert der japanische Tetris Finals Meister (2001 Januar 27). "TETRIS THE ABSOLUTE PLUS --The Grandmaster2-- DEATH-MODE"
12. Rückmeldung
12.1 Slashdot-Thread (2003)
Im Jahr 2003, mein Tetris A.I. Projekt wurde diskutiert über die Slashdot Internet-Forum (
http://slashdot.org).

Slashdot (http://slashdot.org) Internet-Forum Überschrift für eine Diskussion über mein Projekt Tetris A.I.
Benefactor of mankind--thank you! (Score:4, Funny)
by EnlightenmentFan (617608) on Tuesday January 28, @02:29PM
(#5176294)
(http://betsydevine.weblogger.com/ | Last Journal: Tuesday
January 21, @01:55PM)
Now I can set up computer #1 to play an infinite, obsessive
game of Tetris on computer #2, leaving me free at last to sit
down at computer #3 and get some work done. The $200 for
webcam and other hardware is cheap for an invention like this,
with the revolutionary potential of the wheel, or fire, or
even pizza delivery.
Thank you! Thank you! Thank you!
[ Reply to This ]
The New 4th law... (Score:5, Funny)
by gokubi (413425) on Tuesday January 28, @02:09PM (#5176135)
(http://www.gokubi.com/kinggeorge)
1. A robot may not injure a human being, or, through inaction,
allow a human being to come to harm.
2. A robot must obey the orders given it by human beings
except where such orders would conflict with the First Law.
3. A robot must protect its own existence as long as such
protection does not conflict with the First or Second Law.
4. A robot must never place the long skinny ones horizontally,
unless it leads to a long skinny vertical hole so 4 rows can
be cleared at once the next time a long skinny one comes
around.
[ Reply to This ]
Re:The New 4th law... (Score:5, Funny)
by GuyMannDude (574364) on Tuesday January 28,
@02:14PM (#5176179)
I thought Directive 4 was that any attempt to arrest a
senior officer of OCP Corporation would result in
immediate shutdown!
GMD
[ Reply to This | Parent ]

Comic inspiriert von meinem Tetris A.I. Projekt (2003) (das erste Mal, dass ich jemals ein Comic inspiriert!)

Comic inspiriert von meinem Tetris A.I. Projekt (2003) (das zweite Mal, dass ich jemals ein Comic inspiriert!)
13. Die Geschichte des Tetris A.I. Projekt
Im Frühjahr 1989 war ich damit beschäftigt Skipping (und nicht) das zweite Halbjahr freshman Klassen in der University of Pennsylvania.
Einer meiner Mitbewohner, Bill Matthews, hatte die Mac Classic, und manchmal spielte Videospiele.
Die Leute bekommen, deren Zulassung zum Ivy League Schulen sind in der Regel bereit, im Wettbewerb mit anderen Menschen zu allen Zeiten - so, wenn Bill bekam das Spiel Tetris für seine Mac, begannen wir sofort einen langfristigen Kampf um die Highscore.
Da die Bewertungen kletterte der Zeit, Investitionen erforderlich, um einen kleinen Gewinn drastisch erhöht.
Um eine lange Geschichte kurz-, Bill angeblich hält die Highscore zwischen uns, aber ich vermute, der ihn mit ResEdit Hacking und der Partitur-Datei!
Bill hatte Klassen in der Wharton School of Business, die alma mater von Michael Milken und Donald Trump, so ist es nicht unvorstellbar, dass jemand ein manipulierten unmöglich Highscore ...
Im Sommer 1990 ausgeliehen ich ein 30 MHz Intel 80386 IBM PC von meinem Mitbewohner, Alex Haidas.
Ich kaufte mir ein Mac Tastatur auf einem Flohmarkt für $ 1.
Ich baute Parallel-Port-Schaltung, damit die PC zur Kontrolle der Mac Tastatur.
(Ich habe ein CMOS 4040 Chip als eine Art von Solid-State-Relais zum Beitritt Tastatur Kontakte innerhalb der Mac Tastatur.)
Ich schrieb ein Computerprogramm, das eine Entscheidung Baum als ihre Strategie für die Wiedergabe des Spiels Tetris. In nur wenigen Wochen hatte ich ein PC spielt die Tetris-Spiel läuft auf einem Mac.
Aber ich war erforderlich, um die Nutzung PC Tastatur zu sagen, die A.I. über jedes Stück fallen auf dem Bildschirm.
Ich fing an einem Stromkreis mit CdS (Cadmium Sulfide) Licht-Detektoren, die gegen die schlanke Mac Bildschirm und "sehen" die fallenden Stücke, aber CdS Sensoren reagierten zu langsam auf Veränderungen der Helligkeit und der Kontrast zwischen Tetris Stücke und der Hintergrund auf dem Bildschirm Mac Classic war zu niedrig, um zuverlässig zu diskriminieren.
In jenen Tagen hatte ich nicht viel Geld, so war es zu riskant zu kaufen, ein $ 2 Radio Shack Phototransistor das vielleicht nicht tun, was ich wollte.
Auch angesichts der Kontrast Problem, war ich pessimistisch, was den gesamten Ansatz.
Als ich mein erstes kaufte Personal Computer im Jahr 1996, konnte ich nicht bekommen Software unter Windows 95 auf einem 100 MHz CPU zu tun, Video-Verarbeitung schnell genug, um eine einfache Vision-System arbeiten.
Ich schrieb das Bild Verarbeitung Code in Assemblersprache, aber es war so viel Overhead, bevor mein Code tatsächlich empfangenen Videodaten, dass es schien unmöglich, alles zu tun lohnt.
Im Jahr 2003, Technologie, insbesondere CPU Geschwindigkeit, hatte ein Niveau erreicht, die Ziellinie das Projekt fast trivial.
Ich grub meine alten persönlichen Projekt-und endlich fertig ist, bekommen ein Gefühl der Schließung.
Es war sehr spannend zu sehen, ein Computer spielen einen anderen Computer über das USB Videokamera und die Relais.
Der Klang der Relais Klick, und beobachten die Stücke Spin-and-Drop zu lächerlich, übermenschliche Geschwindigkeiten, machte die Erfahrung sehr befriedigend multisensorische in einer Art und Weise.
Im Jahr 2003 wurde meine Arbeit anerkannt Slashdot (
http://slashdot.org), und ich erhielt viele großartige Feedback.
Ich war eingeladen, erscheinen auf der "Screen Savers" Fernsehen auf dem digitalen Fernsehen TechTV Netzwerk.
Ich ging nach San Francisco und erschien in der Show, und die Erfahrung war großartig.
Später im 2003 erhielt ich eine Nachricht von Henk Rogers, die Einladung nach Hawaii zu treffen und ihm zu Alexey Pajitnov-to-talk über den Aufbau einer Art Norm für Tetris, für die Zwecke der mit Tetris-Turniere.
Ein besonderes Interesse galt ermöglicht Spielern Nutzung des Mobiltelefons zu „konkurrieren miteinander,“ indirekt über A.I. imitiert, dass Spieler (nach vorheriger Analyse der einzelnen Spielers Aktionen), wodurch die Auswirkungen von Handy-Internet-Zugang Latenz, und damit Spieler „konkurrieren gegen“ * Die besten menschlichen Spieler in der Welt (*... oder, besser gesagt, A.I. imitiert die besten menschlichen Spieler in der Welt).
Ich war begeistert von der Aussicht auf eine Sitzung der Schöpfer von Tetris. Leider, Fliegen macht mir Angst, und ich ging die Einladung.
Im Jahr 2006 habe ich meine umgewandelt "Standard Tetris"-Software von C++ zu C#, um die Software besser zugänglich und nützlich zu zeitgenössischen Programmierer.