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

1. Λογισμικό

StandardTetris_2007June4.zip
Tetris πηγαίου κώδικα (C# και C++ εκδόσεις) και το πρόγραμμα ("exe")?
4068277 bytes
MD5: 4e957e0ead66064183e9f7e04e618ec0

2. Εισαγωγή

Αυτό το άρθρο περιγράφει τον τρόπο με τον οποίο ένας υπολογιστής μπορεί να παίξει το κλασσικό παιχνίδι βίντεο από Tetris να βρει πληροφορίες για το διοικητικό συμβούλιο, τον προσδιορισμό καλών δράσεις, καθώς και τη διενέργεια των εν λόγω δράσεων.
Το άρθρο αυτό περιλαμβάνει λογισμικό ικανό να παίζει Tetris σε πραγματικό χρόνο.
Το λογισμικό περιλαμβάνει τις καλύτερες σε πραγματικό χρόνο Tetris-playing αλγόριθμο στο δημόσιο τομέα.
Το άρθρο αυτό ορίζει τους κανόνες για "Standard Tetris," η προδιαγραφή που βασίζεται στο πρωτότυπο 1986 προ-εμπορική έκδοση του Tetris για τα Personal Computer (PC).
Σε 2003, το λογισμικό που περιλαμβάνεται στο άρθρο αυτό χρησιμοποιήθηκε για να μπορέσει ένας υπολογιστής για να παίξει Tetris τρέχουν σε ένα ξεχωριστό υπολογιστή.
Μια τακτική USB βιντεοκάμερα χρησιμοποιήθηκε για να μπορέσει ο υπολογιστής "να" δει την οθόνη του άλλου υπολογιστή.
Ένα ρελέ του σκάφους ήταν ελεγχόμενη μέσω διεπαφής RS-232 να μπορέσει ο υπολογιστής να "πιέσετε τα πλήκτρα" στο πληκτρολόγιο του υπολογιστή τους άλλους.
Έτσι, ο πρώτος υπολογιστής έχει σχέση με το δεύτερο υπολογιστή που είναι παρόμοιο με ένα τυπικό ανθρώπινο παράγοντα η σχέση της με έναν υπολογιστή όταν παίζει Tetris?  Το παιχνίδι κατάσταση είναι γνωστή μόνο κοιτάζοντας την οθόνη, και παίκτης δράσεις μπορούν να κινηθούν μόνο μέσω ενός πληκτρολογίου .
Η ρύθμιση σε αυτή τη διαδήλωση απέδειξε ότι ένας υπολογιστής μπορεί να παίξει Tetris καλύτερα από τον άνθρωπο, υπό κανονικές πραγματικό χρόνο παίζοντας Tetris συνθήκες.

3. Η ιστορία του Tetris

Σε 1985, Alexey Pajitnov και Dmitry Pavlovsky ήταν μηχανικοί ηλεκτρονικών υπολογιστών κατά τη Computing Center of the Russian Academy of Sciences.
computer_center_russian_academy_of_sciences.jpg
Dorodnicyn Computing Centre του Russian Academy of Sciences
http://www.ccas.ru
Alexey και Dmitry ενδιαφέρονται για την ανάπτυξη και πώληση ηλεκτρονικών παιχνιδιών εθιστικό.
Θα δοκιμαστεί εκτίθενται πολλά διαφορετικά παιχνίδια.
Alexey ήταν εμπνευσμένο από τον αρχαίο ελληνικό παιχνίδι παζλ, Pentaminos, που εμπλέκονται μεσιτεία γίνει κομμάτια παζλ των πέντε τετράγωνα.
Alexey σκεφτεί την ιδέα του να οργανώνουν Pentamino κομμάτια που έπεσαν σε μια ορθογώνια στο κύπελλο, αλλά συνειδητοποίησα ότι τα δώδεκα διαφορετικά πέντε τετράγωνα σχήματα ήταν πολύ περίπλοκη για ένα video game.
Alexey μεταπήδησε στο "tetramino" χρησιμοποιώντας εφτά κομμάτια, γίνονται κάθε τέσσερα τετράγωνα.
Σε 1985.6, Alexey Pajitnov προγραμματιστεί η πρώτη έκδοση του Tetris σε Electronica 60.
d_pavlovsky_and_a_pajitnov.jpg
Dmitry Pavlovsky, Alexey Pajitnov, και Tetris.
Σε 1985-1986, Vadim Gerasimov, μια 16-χρονη το Λύκειο υπολογιστή prodigy που εργάστηκε στην Ακαδημία, που εφαρμόζονται για το Tetris IBM PC τρέχουν MS-DOS το λειτουργικό σύστημα.
(Vadim Gerasimov αργότερα έκαναν την έρευνα, σε MIT Media Laboratory, από το 1994 μέχρι και το 2003, τη λήψη διδακτορικού, μετά την ολοκλήρωση πολλά ενδιαφέροντα έργα: http://vadim.www.media.mit.edu)
original_tetris_splash_screen02.jpg
Η εισαγωγή της οθόνης του 1987-1988 πριν από την εμπορική απελευθέρωση του Tetris για την PC
original_tetris_start_game02.jpg
Η οθόνη του παιχνιδιού της 1987-1988 πριν από την εμπορική απελευθέρωση του Tetris για την PC
Μετά 1987, Tetris εξαπλωθεί σε ολόκληρο τον κόσμο.
The Tetris Company, LLC, το Tetris είναι ιδιοκτήτης εμπορικών σημάτων.
www_tetris_com_site.jpg
The Tetris Company, LLC, ιστοσελίδα στο Διαδίκτυο (όπως φάνηκε στο 2003).  http://www.tetris.com

4. Έργα εμπνευσμένα από Tetris

4.1 0 διαστάσεων Tetris

Δεν έχει ακόμη αναπτυχθεί.

4.2 1-διαστάσεων Tetris

Ziga Hajdukovic ανέπτυξε 1-διαστάσεων Tetris λογισμικό το οποίο μπορεί να παιχτεί σε ένα πρόγραμμα περιήγησης στο Internet.
tetris_1d_ziga_hajdukovic.jpg
1-διαστάσεων Tetris από Ziga Hajdukovic http://www.tetris1d.org
Ziga Hajdukovic έχει επίσης αναπτύξει 1-διαστάσεων Tetris λογισμικό για κινητά τηλέφωνα που χρησιμοποιούν την πλατφόρμα Java J2ME.
(Εγκύκλιος: http://www.tetris1d.org/mobile.php?  WAP λήψης: http://www.tetris1d.org/wap)

4.3 2-διαστάσεων Tetris

Όλα τα συμβατικά Tetris παραλλαγές σε αυτή την κατηγορία.
Η ενότητα αυτή περιλαμβάνει ενδιαφέρουσες παραλλαγές.

4.3.1 Μεγαλύτερο παιχνίδι Tetris ποτέ: Delft University of Technology (1995)

delft_univ_1995_2000sqmeters_tetris1.gif
Tetris παίζονται σε ένα κτίριο?  2000 m^2 επιφάνεια?  Delft University of Technology (1995)
delft_univ_1995_2000sqmeters_toveren.jpg
Tetris παίζονται σε ένα κτίριο?  2000 m^2 επιφάνεια?  Delft University of Technology (1995)

4.3.2 Ένα άλλο Tetris παιχνίδι παίζεται σε ένα κτίριο: Brown University (2000)

brown_university_bastille_tetris_tetris_game_square.jpg
Tetris παιχνίδι που εμφανίζονται με χρήση φώτων σε παράθυρα του κτιρίου σε Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
brown_university_bastille_tetris_woz_play.jpg
Steve Wozniak, cofounder των Apple Computers, παίζοντας Tetris?  Brown University (2000) http://bastilleweb.techhouse.org
"Νομίζω ότι ήταν απλώς η πιο απίστευτη μονοήμερης πράγμα που θα μπορούσε να φανταστεί στη ζωή μου.  Όπως είπε Steve δουλειές πάντα, το ταξίδι είναι η ανταμοιβή."
"Θα γίνουν έργα μου σκέφτονται το κάναμε πίσω στο κολέγιο.  Πράγματα που ήταν σχεδόν αναιρεθεί ότι οι άλλοι άνθρωποι δεν θα κάνουν να σκεφτούμε."
Steve Wozniak (2000)

4.3.3 Πρόγραμμα περιήγησης στο Internet παιχνίδι με MIT "Green Building" εικόνας

tetris_vadim_green_building3.jpg
Vadim Gerisimov's πρόγραμμα περιήγησης στο Internet Tetris
http://vadim.www.media.mit.edu/games/gbt.html
Αυτό το πρόγραμμα περιήγησης στο Internet Tetris παραλλαγή αυτή δημιουργήθηκε από Vadim Gerasimov.
Αυτό το πρόγραμμα περιήγησης στο Internet Tetris χαρακτηριστικά ο "Green" κτιρίου στην πανεπιστημιούπολη της MIT.
Αυτή η παραλλαγή Tetris μόνο έχει εννέα στήλες, αντί του κανονικού δεκα στήλες.
Αυτή η παραλλαγή Tetris παρουσιάζει τα νέα κομμάτια με τυχαίες κατευθύνσεις.
Vadim Gerasimov είναι το πρόσωπο που έγραψε ο υπολογιστής PC κώδικα για την έκδοση του Tetris στο 1986.
Vadim Gerasimov έκανε Διδακτορικό έρευνας στο MIT Media Laboratory κατά 1994-2003, που εργάζονται για πολλά ενδιαφέροντα έργα.

4.3.4 PIC16F84 12 MHz μικροελεγκτή που βασίζεται NTSC / PAL video game Tetris

tetris_pic_television_screen.jpg
PIC16F84 12 MHz μικροελεγκτή που βασίζεται NTSC / PAL video game Tetris
http://www.pablin.com.ar/electron/circuito/mc/tetris
Η παραπάνω εικόνα δείχνει την έξοδο NTSC / PAL βίντεο που παράγονται από ένα PIC16F84 12 MHz μικροϋπολογιστικά τρέχουν λογισμικό γραμμένο από Rickard Gunee στο 1998.
Το σήμα βίντεο προέρχεται από λογισμικό ελέγχου των ψηφιακών υλοποιήσεων.
Άλλα έργα PIC: http://etronics.free.fr/liens5.htm

4.3.5 "Scopetris" παλμογράφο Tetris από Lars Pontoppidan (2007.8)

scopetris_lars_pontoppidan_2007_aug.jpg
"Scopetris" παλμογράφο Tetris από Lars Pontoppidan (2007.8)
http://pontoppidan.info/lars/index.php?proj=scopetris
Lars Pontoppidan έγραψε τον κώδικα για τη AtMega32 μικροελεγκτή, και πρόσθεσε απλή αναλογική κυκλώματα, για να δημιουργήσετε ένα Tetris έκδοση που θα μπορούσε να παίξει για έναν παλμογράφο.
Ορισμένα μητρώα του ελέγχου AtMega32 μικροϋπολογιστικά 8-bit σήματα εξόδου, και, όταν περάσει μέσω μιας "R-2R" αντίσταση ηλεκτρικού κυκλώματος για την ψηφιακή-αναλογική (D/A) μετατροπής, οι προκύπτουσες αναλογικά σήματα μπορούν να ελέγχουν τις συντεταγμένες των (x,y) έναν παλμογράφο δοκού (όταν το παλμογράφο είναι που να "X-Y mode)."
YouTube βίντεο:
http://www.youtube.com/watch?v=Hui5Azx5jQo
FLV βίντεο:
scopetris_lars_pontoppidan_2007_aug.flv

4.3.6 Obfuscated code Tetris: C / Unix

Οι παρακάτω ανατέθηκε "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);}
Αναφορά: http://homepages.cwi.nl/~tromp/tetris.html

4.3.7 Obfuscated code Tetris: Perl κωδικός

Τα παρακάτω είναι για το Tetris Perl διερμηνέας: Perltris (έκδοση 20050717) από Sean Adams.
#!/usr/bin/perl

$_='A=15; B=30; select(stdin); $|=1; select(stdout);$|=1; system
"stty -echo -icanon eol \001"; for C(split(/\s/,"010.010.010.010
77.77 022.020.020 330.030.030 440.044.000 055.550.000 666.060.".
"000")){D=0;for E(split(/\./,C)){F=0;for G(split("",E)){C[P][F++
][D]=G} D++}J[P]=F; I[P++] =D}%L=split(/ /,"m _".chr(72)." c 2".
chr(74)." a _m");sub a{for K(split(/ /,shift)){(K,L)=split(/=/,K
);K=L{K};K=~s/_/L/; printf "%c[K",27}}sub u{a("a=40");for D(0..B
-1){for F(0..A-1){M=G[F][D];if(R[F][D]!=M) {R[F][D]=M;a("m"."=".
(5+D).";".(F*2+5)); a("a=".(40+M).";" .(30+M));print " "x2}}}a(
"m=0;0 a=37;40")}sub r{(N)=@_;while(N--) {Q=W;W=O=H;H=Q;for F( 0
..Q-1){for D(0..O-1) {Q[F][D]=K[F][D]}}for F(0..O-1){for D(0..Q-
1){K[F][D]= Q[Q-D-1][F]}}}}sub l{for F(0..W-1){for D(0..H-1){(K[
F][D]&& ((G[X+F][Y+D])|| (X+F<0)||(X+F>=A)|| (Y+D>=B)))&& return
0}}1}sub p{for F(0..W-1){for D(0..H-1){(K[F][D]>0)&&(G[X+F][Y+D]
=K[F][D]) }}1}sub o{for F(0..W-1){for D(0..H-1){(K[F][D]>0)&&(G[
X+F][ Y+D]=0)}}}sub n{C=int(rand(P)) ;W=J[C];H=I[C];X=int(A/2)-1
;Y=0;for F(0..W-1){for D(0..H-1){K[F][D]= C[C][F][D]}}r(int(rand
(4)));l&&p}sub c{d:for(D=B;D>=0;D--){for F(0..A-1){G[F][D]||next
d}for(D2=D;D2>=0; D2--){for F(0..A-1){G[F][D2]= (D2>1)?G[F][D2-1
]:0; }}u;}}a ("m=0;0 a=0;37;40 c");print "\n\n".4x" "." "x(A-4).
"perltris\n".(" "x4)."--"xA."\n".((" "x3)."|"." "x(A*2)."|\n")xB
.(" "x4). "--"xA."\n";n;for(;;) {u;R=chr(1); (S,T)=select(R,U,V,
0.01);if(S) {Z=getc;}else {if($e++>20){Z=" ";$e=0;}else{next;} }
if(Z eq "k"){o;r(1);l||r(3);p}; if(Z eq "j"){o;X--;l||X++;p}; if
(Z eq "l"){o;X++;l||X--;p};if(Z eq " "){o;Y++;(E=l)||Y--;p;E|| c
|c|c|c|c|n||goto g;};if(Z eq "q"){last;}}g: a("a=0 m=".(B+8).";0
" ); system "stty sane"; '; s/([A-Z])/\$$1/g; s/\%\$/\%/g; eval;
Αναφορά: http://www.seanadams.com/perltris

4.3.8 Mozilla SVG Tetris

Scalable Vector Graphics (SVG) είναι ένα πρότυπο για την περιγραφή των αντικειμένων με χρήση γραφικών XML.
tetris_svg_640x480.gif
Mozilla SVG Tetris: Tetris υλοποιείται χρησιμοποιώντας μια περιγραφή Scalable Vector Graphics (SVG)
http://www.croczilla.com/svg/samples/svgtetris/svgtetris.svg
Άλλα παραδείγματα SVG: http://www.croczilla.com/svg/samples

4.3.9 Google "widget" Tetris

Google, Yahoo!, και Microsoft, καθώς και άλλες εταιρείες, έχουν προωθηθεί μινιατούρα του λογισμικού που βασίζονται στο Internet με όνομα "widgets" που συνήθως χαρακτηρίζονται από κάποια χρήση δυναμικών στοιχείων που διατίθενται σχετικά με το Internet.
Μία τέτοια widget διαθέσιμα μέσω Google Tetris είναι ένα παιχνίδι.
Το ακόλουθο παράδειγμα είναι χαριτωμένος, αλλά τα σχήματα εναλλάσσονται στην ενοχλητική τρόπους:
tetris_google_widget.gif
Google "widget" Tetris
http://www.playbie.com/Game.aspx?gm=1&wt=2&su=live.com&sn=Google&gn=Google
Άλλα Google widgets:
http://www.google.com/ig/directory?synd=open

4.3.10 MIT έρευνα χαρτί: "Tetris is Hard, Even to Approximate" (2002)

Η παρακάτω έρευνα έγγραφο περιέχει μια απόδειξη ότι ένα ορισμένο είδος του Tetris είναι παραλλαγή "NP-πλήρης."
http://theory.csail.mit.edu/~edemaine/papers/Tetris_TR2002
Erik D.  Demaine, Susan Hohenberger, και David Liben-Nowell, "Tetris is Hard, Even to Approximate", Technical Report MIT-LCS-TR-865, Massachusetts Institute of Technology, 2002.10.21.
Τοπικά αποθηκευμένο αντίγραφο (PDF): tetris_theory_mit_lcs_tr_865_0210020.pdf
"NP-είναι" μια "πλήρης" ταξινόμηση του κόστους και του χρόνου χώρο του κόστους ενός αλγορίθμου.
Άλλες ταξινομήσεις περιλαμβάνουν "P" και "NP".
Η κατηγοριοποίηση των "NP-πλήρης" συνεπάγεται ότι, για ορισμένα προβλήματα μεγαλύτερα από το μικρό μέγεθος, ο αλγόριθμος είναι απίθανο να βρεθεί μια επιθυμητή λύση σε ένα πρακτικό ύψος του χρόνου ή χώρου.

4.3.11 Έρευνα εγγράφου: "Applying reinforcement learning to Tetris"

Το ακόλουθο έγγραφο, που δημοσιεύτηκε 2005.5.30, από Donald Carr στο Τμήμα Επιστήμης Υπολογιστών στο Rhodes University, Νότια Αφρική, παρουσιάζει η εφαρμογή του "στην ενίσχυση" της "μάθησης" για Tetris.
ApplyingReinforcementLearningToTetris_DonaldCarr_RU_AC_ZA.pdf

4.3.12 Tetris φούστα (2007.11)

tetris_skirt.jpg
Tetris φούστα (2007.11)
Το Tetris φούστα δημιουργήθηκε από "Lucy" ("hissyfitoly" για etsy.com) πριν από 2007.11.
Από το δημιουργό, η περιγραφή των φούστα (που προσφέρονται για πώληση στις 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."
Φόρουμ σχόλια σχετικά με αυτό το διάφραγμα:
"Ο άνθρωπος που απορροφά φούστα σε Tetris"
"Ahahahaha, σκέφτηκα το ίδιο πράγμα."
"Υπάρχει μια πλήρης γραμμή κάτω στο βυθό ...  ολοκληρωθεί γραμμές εξαφανίζονται."  "ΚΆΝΕΙ ΆΝΩ" "."
"Θα πρέπει να υπάρχει ένα σημείο στο μέτωπο ή το πίσω κομμάτι, όπου καιρό θα ταίριαζε απόλυτα ..."
"Αυτό είναι ένα πραγματικά άσχημο αν και διάφραγμα.  Μου φίλο μου δεν μπορούσε να αγοράσει σοκολάτες και αρκετά λουλούδια για να με πείσει να φορέσουν το πράγμα."

4.3.13 Tetris στάδιο πράξη (2007.4)

tetris_stage_act.jpg
Tetris στάδιο πράξη (2007.4)
http://www.youtube.com/watch?v=sZrs8ZCO8xM
"Από αυτά που σας έφερε την Triforce στο 2006 ...  Έρχεται η επόμενη γενιά των inanimate αντικείμενο skit ...  Tetris."
Αποθηκευμένη τοπικά στο βίντεο Flash βίντεο (FLV) μορφή (χρήση VLC για να παίξει):
tetris_stage_act.flv

4.3.14 Hilarious Tetris παραλλαγές σε μια ιαπωνική τηλεόραση δείχνουν

tetris_funny_variations_japanese_tv.jpg
Tetris διακυμάνσεις στις ιαπωνική τηλεόραση δείχνουν
http://www.youtube.com/watch?v=SYRLTF71Sow
Το βίντεο αυτό το τμήμα από μια ιαπωνική τηλεόραση δείχνουν περιλαμβάνει hilarious παραλλαγές του Tetris, συμπεριλαμβανομένων:
κομμάτια που εξαφανίζονται κατά την εκφόρτωση, ένα κομμάτι που συμπληρώνει μια ολόκληρη σειρά (ολοκληρώνοντας έτσι μια γραμμή κατά την εκφόρτωση), πολλαπλά κομμάτια που υπάγονται ταυτόχρονα, ακανόνιστα σε σχήμα κομμάτια, ένα μακρύ κομμάτι που είναι λίγο υπερβολικά μεγάλη για να χωρέσει σε ένα χάσμα (αποτρέποντας μια 4-γραμμή ολοκλήρωση!), Mario χτυπήσει μια μανιτάρι και να γίνει τεράστια και πεθαίνουν!, μικρό κομμάτι συντρίμμια που απομένει μετά σειρές έχουν καταστραφεί, ανοδική βαρύτητας κάνοντας κομμάτια float στην αρχή, κ.λπ.
Αποθηκευμένη τοπικά στο βίντεο Flash βίντεο (FLV) μορφή (χρήση VLC για να παίξει):
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
Από την περιγραφή YouTube:
"TETRIS έπαιξε η πραγματική ανθρωπίνων όντων-καθιστικό σε ένα αμφιθέατρο:"
TETRIS είναι η 4 η επίδοση του βίντεο GAME OVER Project, κατευθυνόμενη από τις ελβετικές καλλιτέχνη Guillaume REYMOND (NOTsoNOISY δημιουργικό γραφείο).
Αυτό το stop-κίνηση βίντεο γυρίστηκε και έπαιξε για "LES URBAINES" φεστιβάλ http://www.urbaines.ch στο Palais de Rumine (Λωζάννη, Ελβετία) για November 24th 2007.
Μπορείτε να βρείτε περισσότερες πληροφορίες και επίσης SPACE INVADERS, PONG και POLE POSITION στην ιστοσελίδα μας http://www.notsonoisy.com/gameover
Αποθηκευμένη τοπικά στο βίντεο Flash βίντεο (FLV) μορφή (χρήση VLC για να παίξει):
tetris_with_human_blocks_guillaume_reymond_2007nov.flv

4.3.16 2.5-διαστάσεων Tetris

Ο όρος "2.5-διαστάσεων" χρησιμοποιείται εδώ σημαίνει μη ορθή άποψη των δύο διαστάσεων έκδοση του Tetris, με κάποιο πάχος στην τρίτη διάσταση.
tetris_2andhalfd_andre_michelle.jpg
Andre Michelle's Tetris παιχνίδι για Flash παίκτης http://lab.andre-michelle.com
(Βρείτε το link "tetris3d" στο "F7: GAMES".)

4.4 3-διαστάσεων Tetris

tetris_3d_gno3dtet_seb.jpg
Linux / GTK έκδοση
Τρισδιάστατο Tetris με τη μορφή ενός Java applet για τον Internet browsers:
http://paperstack.com/brokout
Τρισδιάστατο Tetris Windows για το λειτουργικό σύστημα:
http://www.sfu.ca/~vwchu/3dtetris.html

4.5 4-διαστάσεων Tetris

4d_tetris.jpg
Greg Kaiser's "HyperTetris" (1996): 4-διαστάσεων Tetris
Σε [1996], [...], Greg Kaiser φτιάχνεται ένα τεσσάρων διαστάσεων παραλλαγή για το κλασικό παιχνίδι.
Χρησιμοποιώντας IrisGL (a.k.a.  igl) δημιούργησε μία ομάδα εργασίας, αν σκληρά για να παίζουν, το παιχνίδι χρησιμοποιώντας τέσσερα υπο-οθόνες που απεικονίζουν διάφορα τρισδιάστατα πτυχές του συνόλου του παιχνιδιού-space.
[Επειδή] δεν υπάρχει εύκολα [κατανοητή] τρόπος για να αντλήσει τα τέσσερα Δ αντικείμενα σε δύο Δ οθόνη, οι τέσσερις επιμέρους απόψεων είναι ένας πρακτικός τρόπος για να χειραγωγήσουν και την οπτικοποίηση της εναλλαγής και της μετάφρασης των κομματιών μέσω των τεσσάρων διαστάσεων ( στο παιχνίδι που ονομάζεται x,y,z,w).
Αντί να ολοκληρώνει τις γραμμές του μπλοκ όπως και στο πρωτότυπο, ο στόχος σε αυτή την περίπτωση είναι να συμπληρώσουν μια πλήρη κύβο στην x,y,z subview (συνήθως 4 έως τις 4 από 4).
Η άλλη subviews τα οποία περιέχουν τις "w" διάσταση είναι διατεταγμένα σε ένα προεπιλεγμένο 4 από 4 μέχρι 10 block διακανονισμό με "w" είναι το μακρύ, "vertical" διάσταση στις τρεις περιπτώσεις, με διαφορετικές βάσεις (x,y), (x,z), (y,z).
Σοβαρότητα των πράξεων στα "-w" κατεύθυνση, τόσο κομμάτια πτώση "προβλέπεται" στις τρεις μεγάλες subviews που περιλαμβάνουν "w", και δεν μετακινούνται εκτός εάν από τον παίκτη του ελέγχου, στην τελευταία (x,y,z) subview.
Λαμβάνει awhile να το συνηθίσετε, να πούμε το λιγότερο.
Εάν από κάποιο θαύμα υπομονής ή αλλάζοντας τις παραμέτρους του παιχνιδιού ο ένας κύβος έχει ολοκληρωθεί, θα εξαφανιστούν ως ολοκληρωθούν οι γραμμές κάνουν στην αρχική Tetris, αν και δεν βαθμολογία βρίσκεται σε HyperTetris.
Benjamin Bernard (2000)
http://archive.ncsa.uiuc.edu/Classes/MATH198/bernard/oldIndex.html

4.6 N διαστάσεων Tetris

polytope_tetris_screenshot3.jpg
Polytope Tetris (2003): N διαστάσεων παιχνίδι Tetris παραλλαγή
http://polytopetetris.sourceforge.net
Polytope Tetris είναι n-dimensionally Tetris.
Εμπνευσμένη από το πρόγραμμα HyperTetris, Polytope Tetris σας επιτρέπει τόνους παίξει Tetris σε κάθε ΑΡΙΘΜΌ ΤΩΝ διάσταση.
Play Tetris στο 3D, 4D, 5D, ή και περισσότερο.
HyperTetris είναι πολύ catchier όνομα από Polytope (def) Tetris, αλλά δεν μπορώ να κλέψει το όνομα.
http://polytopetetris.sourceforge.net

5. "Standard Tetris" προδιαγραφή

5.1 Εισαγωγή

Ο ορισμός του "Προτύπου Tetris" είναι ένα εξιδανικευμένο μοντέλο από τα σημαντικότερα χαρακτηριστικά και τις συμπεριφορές του πρώτου IBM-PC εφαρμογή του Tetris παιχνίδι (περίπου 1986-1988).
Το εξιδανικευμένο μοντέλο βασίζεται στο συναχθεί η προφανής προθέσεις των προγραμματιστών του πρώτου IBM-PC εκτέλεση του παιχνιδιού Tetris.
Για παράδειγμα, φαίνεται λογικό να συμπεράνει ότι οι προγραμματιστές της πρώτης IBM-PC εφαρμογή του Tetris παιχνίδι προορίζεται να επιλέξετε το σχήμα κάθε νέο κομμάτι που υπάγονται "τυχαία," και ότι η χρήση του Borland C εφαρμογή του rand() λειτουργία ήταν απλώς μια πρακτική προσέγγιση των την πρόθεσή του.
Ο ορισμός του "Tetris Standard" διευκρινίζει ότι το σχήμα κάθε νέα πτώση είναι κομμάτι που θα επιλεγούν "τυχαία."
Αυτή η ιδανική συμπεριφορά δεν μπορεί να επιτευχθεί με κάθε εφαρμογή, αλλά και εφαρμογές μπορούν να προσεγγίσει την ιδανική συμπεριφορά.
Αν και δεν εφαρμογή μπορεί κάλλιστα να εφαρμόσουν τον ορισμό της "Standard Tetris," τα ιδανικά της "Standard Tetris" περιλαμβάνει αντικειμενικά χαρακτηριστικά και εφαρμογές μπορούν να συγκριθούν, ανάλογα με τη σχετική εγγύτητα προς τα ιδεώδη της "Standard Tetris."
Το τμήμα αυτό περιγράφει μια σειρά από στοιχεία, συμπεριφορές, και οι κανόνες, οι οποίοι, συλλογικά, να καθορίσει "Standard Tetris."

5.2 Standard Tetris σκάφους

Ο πίνακας είναι ένα πλέγμα κελιών, έχοντας 10 στηλών και 20 γραμμών, για ένα σύνολο 10 * 20 = 200 κύτταρα.
tetris_diagram_board_10x20_empty_new.jpg
Standard Tetris σκάφους (10 στήλες, 20 σειρές)
Κάθε κύτταρο μπορεί είτε να είναι ακατοίκητες (κενό) ή καταλαμβάνονται (πλήρης).

5.3 Standard Tetris τεμάχια

Υπάρχουν επτά (7) πρότυπο Tetris τεμάχια, με την ακόλουθη επιστολή ονόματα:
{ O, I, S, Z, L, J, T }
Η επιστολή ονόματα είναι εμπνευσμένο από το σχήμα των κομματιών.
tetris_diagram_pieces_orientations_new.jpg
Τα επτά τεμάχια Standard Tetris και τους "προσανατολισμούς"
Η τελεία στο (0,0) συμπίπτει με την θέση του σκάφους (6,20) όταν το κομμάτι εμφανίζεται για πρώτη φορά.
Η πρώτη στήλη δείχνει τις πρώτες "κατευθύνσεις."
Στη συνέχεια, ο "προσανατολισμός" είναι λέξη που χρησιμοποιείται για να περιγράψει οποιαδήποτε κατάσταση του ένα κομμάτι, μέσα σε ένα σύνολο επιτρέπεται αναφέρει, ότι μπορεί να προκληθούν από μια εκδήλωση προς τα περιστροφής.
Αλλαγή "προσανατολισμού" από ένα συγκεκριμένο "προσανατολισμό" της "I, S," ή "Z" κομμάτι, απαιτείται ο συνδυασμός της εναλλαγής και της μετάφρασης.
Ως εκ τούτου, ο "προσανατολισμός" είναι λέξη που χρησιμοποιείται εδώ σημαίνει κάτι περισσότερο από μόνη της εναλλαγής.
Ωστόσο, μπορούμε να αλλάξουμε "προσανατολισμό" μόνο σε απάντηση σε μια εκδήλωση προς τα εναλλαγή, και ο κύκλος της διακριτούς "προσανατολισμούς" για κάθε αποσκευή που προσεγγίζει, ή αγώνες, ο κύκλος που προκύπτει από καθαρή εναλλαγών.
Η ειδική χρήση της λέξης "προσανατολισμού" σε αυτό το πλαίσιο είναι σχεδόν ισοδύναμη με την έννοια της λέξης "περιστροφής" ή "γωνία," αλλά η λέξη "προσανατολισμό" χρησιμοποιείται αντί της "εναλλαγής" στην προσπάθεια να φέρει την προσοχή στο γεγονός ότι ορισμένα κομμάτια απαιτούν περισσότερα από εναλλαγής για την παραγωγή του σύνολο των μελών που απορρέουν από τη δυνατότητα "περιστροφής" προς τα γεγονότα.
Κομμάτια μπορεί μόνο να στραφούν κατευθύνσεις (ή υφίστανται ειδικές οριζόντιες ή κάθετες μετάφραση) εάν η προκύπτουσα κατάσταση του κομμάτι δεν θα έχει καμία κατεχόμενα (πλήρη) των κυττάρων πέρα από το χώρο του σκάφους και δεν θα έχει καμία κατεχόμενα κύτταρα τα οποία επικαλύπτει κάθε στιγμή κατεχόμενα κύτταρα του διοικητικού συμβουλίου.
(Σε αυτό τον κανόνα, τα κατεχόμενα (πλήρη) των κυττάρων του τεμαχίου, δεν θεωρούνται τμήμα του "καταλαμβάνεται σήμερα κύτταρα του διοικητικού συμβουλίου"
Στο εξής, κάθε αναφορά σε ένα αποτέλεσμα μιας περιστροφής προς τα εκδήλωση γίνεται με την παραδοχή ότι αυτή η εναλλαγή μπορεί πράγματι να εκτελεστούν, δεδομένων των υφιστάμενων συνθηκών του το κομμάτι και το διοικητικό συμβούλιο.
Η "O" (κουτί) κομμάτι έχει ένα μόνο ενιαίο προσανατολισμό, και δεν αλλάζει τις θέσεις οποιουδήποτε από τα κατεχόμενα (πλήρη) των κυττάρων σε ανταπόκριση σε κάθε περίπτωση προς τα περιστροφής.
Η "I" (γραμμή) κομμάτι έχει δύο δυνατές κατευθύνσεις, αρχικά εμφανίζεται σε οριζόντιο προσανατολισμό.
Το κομμάτι "I" αναπληρωτές μεταξύ των δύο κατευθύνσεις απαντώντας σε διαδοχικές προς τα γεγονότα εκ περιτροπής.
Η "S" και "Z" κομμάτια το καθένα έχει δύο πιθανές κατευθύνσεις.
Αυτά τα κομμάτια κάθε αναπληρωματικό μεταξύ δύο κατευθύνσεις απαντώντας σε διαδοχικές προς τα γεγονότα εκ περιτροπής.
Η "L", "J", και "T" κομμάτια το καθένα έχει τέσσερις δυνατές κατευθύνσεις, και αυτοί οι προσανατολισμοί, τα αποτελέσματα των απλών εναλλαγών κέντρο περίπου μονάδες σε σχέση με το σχήμα.
Όταν ένα κομμάτι εμφανίζεται για πρώτη φορά στο διοικητικό συμβούλιο, το κομμάτι έχει τον "βασικό άξονα" σε οριζόντιο προσανατολισμό, και το κομμάτι είναι στην κορυφή του διοικητικού συμβουλίου.
Ως εκ τούτου, δεν είναι αρχικά κομμάτια που μπορεί να έχουν αλλάξει τους προσανατολισμούς.  Το κομμάτι πρέπει να κατέλθει από μία γραμμή να έχουν τη δυνατότητα να αλλάξει τον προσανατολισμό του.
Μόλις ένα κομμάτι έχει μειωθεί κατά μία γραμμή στο ταμπλό, όλα κομμάτι κατευθύνσεις μπορεί να φθάσει (εάν υποτεθεί ότι το κομμάτι δεν είναι πάρα πολύ κοντά στα πλευρικά τοιχώματα ή να την τρέχουσα σωρός τεμάχια).

5.4 Standard Tetris διάγραμμα ροής

Το ακόλουθο είναι ένα διάγραμμα ροής για την προσέγγιση Standard Tetris παιχνίδι.
standard_tetris_flowchart_for_timer_event_001.gif
Πιθανή διάγραμμα ροής για ένα συνηθισμένο παιχνίδι Tetris
standard_tetris_flowchart_for_input_events_001.gif
Πιθανή διάγραμμα ροής για ένα συνηθισμένο παιχνίδι Tetris

5.5 Standard Tetris κομμάτι της δημιουργίας

Το ακόλουθο διάγραμμα δείχνει την (4 κελί κελί * 2) σχετικά με την περιοχή όπου όλα τα κομμάτια του σκάφους εμφανίζονται όταν δημιουργούνται.
tetris_diagram_board_10x20_spawn_area.jpg
Περιφέρεια όπου τεμάχια εμφανίζονται όταν δημιουργήθηκε το Πρότυπο Tetris
Όταν ένα νέο κομμάτι εμφανίζεται για πρώτη φορά στο διοικητικό συμβούλιο, την καταγωγή συμπίπτει με την τελεία σε αυτό το διάγραμμα, και το κομμάτι θα περιέχεται εντελώς από την σκιασμένη περιοχή για αυτό το διάγραμμα.
Όταν ένα νέο παιχνίδι έχει αρχίσει, σε πλήρη ελεύθερη πτώση καθυστέρηση διαρρέει, καθώς και την πρώτη ελεύθερη πτώση επανάληψη ενός κομματιού είναι spawned στην κορυφή του διοικητικού συμβουλίου.
Κατά τη διάρκεια του κανονικού παιχνιδιού, όταν ένα συγκεκριμένο ελεύθερη πτώση επανάληψη ένα κομμάτι "γη," μια πλήρης ελεύθερη πτώση καθυστέρηση διαρρέει και για την επόμενη ελεύθερη πτώση επανάληψη ενός κομματιού είναι spawned στην κορυφή του διοικητικού συμβουλίου.
Όταν ένα κομμάτι είναι spawned, το είδος του κομματιού είναι επιλεγμένο με τη χρήση του ακόλουθου αλγορίθμου:
pieceIndex = 1 + (randomInteger % 7);  // 1..7
Επειδή υπάρχει συνεχής p (= 1/7) πιθανότητες επιλογής ενός συγκεκριμένου είδους κομμάτι, και όλα τα κομμάτια του ίδιου τύπου είναι δυσδιάκριτες, η πιθανότητα έχοντας ακριβώς k τεμάχια του συγκεκριμένου τύπου μετά n εξετάσεις, ακολουθεί μια Διωνυμικής κατανομής:
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 )
Όταν θα επιλέξουν ένα από τα 7 (επτά) τεμάχια στην τύχη, η πιθανότητα του να είναι ένα συγκεκριμένο κομμάτι p=(1/7).
Αν το κάνουμε αυτό n=70 φορές, για παράδειγμα, η πιθανότητα να ακριβώς k τεμάχια (με k στο φάσμα 0 να n) δίνεται από το διωνυμικό διανομής, όπως φαίνεται στην ακόλουθη εικόνα.
binomial_distribution_n70_p7th.jpg
Διωνυμικής κατανομής για n=70, p=(1/7)
Έτσι, μπορεί κανείς να προβλέψει το μέσο όρο των συνολικών τεμαχίων ενός ενιαίου τύπου επί συνολικού αριθμού των τυχαίων κομματιών, και επίσης μπορεί κανείς να υπολογίσει την αναμενόμενη διακύμανση και τυπική απόκλιση (τετραγωνική ρίζα της διασποράς):
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
Όταν θα μετατρέψετε μια τυχαία τιμή με ένα κομμάτι του δείκτη, θα την ερμηνεύσει ως εξής:
value  piece
=====  =====
  1     "O"
  2     "I"
  3     "S"
  4     "Z"
  5     "L"
  6     "J"
  7     "T"
[Η προ-εμπορική MS-DOS έκδοση του Tetris τυχαίος αριθμός χρησιμοποιείται η λειτουργία που προσφέρει η Borland Pascal compiler.
Αυτή η λειτουργία χρησιμοποιείται ένα 32-bit μεταβλητή κατάσταση.
Ως εκ τούτου, η ακολουθία των τυχαίων αριθμών ήταν περιορισμένη σε 2^32 διακριτές αξίες.
Επομένως, κατ 'αρχήν, ένας παίκτης θα μπορούσε να ανακαλύψουν, μετά από ρίψη ίσως 10 κομμάτια, την ακριβή θέση στο σύνολο 2^32 αριθμούς που αντιστοιχούν στην τρέχουσα κατάσταση του παιχνιδιού.
Αν Tetris προσομοιώσεις εκτελούνται με την ακολουθία των σταθερών 2^32 κομμάτια, τότε η βέλτιστη αποφάσεις μπορούν να βρεθούν για κάθε θέση στη σειρά.
(Φαίνεται να υπάρχουν αρκετές ευκαιρίες για να είναι το συμβούλιο σε ένα εντελώς άδειο κατάσταση του σκάφους, που μας επιτρέπει να συγχρονίζεται με τη βέλτιστη λύση precomputed διαδρομή.)
Ο κίνδυνος από τη χρήση ενός απλού γεννήτρια τυχαίων αριθμών σε μια προσομοίωση που προορίζονται να βρούμε τη βέλτιστη λύση σε ένα πρόβλημα είναι ότι η βέλτιστη λύση θα είναι μόνο για τη συγκεκριμένη διαδρομή μέσα από το πρόβλημα χώρος επιλεγεί από την απλή γεννήτρια τυχαίων αριθμών.  ]

5.6 Standard Tetris ελέγχων

Κατά τη διάρκεια του παιχνιδιού, οι εισροές είναι διαθέσιμα παρακάτω:
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
Όλες οι εισροές να παράγει αποτελέσματα από την άνοδο της στάθμης των παρυφών των θετικών εισροών (για κουμπί Τύπου, σε αντίθεση με το κουμπί απελευθέρωσης).
Όταν ένα κουμπί εμφανίζεται Τύπο, αυτό που μετράει ως αίτημα.
Holding ένα κουμπί προβλέπεται πέρα από ένα ορισμένο χρονικό διάστημα μπορεί να έχει ως αποτέλεσμα την "αυτο-επαναλαμβάνω" χαρακτηριστικό του πληκτρολογίου, στη δημιουργία νέων κουμπί πρέσες - αλλά η δυνατότητα αυτή είναι ξένη προς το παιχνίδι του κινητήρα.
Οι συντελεστές που ορίζονται ανωτέρω συμφωνούν με το πρωτότυπο παιχνίδι Tetris.
Περιστρέψτε το αίτημα μπορεί να εκτελεσθεί εάν δεν υπάρχει επικάλυψη μεταξύ του επιθυμητού και προσανατολισμού που τα κύτταρα σχετικά με τη σημερινή του σκάφους (εκτός από το κομμάτι που υπάγονται), και την επιθυμητή κατεύθυνση, εάν δεν έχει τα κύτταρα που εκτός της ζώνης του σκάφους.
Μεταφράστε αιτήσεων μπορεί να εκτελεσθεί εάν δεν υπάρχει επικάλυψη μεταξύ των επιθυμητών μεταφραστεί διαμόρφωση και κύτταρα που για το σημερινό συμβούλιο (με εξαίρεση την πτώση κομμάτι), και αν η επιθυμητή ρύθμιση δεν έχει μεταφραστεί που κυττάρων εκτός της ζώνης του σκάφους.
Input αιτήσεις υποβάλλονται σε επεξεργασία με μια λανθάνουσα ότι εξαρτάται από την ταχύτητα πλαισίου του παιχνιδιού (π.χ.: 75 Hz), και ζητά να ισχύει (αν ισχύει) είναι άμεσος.
Ένα κομμάτι μπορεί να εγκαταλειφθεί χωρίς καμία γραμμή που υπάγονται βήματα που συμβαίνουν.
Ένα κομμάτι μπορεί να μεταφραστεί πολλές φορές προς τα αριστερά ή δεξιά, και στη συνέχεια μειώθηκε, όλα χωρίς βιώνει μια επίσημη γραμμή που υπάγονται βήμα.
Διότι ένα πρόσφατα spawned κομμάτι δεν είναι δυνατόν να εναλλάσσονται (γιατί έχει κολλήσει από το επάνω άκρο του πλοίου), ο παίκτης πρέπει να δεχτεί τουλάχιστον ένα κομμάτι που υπάγονται βήμα αν εναλλαγών που απαιτείται ή είναι επιθυμητή.
Η επίδραση του σκορ να είναι αμελητέος.

5.7 Standard Tetris κομμάτι "προσγείωση"

Αν είναι απλά ένα κομμάτι που υπάγονται, πέφτει από μια ενιαία γραμμή κατά τη διάρκεια κάθε κομμάτι που υπάγονται επανάληψη.
Θα υπάρξει μια επανάληψη ότι μετακινείται από μια χώρα που δεν επαφή με οριζόντιες επιφάνειες σε ένα χώρο που έχει επαφή με οριζόντιες επιφάνειες.  Όταν αυτό συμβαίνει επαναλήψεις, τα κομμάτια βρίσκονται σε επαφή ανάπαυσης.
Εάν μια επανάληψη αρχίζει με ένα κομμάτι που αναπαύεται επαφή με μία οριζόντια επιφάνεια, το κομμάτι "γη," και να καταστεί μέρος της στατικής τρίχωμα.

5.8 Standard Tetris "γραμμές ολοκληρωθεί"

Η ολοκληρωμένη σειρά είναι μια σειρά του σωρού με τον οποίο όλα τα κελιά είναι κατειλημμένες.  Όταν μια ολοκληρωμένη σειρά που αποβάλλεται από το τρίχωμα, και οι σειρές πάνω από τη γραμμή που έχουν εξαλειφθεί μετατοπίστηκε ορίζεται από μία γραμμή για την εξάλειψη του χάσματος, αυτό που μετράει ως μια ολοκληρωμένη "γραμμή."
Όταν ένα κομμάτι γη καθίσταται μέρος του σωρού.
Αμέσως μετά το κομμάτι γη, το τρίχωμα έχει ελεγχθεί για τις σειρές που ολοκληρώθηκε, και ολοκληρωθεί όλες οι σειρές είναι να εξαλειφθεί.
Μέχρι τέσσερις σειρές θα μπορούν να ολοκληρώνονται ταυτοχρόνως.
Ο ακόλουθος πίνακας δίνει το ανώτερο όριο για τις γραμμές ολοκληρωθεί ταυτόχρονα από ένα μόνο κομμάτι:
piece   max. simultaneous
         rows completed
=====   ==================
 "O"           2
 "I"           4
 "S"           2
 "Z"           2
 "L"           3
 "J"           3
 "T"           2

5.9 Standard Tetris "επίπεδα"

Standard Tetris έχει 10 επίπεδα δυσκολίας, αριθμημένα 1 (ένας) μέσω 10 (δέκα), με επίπεδο 1 είναι το "λιγότερο δύσκολο."
Το επίπεδο δείκτη είναι το μέγιστο των δύο τιμές:
actualLevel = max( initialLevel, earnedLevel );
Η initialLevel αξία είναι το επίπεδο που ο παίκτης επιλέγει κατά την εκκίνηση ενός νέου παιχνιδιού.
Το μοτίβο του επιπέδου ως συνάρτηση των ολοκληρωθεί γραμμές είναι εύκολα παρατηρείται στην προ-εμπορικές MS-DOS έκδοση του 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
Έτσι, το earnedLevel αξία υπολογίζεται σύμφωνα με τον ακόλουθο αλγόριθμο:
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 υπάγονται επανάληψη καθυστέρηση

Standard Tetris έχει ένα πραγματικό χρόνο καθυστέρηση μεταξύ διαδοχικών γραμμή ελεύθερη πτώση επαναλήψεις που είναι συνάρτηση του τρέχοντος επιπέδου δυσκολίας.
Η ακόλουθη σχέση μεταξύ του επιπέδου και της πτώσης δείκτη επανάληψη καθυστέρηση βασίζεται στο χρονόμετρο επαναλαμβανόμενων μετρήσεων σε όλα τα επίπεδα της προ-εμπορική MS-DOS έκδοση του 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
Έτσι, έχουμε καθιερώσει την ακόλουθη φόρμουλα για την επανάληψη καθυστέρηση αξίας, σε συνάρτηση με το πραγματικό επίπεδο δείκτη:
iterationDelay = ((11 - actualLevel) * 0.05);  // [seconds]
Αν το σκάφος είναι κενό, και δεν υπάρχει χρήστη, ένα κομμάτι spawned σε πραγματικό επίπεδο 1 εκτάσεων κατά περίπου 10 δευτερόλεπτα, και ένα κομμάτι spawned σε πραγματικό επίπεδο 10 εκτάσεων κατά περίπου 1 δεύτερο.

5.11 Standard Tetris "βαθμολογία"

Standard Tetris βραβεία μόνο τα σημεία για την πράξη της εκφόρτωσης ένα κομμάτι.
Δεν υπάρχουν στοιχεία που χορηγούνται για την πράξη του την ολοκλήρωση μιας ενιαίας γραμμής, ή τη συμπλήρωση δύο, τρεις, ή τέσσερις γραμμές ταυτόχρονα.
[Σημείωση: Κάποιες παραλλαγές του Tetris απονομής βαθμών για την ολοκλήρωση της πράξης γραμμές, με μια εκθετική αύξηση μπόνους για έναν αυξανόμενο αριθμό των ταυτόχρονα ολοκλήρωσε τις γραμμές.
Έτσι, η στρατηγική για τη μεγιστοποίηση του βαθμολογία σε τέτοιες παραλλαγές του Tetris περιλαμβάνει τη δημιουργία ευκαιριών για να "πάρετε μια Tetris," η αργκό που χρησιμοποιούν για τη "I" σχήμα για να πετύχετε τέσσερα ταυτόχρονες γραμμές και να τις παρτίδες των σημείων.  ]
Αν έχετε ένα άδειο σκάφος, και σας αφήσει μια μη "I" κομμάτι κάνει μια ελεύθερη πτώση και η γη, ή μπορείτε αμέσως πτώση ενός μη "I" κομμάτι, μπορείτε να αποκτήσετε το ακόλουθο σημείο γράφημα χρησιμοποιώντας την προ-εμπορική MS-DOS έκδοση του 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, μη "I" πτώση τεμάχια συνολικά 18 σειρές.
Αυτό αντιπροσωπεύει το σημείο διαφοράς μεταξύ των ελεύθερη πτώση και στιγμιαία-drop περιπτώσεις.
Με πειραματίζονται με ενδιάμεσες περιπτώσεις είναι εύκολο να συμπεράνει τα εξής σημείο τύπο:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
Σημειώστε ότι αυτή η φόρμουλα δεν έχει τίποτα να κάνει με την απόσταση ενός κομματιού ανήκει!
Είναι αυστηρά σε συνάρτηση με το πραγματικό επίπεδο, και μία ποινή για τον αριθμό των επαναλήψεις ένα κομμάτι αφήνεται να πέσει ελεύθερα.
Αυτό τιμωρεί ο χρήστης να χρειάζεται χρόνο για να σκεφτούν.
Σημειώστε επίσης ότι επειδή ένα κομμάτι δεν μπορεί αρχικά να περιστρέφεται όταν για πρώτη ωοτοκία του, ένας παίκτης τιμωρείται με μία τουλάχιστον από την ελεύθερη πτώση των εναλλαγών επανάληψη εάν απαιτείται να πραγματοποιηθεί ένα κομμάτι του σωρού.
Αυτό μάλλον ποτέ δεν επηρεάζει την ανθρώπινη παίκτες, αν δεν με κάποιον: αναγνωρίζουν το κομμάτι, πιέστε τα πλήκτρα μετάφραση "(αριστερά" ή "δεξιά)," πατήστε το κλειδί "εναλλάσσει" μία ή περισσότερες φορές, και πιέστε το κλειδί "πτώση," όλα μέσα σε λιγότερο από 0.5 δευτερόλεπτα σε επίπεδο 1, ή λιγότερο από 0.05 δευτερόλεπτα σε επίπεδο 10.

6. Standard Tetris στρατηγική

6.1 Εισαγωγή

Μια στρατηγική για παίζοντας ένα παιχνίδι εξαρτάται από τους κανόνες του παιχνιδιού.
Μια στρατηγική η οποία εξαρτάται από την παράμετρο που πρέπει να είναι βελτιστοποιημένα.
Σε Standard Tetris, ένα επιβιώνει με τη συμπλήρωση σειρές, παίρνει τα σημεία για την εκφόρτωση τεμαχίων, βαθμολογίες και τα πλέον πιθανά σημεία για κάθε κομμάτι από την εκτέλεση μια σταγόνα πριν από ένα ή περισσότερα ελεύθερη πτώση επαναλήψεις διαφαίνεται.
Μια A.I. να βελτιστοποιήσετε οι βαθμοί που δίδονται για κάθε κομμάτι απλώς με τη λήψη αποφάσεων για μια κινηθούμε γρήγορα και "πατώντας τα πλήκτρα" για να εκτελεστεί η κίνηση.
Πιο σημαντική σε μια A.I. είναι η επιβίωση, διότι επ 'αόριστον η επιβίωση σημαίνει αυθαίρετα υψηλή βαθμολογία μπορεί να επιτευχθεί.  Επειδή το Tetris τεμάχια εμπίπτουν σε ένα συγκεκριμένο ποσοστό, το A.I. πρέπει να λάβει αποφάσεις, τουλάχιστον σε αυτό το γρήγορο - και το A.I. πρέπει να κάνει κινήσεις που πλήρεις σειρές σε ποσοστό ότι οι μέσοι όροι τουλάχιστον 1 ανά γραμμή 2,5 τεμάχια.  (Κάθε κομμάτι έχει 4 κύτταρα, καθώς και κάθε σειρά έχει 10 κύτταρα.)
Φυσικά μπορεί κανείς να αναβάλει την ολοκλήρωση σειρές από συσσωρεύοντας τεμάχια και την οικοδόμηση ενός μεγάλου σωρού, αλλά υπάρχουν μόνο τα 200 κύτταρα για το σύνολο του διοικητικού συμβουλίου, το οποίο κατ 'αρχήν μπορεί μόνο να κατέχει 50 τεμάχια, οπότε κάθε παίκτης (όπως μια A.I.) πρέπει να έχει ως άξονες την ολοκλήρωση μια βασική προτεραιότητα.
Σε Standard Tetris, το παιχνίδι περιλαμβάνει την τρέχουσα κατάσταση του σκάφους και το επάγγελμα που υπάγεται το τρέχον κομμάτι (Τύπος, θέση και προσανατολισμός).  Το παιχνίδι κατάσταση, μπορεί προαιρετικά να περιλαμβάνει το "Επόμενο κομμάτι".

6.2 Εναλλασσόμενο ακολουθία των "S" και "Z" τεμάχια

Heidi Burgiel, Ph.D., του Department of Mathematics, Statistics and Computer Science στο University of Illinois at Chicago, έχει αποδειχθεί ότι ένα εναλλασσόμενο ακολουθία των "S" και "Z" κομμάτια θα ισχύει ένα πρότυπο (στήλη 10, 20-στίχο) Tetris παιχνίδι να λήγει εντός ενός προβλέψιμου αριθμό της κινήσεις.
http://www.math.uic.edu/~burgiel/Tetris/explanation.html
Παραθέτω από το άρθρο: "You can't win a game in which only alternating 'S' and 'Z' pieces appear."
Συνεργαζόμενος τυπωθεί το άρθρο: Mathematical Gazette, τον Ιούλιο του 1997, "How to Lose at Tetris"
Heidi Burgiel προσφέρει Java applet που εκτελείται σε ένα πρόγραμμα περιήγησης στο Internet που διαθέτει ένα τροποποιημένο Tetris clone ότι ωοτοκίες εναλλασσόμενο "S" και "Z" τεμάχια.
http://www.math.uic.edu/~burgiel/Tetris
[Το "Standard Tetris" λογισμικό που σχετίζεται με την ανάγνωση εγγράφου που σας έχει και μια λειτουργία η οποία ωοτοκίες εναλλασσόμενο "S" και "Z" τεμάχια.  ]
Heidi Burgiel ισχυρισμός ότι ένα παιχνίδι που περιλαμβάνουν εναλλασσόμενο "S" και "Z" κομμάτια (για μια τυπική Tetris συμβουλίου της 10 στήλες και 20 γραμμές) πρέπει να τελειώσει πριν από λιγότερες από 70000 κομμάτια έχουν μειωθεί.
Η Standard Tetris λογισμικό που περιλαμβάνεται με αυτό το έγγραφο δίνει τη δυνατότητα στο άτομο να παίξει παιχνίδια με εναλλασσόμενο "S" και "Z" κομμάτια, και να αλλάξει το πλάτος του σκάφους.
Είναι εύκολο να δούμε ότι διοικητικά συμβούλια των οποίων η πλάτη είναι ακέραιος πολλαπλάσια από τέσσερις στήλες (παραδείγματα: 4 στήλες, στήλες 8, 12 στήλες, κλπ) μπορεί να διαδραματίσει για πάντα, όταν κομμάτια μεταξύ των αναπληρωματικών "S" και "Z", με την αύξηση του σωρού, δεν υψηλότερες από 4 σειρές.  Το αναφέρω αυτό για να καταστεί σαφές ότι η περιορισμένη δυνατότητα επιβίωσης που περιγράφεται στο ερευνητικό έγγραφο που αναφέρεται παραπάνω είναι ειδικά για την περίπτωση ενός προτύπου Tetris συμβούλιο (με 10 στήλες και 20 γραμμές).

6.3 Ανεπίλυτο κομμάτι ακολουθίες στο γενικό

Υπάρχουν ολόκληρες κατηγορίες των παθολογικών αλληλουχίες που δεν μπορεί να σωθεί.
Θα ήταν ενδιαφέρον να υπολογίζουν τη συνολική πιθανότητα να συναντήσουμε ένα παιχνίδι-την περάτωση ακολουθίας, γιατί αυτό θα θέσει ένα άνω όριο για την εκτέλεση οποιασδήποτε στρατηγικής, έστω και με πλήρη γνώση όλων των μελλοντικών τεμάχια σε κάθε δεδομένο σημείο σε ένα παιχνίδι.

6.4 Σύνολο πιθανές συνθέσεις του διοικητικού συμβουλίου

Δεδομένου ότι το συμβούλιο έχει 10 * 20 = 200 κυττάρων, και δεδομένου ότι κάθε κύτταρο μπορεί να επιτευχθεί μόνο σε ένα από τα δύο κράτη (άδεια ή κατειλημμένο), ο συνολικός αριθμός των συνθέσεων του σκάφους πρέπει να είναι μικρότερη ή ίση με: (2 ^ 200).
Δεδομένου ότι κάθε κομμάτι προσθέτει 4 κύτταρα σε ένα συμβούλιο, και σε κάθε σειρά ολοκλήρωση εξαλείφει 10 τα κύτταρα του σκάφους, ο αριθμός των κατεχόμενων κύτταρα στο συμβούλιο θα είναι πάντα ακόμα.  Για παράδειγμα, (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, κλπ.  Έτσι, μόνο το ήμισυ της (2 ^ 200) συνθέσεις του σκάφους μπορεί να φτάσει κανείς παίζοντας το παιχνίδι.
Έτσι, ο συνολικός αριθμός των συνθέσεων του σκάφους είναι περίπου: (2 ^ 199) = 8.03469...  * 10^59.
Ωστόσο, θα πρέπει να αποκλείσει από την συνολική μας ότι οποιαδήποτε ρύθμιση περιλαμβάνει πλήρωση σειρές, επειδή συμπλήρωσαν οι σειρές είναι να εξαλειφθούν πριν από το τέλος κάθε συμπληρωμένο προχωρήσουμε.  Κάθε ρύθμιση με μία ή περισσότερες σειρές που θα πληρωθεί στο άλλο κατάρρευση ότι η ρύθμιση δεν περιέχει καμία συμπλήρωσαν σειρές.
Επίσης, θα πρέπει να αποκλείσει οποιαδήποτε ρύθμιση που να περιλαμβάνει μια μη κενή γραμμή πάνω από μία ή περισσότερες κενές σειρές, γιατί μια μη κενή γραμμή πάνω σε μια κενή γραμμή πάντα θα πέσουν, και όλες τις στάσεις που υπάγονται πριν από το τέλος κάθε προχωρήσουμε.
Κάθε γραμμή μπορεί να είναι σε 2^10 = 1024 μελών, μεταξύ των οποίων είναι "άδειο", ένα από τα οποία είναι "πλήρης", και (1024 - 2) = 1022 από τα οποία είναι εν μέρει-κατεχόμενα.  Έχουμε αποκλείσει το "γεμάτο" από την εξέταση υπόθεσης.
Εάν η τελευταία σειρά είναι άδειο, τότε όλες οι σειρές πάνω από τον πυθμένα στήλης πρέπει επίσης να είναι άδειο.
Εάν η τελευταία σειρά είναι εν μέρει-κατεχόμενα, τότε η δεύτερη σειρά μπορεί να είναι κενή ή μερικώς-κατεχόμενα.
Συνεχίζοντας την ανάλυση αυτή, μπορούμε να υπολογίζει μια σειρά από συνθέσεις του διοικητικού συμβουλίου ότι το να λαμβάνει υπόψη την πλήρη αποκλεισμό των γραμμών και των περιορισμών στις κενές σειρές: 1 + (1022 * (1 + 1022 * (1 + 1022 * (1 + 1022 * (...  * (1023)))))), το οποίο είναι περίπου ((1022 ^ 19) * (1023)).
Έτσι, θα βρείτε μια ακριβέστερη εκτίμηση του συνολικού αριθμού των σταθερών σκάφους συνθέσεις: (1/2) * ((1022 ^ 19) * (1023)) = 0.9625...  * (2 ^ 199)?  Δηλαδή, περίπου 3,74% λιγότερο από το (2 ^ 199) εκτίμηση.
Ωστόσο, ο πραγματικός αριθμός των σταθερών, προσβάσιμη σκάφους δηλώνει είναι πιθανό να είναι σημαντικά χαμηλότερη, λόγω του γεγονότος ότι η αρχή της πλέον σειρές μπορούν μόνο να πληρωθούν σε λίγους τρόπους.  Ως αρχή, οι περισσότερες σειρές συμπληρώνουν, ένα πρόσφατα δημιούργησε το κομμάτι δεν μπορεί να μετακινηθεί ή να περιστραφεί πολύ.  Αυτό περιορίζει τον αριθμό των τρόπων αρχή-οι περισσότερες σειρές που μπορούν να πληρωθούν.

6.5 Κατ 'αρχήν, το καλύτερο κυκλοφορούν μπορούν να βρεθούν για κάθε κομμάτι του σκάφους και η ρύθμιση

Διότι μπορούμε να κάνουμε κάθε δυνατή επτά τεμάχια για κάθε δεδομένη κατάσταση του σκάφους, ο συνολικός αριθμός των θηραμάτων αναφέρει είναι περίπου 7 * (2 ^ 199) = 5.624...  * 10^60.
Διότι μπορεί, κατ 'αρχήν, να κάνουμε μια βαθιά αναζήτηση όλων των πιθανών futures για όλες τις πιθανές κινήσεις για ένα συγκεκριμένο παιχνίδι κατάσταση, μπορούμε να έχουμε ένα ενιαίο «καλύτερη» κυκλοφορούν συνδέονται με κάθε παιχνίδι κατάσταση.
Θεωρούμε ως δεδομένο ότι δεν έχουμε πρόσβαση σε κάθε πληροφορία εκτός από το σημερινό διοικητικό συμβούλιο και την τρέχουσα κομμάτι, τόσο "καλύτερος" σημαίνει "την κίνηση που προσφέρει τις μεγαλύτερες πιθανότητες να ικανοποιούν μας μακροπρόθεσμος στόχος της επιβίωσης".
Η κίνηση είναι απλώς μια μετάφραση (μέχρι 10 επιλογές) και περιστροφή (έως 4 επιλογές), μπορούμε εύκολα να κωδικοποιήσουν τις καλύτερες περάσουμε σε ένα μόνο byte.
Έτσι, κατ 'αρχήν, εμείς θα μπορούσε να αποτελέσει ένα τραπέζι με 10^61 εγγραφές (byte) που μας έλεγε ο καλύτερος κυκλοφορούν κάθε δεδομένη κατάσταση του σκάφους και την τρέχουσα κομμάτι.
Φυσικά αυτό είναι ανέφικτο, όπως ακριβώς την απαρίθμηση όλων των "Go" συμβούλια ή "Chess" boards είναι πρακτικά αδύνατη.  Αλλά το θέμα είναι ότι υπάρχει μία πραγματική λύση, και υπάρχει ένα καλύτερο κινηθούν για κάθε συγκεκριμένη ρύθμιση.  Μπορεί να υπάρχουν εξίσου καλές κινήσεις για μια συγκεκριμένη ρύθμιση, αλλά μπορούμε να επιλέγουν αυθαίρετα ένα ενιαίο προχωρήσουμε σε αυτή την περίπτωση.
Πολλά παιχνίδια που παίζουν οι αλγόριθμοι έχουν πίνακες που απαριθμούν εξαντλητικά όλες τις δυνατότητες παιχνιδιού κατάσταση εντός περιορισμένου περιβάλλοντα, όπως το "άνοιγμα (αρχική) κινείται" ή "end-game (τελικές) κινήσεις" στο σκάκι.  Ίσως εξαντλητική απαρίθμηση των πασσάλων Tetris επιφάνειες (περίπου (20 ^ 10) αναφέρει) είναι εφικτή.  Είναι μια ενδιαφέρουσα ιδέα.
Εξαντλητική απαρίθμηση όλων των μελών του πυθμένα δύο σειρές, πολλαπλασιαζόμενη με τα επτά τεμάχια δυνατό, την αποθήκευση και την καλύτερη περάσουμε σε ένα μόνο byte, θα ήταν αρκετά εύκολο?  Απαιτώντας μόνο 7 MB της μνήμης.  Ίσως τη βελτιστοποίηση των επιδόσεων για αυτά τα επτά εκατομμύρια περιπτώσεις θα παράσχει τα ανεπεξέργαστα δεδομένα τόσο για την ανάλυση και την ανάπτυξη των απλών μοντέλων για τα δεδομένα?  Τέτοιου είδους μοντέλα θα μπορούσαν να θεωρηθούν ως μέρος της συνολικής ιδανικό Tetris-playing στρατηγική.
Σημειώστε ότι εκτέλεσης καλύτερες κινήσεις ακόμα δεν μπορεί να μας προστατεύσει από πιθανές παθολογικές παιχνίδι-την περάτωση κομμάτι ακολουθίες.  Είναι απλά ότι θα είμαστε πάντα εκτελέσει κινήσεις που μας προσφέρει το μέγιστο δυναμικό για μελλοντική επιβίωση, δεδομένου ότι όλα τα μελλοντικά κομμάτια είναι εντελώς τυχαία (και άγνωστο κατά τη στιγμή θέλουμε να αποφασίζουν πώς θα κινηθούν ένα ενιαίο σημερινό γνωστό κομμάτι).

6.6 Real-time επιδόσεις

Ένα εμπόδιο που αντιμετωπίζουν κάποια στρατηγική αλγόριθμοι είναι η ανάγκη για πραγματικό χρόνο τις επιδόσεις - πράγμα που σημαίνει ότι ο αλγόριθμος πρέπει να κάνει την απόφασή του εντός ενός συγκεκριμένου χρονικού διαστήματος.
Όταν ένα ανθρώπινο παίζει Tetris, τα κομμάτια δεν σταματούν υπάγεται ο παίκτης να δώσει μια ευκαιρία να σκεφτούν.  Αυτό είναι μέρος της πρόκλησης του Tetris.  Έτσι, μια A.I. σύστημα που έχει ως στόχο να προσομοιώνουν το ρόλο του ανθρώπινου παράγοντα θα πρέπει επίσης να λάβει αποφάσεις, σε ποσοστό που υπαγορεύονται από το παιχνίδι Tetris.

6.7 Row και το κομμάτι σύνολα

Σημειώστε ότι, σε μακροπρόθεσμη βάση, μειώθηκε ο αριθμός των τεμαχίων είναι πολύ κοντά στην 2.5 φορές τον αριθμό των σειρών - γιατί κάθε σειρά έχει 10 κύτταρα, και κάθε κομμάτι είναι 4 κυττάρων, και πρέπει να ολοκληρώσει μια σειρά, κατά μέσο όρο, μία φορά κάθε (10/4) = 2.5 τεμάχια μειώθηκαν.
Έτσι μπορούμε να χρησιμοποιήσουμε "ολοκληρώθηκε σειρές" και "έπεσαν κομμάτια" σχεδόν αδιακρίτως με την κατάλληλη σταθερή αναλογικότητα.  Το μεγαλύτερο λάθος είναι όταν το σκάφος είναι εντελώς συμπληρωμένη, πλην ενός χάσματος σε κάθε σειρά (((10*20)-20)/4) = 45 τεμάχια μειώθηκαν αλλά η έλλειψη της προβλεπόμενης (45/2.5) = 18 ολοκληρωθεί σειρές.

6.8 Current-κομμάτι (και χαρτονιού) στρατηγική

Αν θέλουμε μόνο να επιτρέψουμε τη A.I. να έχουν γνώση του σημερινού διοικητικού συμβουλίου και το τρέχον κομμάτι, και θα εξετάσει μόνο το αποτέλεσμα της μετακίνησης της τρέχουσας κομμάτι ιδίως τρόπους, τότε αυτό μπορεί να ονομαστεί ένα "κομμάτι" της ανάλυσης.
Εδώ είναι μια πρόχειρη σκίτσο του πώς ένα κομμάτι της ανάλυσης μπορούν να αποφασίζουν για μια κίνηση στο Tetris:
tetris_piece_drop_with_metrics01.jpg
Current-κομμάτι ανάλυση ενός παιχνιδιού Tetris κατάσταση
Βασικά προσπαθούμε όλες τις πιθανές κινήσεις και πάρτε την κίνηση που φέρνει το καλύτερο αποτέλεσμα.
Το δύσκολο κομμάτι είναι βαθμολογία κάθε αποτέλεσμα.
Πρέπει να συντελεστή ένα υποθετικό παιχνίδι κράτος ανάλογα με το πόσο καλά μια τέτοια κατάσταση υποστηρίζει μας βραχυπρόθεσμων και μακροπρόθεσμων στόχων.
Η δική μας μακροπρόθεσμος στόχος είναι η επιβίωση.  Επιβίωση εξαρτάται από την πρόληψη της υπερχείλισης του σωρού από το διοικητικό συμβούλιο.  Μπορούμε να μειώσει το ύψος από το τρίχωμα που αποτελούν πλήρεις σειρές οι οποίες στη συνέχεια αποβάλλεται από το τρίχωμα.
Για να σχηματιστεί μια πλήρης σειρά, θα πρέπει να εντάσσονται σε τμήματα των τεμαχίων σε κάθε στήλη αυτής της γραμμής.  Έτσι, ζητάμε όλα τα τμήματα της γραμμής που θα εκτεθούν στην οποία υπάγονται κομμάτια, αν θέλουμε τελικά να συμπληρώσετε ολόκληρη τη σειρά.
Αν για κάποιο λόγο θα καλύψει έως άδειο τμήματα μιας σειρά από κομμάτια για οποιαδήποτε τριτοβάθμια σειρά, τότε είμαστε τώρα σε θέση να συμπληρώσουν το κενό αυτών των τμημάτων της γραμμής.  Ο μόνος τρόπος (αν δεν συρόμενη) να έχουν πρόσβαση σε αυτές τις "θαμμένες τρύπες" είναι η εξάλειψη των παραπάνω σειρές που έχουν τμήματα που ενεργούν ως εμπόδια.
Οι ακόλουθοι παράγοντες είναι μεταξύ εκείνων που μπορούμε να χρησιμοποιήσουμε σε ένα συγκεκριμένο ποσοστό του σκάφους αναφέρει:
Overall pile height
Όσο υψηλότερο είναι το τρίχωμα, το χειρότερο μας κατάσταση φαίνεται να είναι, γιατί είμαστε πιο κοντά στην υπερχείλισης του διοικητικού συμβουλίου.
Roughness of pile area (number of times cells alternate between empty and filled as any row or column is scanned)
Η rougher του σωρού, το πιο πιθανό είναι ότι θα είναι δύσκολο να καλυφθούν σε όλα τα ενσωματωμένα πολύπλοκο περιγράμματα, καθώς θα είναι εκτεθειμένοι στην επιφάνεια.
Number of buried empty cells
Οι περισσότερες τρύπες που έχουμε να θάβονται, η κατάσταση είναι χειρότερη μας, διότι πρέπει να αποκαλυφθούν θαφτεί πριν από τις τρύπες θα μπορέσουμε να ολοκληρώσουμε τις αντίστοιχες σειρές.
Μπορείτε να φανταστείτε και άλλους παράγοντες που γενικά ένα υποθετικό ποσοστό του σκάφους με το πόσο καλά το τρίχωμα μπορεί να φιλοξενήσει όλες τις πιθανές μελλοντικές κομμάτια, και πόσο καλή η κατάσταση μοιάζει για όλα εκείνα τα πιθανά κομμάτια.
Το επόμενο θέμα είναι πώς θα προσδιορίσει την σχετική σημασία αυτών των παραγόντων.
Μία γενική προσέγγιση είναι η εξής.  Εκχωρήστε ένα σύνολο "βάρη" (σχετική σημασία) με αυτούς τους παράγοντες, και στη συνέχεια προσομοίωση πολλά παιχνίδια και καταγράφουν τα αποτελέσματα αυτών των παιχνιδιών (τελική βαθμολογία, κτλ).  Στη συνέχεια, να ορίσετε ένα νέο σύνολο των βαρών και την προσομοίωση μιας νέας σειράς παιχνιδιών.  Βάση την καταβολή ή μη της νέας σειράς παιχνιδιών είχε καλύτερα αποτελέσματα από ό, τι τα προηγούμενα παιχνίδια της σειράς, ξέρουμε αν το νέο σύνολο των σταθμών ήταν καλύτερο από το προηγούμενο σύνολο των βαρών.
Στη δική μου πειράματα προσπάθησα συστηματική αναζήτηση και τυχαία ψάχνουν για καλές βάρος τους συνδυασμούς, αλλά δεν είχα καμία ειδοποίηση μεγάλων τάσεων που θα μπορούσαν να ακολουθήσουν.  Ωστόσο, είδα πολλά εκπληκτικά ομαλή ανωμαλίες.  Μου φάνηκε ενδιαφέρον το γεγονός ότι η μέση απόδοση θα μπορούσε να αποτελέσει μια ομαλή καμπύλη, όταν μια παράμετρος ήταν αργά ποικίλη με τις άλλες παραμέτρους που πραγματοποιήθηκε σε συνδυασμό κάποια αξία.
Το καλύτερο σε πραγματικό χρόνο, ένα κομμάτι Tetris αλγόριθμος του κόσμου, που δημιουργήθηκε από Pierre Dellacherie (Γαλλία) σε 2003, χρωστάει μεγάλο μέρος της επιτυχίας του με τη σειρά μετρήσεων (ή μετρήσεις).  Ψάχνοντας τα βάρη είναι αναγκαία όταν τη βελτιστοποίηση της στρατηγικής, αλλά είναι επίσης κρίσιμη για να ξεκινήσει με το είδος των μετρήσεων που αποκαλύπτουν τα σχετικά χαρακτηριστικά του κράτους.
Pierre Dellacherie's εφεύρεση νέων τρόπων να χαρακτηρίζουν κάθε σκάφους κάνει ο αλγόριθμος πραγματικά εξαιρετική?  Ο χαρακτηρισμός του σκάφους καταγράφει τις σημαντικότερες στρατηγικές διαστάσεις του σκάφους κράτους.
Κάποιος θα μπορούσε να αναπτύξει ένα πολύ διαφορετικό σύνολο του χαρακτηρισμού διαστάσεις που λειτουργούσε εξίσου καλά?  Είμαι πεπεισμένος ότι είναι δυνατόν να επεκτείνονται οι σχετικές κρατικές διαστημικού σκάφους με πολλούς διαφορετικούς τρόπους που μπορεί να χρησιμοποιηθεί για να καθορίσετε μια στρατηγική λειτουργία.  Το κλειδί είναι να βρούμε χαρακτηριστικά ότι το σχέδιο κρατικών χώρος σε ένα μικρό αριθμό των διαστάσεων που μπορεί να χρησιμοποιηθεί για να αναπτύξει μια απλή λειτουργία βαθμολογία (παράδειγμα: η γραμμική σταθμισμένο συνδυασμούς χαρακτηριστικών που χρησιμοποιείται από Pierre's αλγόριθμο).
Το ένα κομμάτι αλγόριθμο που χρησιμοποιείται από το "bot" στο "xtris" λογισμικό (1996) γράφτηκε από Roger Espel Llima χρησιμοποιεί βάρη καθορίζεται από ένα μεγάλης κλίμακας εξερεύνηση των πιθανών συνδυασμών από το βάρος "γενετικών αλγορίθμων".  Προσομοιωμένη ανόπτησης είναι μια άλλη πιθανή μέθοδος της εξερεύνησης του πολυδιάστατου χώρου βάρος συνδυασμών.
Φαίνεται ότι, με βάση διάφορες παρατηρήσεις, ο πολυδιάστατος ρόλος του Tetris μέση επίδοση ως συνάρτηση των βαρών, π.χ.: F(w1,w2,w3,...), είναι η "πρόχειρη" (παρτίδες των τοπικών και ελάχιστους maxima), πράγμα που σημαίνει ότι ένα απλό πολυδιάστατο "αναρρίχηση λόφου" ενδέχεται να μην λειτουργούν.

6.9 Στρατηγική κατά τρέχον κομμάτι, το επόμενο κομμάτι, και του σκάφους είναι γνωστή

Αν μια στρατηγική αλγόριθμος είναι δεδομένο το σημερινό κομμάτι, το επόμενο κομμάτι, και χαρτονιού, τότε μπορεί να λάβει αποφάσεις που να επωφεληθούν από το συνδυασμό των τεμαχίων.
Γνώση του επόμενου κομματιού, μπορεί να βελτιώσει την επιτυχία ενός αλγορίθμου παίζοντας Tetris από πολλές τάξεις μεγέθους.  Είναι εύκολο να κατανοήσουμε τον τρόπο με τον οποίο είναι γνωστό το επόμενο κομμάτι κάνει μια μεγάλη διαφορά στη στρατηγική.
Κάποιος μπορεί να κάνει "τρελά" κινήσεις, όπως η οποία καλύπτει τεράστιες τρύπες, κλπ, γιατί ήδη γνωρίζουμε ότι το επόμενο κομμάτι μπορεί να χρησιμοποιηθεί για να "ορίσει" η κατάσταση.  Αν δεν έχετε γνώση του επόμενου κομματιού, είστε συνεχώς προσπαθεί να παίξει το στοίχημα, προσπαθεί να διατηρήσει ανοικτές τις επιλογές σας σε περίπτωση που το επόμενο κομμάτι δεν είναι ιδανική.
Οι παρακάτω σκίτσο δείχνει πώς όλες οι πιθανές κινήσεις της τρέχουσας κομμάτι θεωρείται, και για κάθε τέτοια κυκλοφορούν θεωρούμε όλες τις δυνατές κινήσεις που αφορούν το επόμενο κομμάτι.
tetris_piece_and_next_with_metrics01.jpg
Στρατηγική συμμετοχή τρέχον και το επόμενο κομμάτι κομμάτι
Η Standard Tetris λογισμικό χρησιμοποιεί τη στρατηγική αυτή, όταν το "Επόμενο κομμάτι" έχει ενεργοποιηθεί από το χρήστη και είναι ορατό στην οθόνη, και όταν δύο τεμαχίων A.I. είναι ενεργοποιημένη (όπως αυτή γράφτηκε από μένα, Colin Fahey).  Αν το "Επόμενο κομμάτι" δεν είναι ορατή στην οθόνη, δύο τεμαχίων μου πέφτει πίσω σε ένα κομμάτι A.I..
Η μόνη μου-κομμάτι A.I. είναι τρομερή, σε σύγκριση με τις άλλες AIs στο Standard Tetris λογισμικού?  Έτσι αυτή σας δείχνουν ευεργετική περισσότερες πληροφορίες (παράδειγμα: το επόμενο κομμάτι) να είναι σε A.I. σύστημα?  Είναι αρκετή για να βελτιώσει τις επιδόσεις της δικής μου μέτρια δύο τεμαχίων A.I. από πολλές τάξεις μεγέθους - εύκολα υπερβαίνοντας τις επιδόσεις των καλύτερων ένα κομμάτι A.I. στον κόσμο.
(Ωστόσο, μετατρέποντας τα καλύτερα ένα κομμάτι A.I. στον κόσμο να εξετάσει δύο κομμάτια εύκολα θα το βελτιώσουμε με πολλές τάξεις μεγέθους, πολύ!  Γνωρίζοντας το επόμενο κομμάτι είναι τεράστια!)
Η πρώτη μου δοκιμή με το παιχνίδι μου δύο τεμαχίων A.I. διήρκησε περίπου 182 ωρες (7,6 ημέρες) σε 800 MHz PC, συμπληρώνοντας 7216290 σειρές.  Δεν έχω δοκιμαστεί ο αλγόριθμος για ένα πιο γρήγορο υπολογιστή.
Όταν αποθηκεύετε την κατάσταση ενός παιχνιδιού Tetris (Shift-W) σε ένα αρχείο κειμένου, μπορείτε στη συνέχεια να αντιγράψετε και επικολλήσετε τη λίστα των αριθμών, από το τμήμα "heightHistogram", σε ένα υπολογιστικό φύλλο Excel.
Κάθε Μπιν στο ιστόγραμμα δείχνει τον αριθμό των κινήσεων που έληξε με ένα συγκεκριμένο ύψος σωρού (μετά από πλήρεις σειρές έχουν εξαλειφθεί).  Όπως μπορείτε να φανταστείτε, κάνοντας μια κίνηση που καταργεί ένα εντελώς τρίχωμα είναι σπάνιες, οπότε ο συνολικός αριθμός των κινήσεων που τελειώνει με ένα σωρό ύψος μηδέν είναι σχετικά χαμηλή.
Εν τω μεταξύ, μπορείτε να φανταστείτε ότι το τρίχωμα ύψος κυμαίνεται γενικά γύρω από κάποια μέση, οπότε τα καλάθια αχρήστων που αντιστοιχούν σε αυτές τις σειρές που θα κυριαρχήσουν το ιστόγραμμα.  Τέλος, τα καλάθια αχρήστων για το top-πλέον σειρές (όπου θα υπάρχει ο κίνδυνος υπερχείλισης του διοικητικού συμβουλίου) έχουν πολύ χαμηλά σύνολα.
Με την πάροδο πολλών ωρών, με το A.I. παίζοντας ένα μόνο παιχνίδι, χρησιμοποιώντας τη στρατηγική που περιλαμβάνει τη γνώση των "Επόμενο κομμάτι", μου πήρε τυχαία δείγματα του παιχνιδιού κράτος, αντιγράφοντας το τρίχωμα ύψος ιστογραμμάτων σε ένα λογιστικό φύλλο όπως φαίνεται παρακάτω:
std_tetris_pile_height_hist_raw01.jpg
Σωρός ύψος ιστογράμματα που καταγράφονται σε διάφορα σημεία σε ένα τυπικό παιχνίδι (με τις σημερινές-και-αμέσως επόμενο κομμάτι της στρατηγικής)
Μπορείτε να κλίμακας κάθε ιστόγραμμα από το συνολικό αριθμό των τεμαχίων (συνολικός αριθμός των ολοκληρωθεί κινήσεις) για να πάρετε τα ακόλουθα στοιχεία:
std_tetris_pile_height_hist_scaled01.jpg
Αποκλιμακώνονται ιστογραμμάτων, και μια θεωρία
Το αξιοσημείωτο είναι ότι αυτά τα κλιμακωτά ιστογράμματα εξετάσουμε ταυτόσημα, παρά τις διαφορετικές τάξεις μεγέθους από τον αριθμό των τεμαχίων (ολοκληρώθηκε κινήσεις).
Απλά κοιτάζοντας τους αριθμούς που έκανα την υπόθεση ότι η ουρά του είναι μια εκθετική καμπύλη εκφόρτισης.  Με τη δοκιμή και πλάνη ήρθα με την πρόχειρη θεωρία ότι η ουρά αυτή περιγράφεται από:
relative_frequency = ((0.122) * ((0.375)^(row-5)))
Το ακόλουθο γράφημα δείχνει το ιστόγραμμα κλιμακωτά σε ολόκληρο το φάσμα των γραμμών.
std_tetris_pile_height_hist_curve_full01.jpg
Γράφημα της αποκλιμακώνονται ιστογράμματα
Σημειώστε ότι η καμπύλη για 50000 κομμάτια, και η καμπύλη για 2000000 τεμάχια, και η καμπύλη της ουράς θεωρία είναι σχεδόν δυσδιάκριτες σε αυτή την κλίμακα.
Το παρακάτω είναι μια πιο προσεκτική ματιά στα κεντρικά της καμπύλης.
std_tetris_pile_height_hist_curve_head01.jpg
Κάτω μέρος του ύψους ιστόγραμμα
Το ακόλουθο είναι ένα πολύ-μεγεθύνεται λόγω των ακραίων ουρά το τέλος του μετράται και θεωρητικές καμπύλες ιστόγραμμα.
std_tetris_pile_height_hist_curve_tail01.jpg
Μεγεθύνεται λόγω των ακραίων ουρά τέλος της αποκλιμακώνονται ιστογράμματα
Όπως μπορείτε να φανταστείτε, είναι πολύ σπάνιο για το τρίχωμα για να φτάσουν σε αυτά τα ύψη ακόμη και καιρό πειράματα - αλλά ακόμη και με περιορισμένες ενδείξεις μας σε αυτή την ακραία περιφέρεια, η θεωρία φαίνεται αποδεκτό.
Σε όλο το γράφημα η θεωρία φαίνεται να επικαλύπτει την ουρά της διανομής "ακριβώς", ενώ στο γράφημα του μεγεθύνει την ουρά της ουράς, θα δούμε εμφανές σφάλμα.  Ωστόσο, ισχυρίζονται ότι αυτό οφείλεται σε ανεπαρκή δεδομένα σε αυτές τις ακραίες τρίχωμα ύψη.  Αν μου αύξησε το παιχνίδι του σκάφους, ας πούμε, σε ύψος 25 σειρές αντί των 20 γραμμών, έτσι ώστε τα παιχνίδια δεν σταματήσουν απότομα, νομίζω ότι η θεωρία μου παρουσιάζεται ανωτέρω θα συμπίπτουν απολύτως με την τάση.
Έχω την αίσθηση ότι αυτό το ιστόγραμμα είναι ένα άμεσο αποτέλεσμα της συνδυασμένης Tetris A.I. και τους κανόνες του Tetris.  Έτσι, αυτή η ίδια κατανομή θα πρέπει να τηρείται για κάθε τυχαία μακροπρόθεσμη παιχνίδι Tetris μου χρησιμοποιώντας κυρίως A.I. στρατηγική για να παίζουν με "Επόμενο κομμάτι" της γνώσης.
Επιπλέον, πιστεύω ότι αυτό το είδος ιστόγραμμα μπορεί να χρησιμοποιηθεί για να συγκρίνει AIs που απασχολούν τις ίδιες πληροφορίες, ενώ παίζετε.  Έτσι, δεν χρειάζεται να παίξει πλήρη παιχνίδια (τα οποία μπορεί να διαρκέσει ημέρες ή χρόνια) να συγκρίνει την μακροπρόθεσμη απόδοση των αλγορίθμων διαφορετική στρατηγική.
Για παράδειγμα, παρά την απλότητα του μοντέλου μου, νομίζω ότι μπορεί να χρησιμοποιηθεί για να προβλεφθεί η μέση διάρκεια παιχνιδιού!  Εμείς απλά υπολογίσω πόσα κομμάτια κάνει τη "σειρά 21" σωρός ύψος ενός σημαντικού αριθμού, όπως η καταμέτρηση του ενός.
Η σχετική συχνότητα για σειρά 21, σύμφωνα με απλή θεωρία μου, είναι:
((0.122) * ((0.375)^( 21 -5 ))) = 1.8 * 10^(-8)
Θα πρέπει να πολλαπλασιάσει τον αριθμό αυτό από (5.3 * 10^(7)), περίπου 50 εκατ.  ευρώ, για να πάρετε μια τιμή του ενός.
Έτσι, περίπου το προβλέψω ότι μου τρέχουσα "Επόμενο κομμάτι" στρατηγική είναι μόνο καλό για σχετικά με τη διάταξη των περίπου 10 εκατομμυρίων ευρώ ολοκληρώθηκε σειρές.  Ένας λόγος που κάνω αυτήν την συντηρητική εκτίμηση είναι το γεγονός ότι ακόμη και 18 σειρές μπορούν να θανατηφόρα για A.I. μου γιατί δεν μου επιτρέπουν να εξετάσει A.I. κομμάτια μέχρι να έχουμε πέσει από τουλάχιστον ένα στίχο!  (Αυτό είναι έτσι δεν χρειάζεται να ανησυχούν για το ότι δεν μπόρεσα να εναλλάσσει τεμάχια.)
Είμαι εντυπωσιασμένος από το γεγονός ότι παίζει μόνο 50000 τεμάχια (και πιθανώς πολύ λιγότερα τεμάχια) μπορεί να σας δώσει μια πολύ καλή εκτίμηση των μακροπρόθεσμων ύψος ιστόγραμμα και, κατά συνέπεια, μια καλή εκτίμηση της τάξης μεγέθους των σειρών ολοκληρωθεί πριν από το παιχνίδι άκρα.  Η προσέγγιση αυτή είναι εξαιρετικά πολύτιμη για την ταχεία αξιολόγηση ανεπαίσθητες αλλαγές σε A.I. ότι έχει ήδη κάνει εξαιρετικά καλά.

6.10 Συμβούλιο αξιολόγησης μετρήσεις μιμηθούν κερδοσκοπική look-μπροστά

Εάν ένας αλγόριθμος, όπως αυτή που μου παρουσιάζεται με αυτό το σχέδιο, απλώς προσπαθεί όλες τις κατευθύνσεις και τις μεταφράσεις κομμάτι για να μπείτε, και τα ποσοστά που προκύπτουν κάθε σκάφους ρύθμιση σύμφωνα με ορισμένες μέτρο της αξίας, ο αλγόριθμος είναι ουσιαστικά απομίμηση "look-μπροστά".
Όταν κάποιος χρησιμοποιεί τις μετρήσεις όπως "σωρός ύψος", το "θαμμένο τρύπες», «επιφανειακή τραχύτητα" ή "καλά βάθη", ένα πραγματικά χρησιμοποιεί μια απλουστευμένη μορφή του "κοιτάξουμε μπροστά".  Αυτά τα γενικά χαρακτηρισμός του σκάφους δώσει κάποια ένδειξη για την μακροπρόθεσμη βιωσιμότητα του σκάφους.
Η ιδανική προσέγγιση, δεδομένου απροσδιόριστο ποσό της υπολογιστικής δύναμης, θα ήταν να αξιολογήσει ένα συμβούλιο configuration δοθεί όλες οι δυνατές ακολουθίες κομμάτι που μπορεί να ακολουθήσει.
Μολονότι θα πρέπει να εξετάσει όλα τα 7 κομμάτια, όπως είναι εξίσου πιθανό σε κάθε επίπεδο της εμφάνιση μπροστά, χρειάζεστε για να βελτιστοποιήσετε την πραγματική μεταφράσεις (μέχρι 10) και τους προσανατολισμούς της (μέχρι 4) για κάθε κομμάτι σε κάθε δυνατή ακολουθία!  Αυτός είναι ο μέχρι (7*10*4) = 280 υποκαταστήματα σε κάθε επίπεδο της αξιολόγησης του σκάφους!  Έτσι, ότι η μέχρι ((280)^(LookAheadLevels)) συνθέσεις του διοικητικού συμβουλίου θα πρέπει να εξεταστούν.
Διότι εμείς πρέπει να τερματίσει την ανάλυση μετά από έναν πεπερασμένο αριθμό των επιπέδων, θα πρέπει να έχουμε κάποια μη εμφάνιση μπροστά μέθοδος αξιολόγησης του διοικητικού συμβουλίου του κράτους - ένας τρόπος να δώσουμε τιμές στα δικτυακούς κόμβους της αναζήτησής μας δέντρο.  Έτσι, για αυτούς τους δικτυακούς κόμβους, βρισκόμαστε πίσω στην χρησιμοποιώντας μια φόρμουλα που θα ενσαρκώνει το γενικό πρόβλεψης της μελλοντικής βιωσιμότητας του σκάφους!
Αυτό το είδος της κερδοσκοπίας που μπορεί να δικασθεί με την One-Piece και δύο τεμαχίων αλγορίθμων, σε αντικατάσταση του σκάφους απλοϊκή αξιολόγηση μετρήσεις.  Ας υποθέσουμε ότι όλα τα επόμενα κομμάτια είναι εξίσου πιθανό και ολίγοις οι ικανότητες ενός σκάφους για να φιλοξενήσουν κάθε είδους κομμάτια με τον καλύτερο δυνατό τρόπο.  Αυτό μπορεί να πραγματοποιηθεί με ένα, δύο, ή οποιουδήποτε αριθμού των κερδοσκοπικών κινηθούν βάθη - με όλα τα κομμάτια είναι εξίσου πιθανό (p=1/7).
Ο τερματικός σταθμός των κόμβων του παρόντος δέντρο μπορεί να εξακολουθεί να απαιτεί από τον σταθμισμένο μετρήσεις για την αξιολόγηση, αλλά η κερδοσκοπική στρώματα με μεγαλύτερη ακρίβεια αποδώσει την ουσία του τι θέλουμε να κάνουμε: Προσδιορίζεται το πόσο καλά μια δεδομένη σκάφους μπορεί να δεχτεί όλα τα δυνατά κομμάτια, συμπεριλαμβανομένων και των θετικών παραγόντων όπως η ολοκλήρωση γραμμές και αρνητικοί παράγοντες όπως η αύξηση του συνολικού ποσού των πασσάλων ύψος, κλπ.

7. Tetris A.I. σύστημα επίδειξης

7.1 Σύστημα επισκόπηση

Αυτό το ακόλουθο διάγραμμα δείχνει μου πειραματικό set-up.
tetris_diagram_overall_system_03.jpg
Συνολικού συστήματος για την επίδειξη

7.2 Εξοπλισμός

Εδώ είναι μια σύντομη λίστα του εξοπλισμού που χρησιμοποιείται σε αυτή τη διαδήλωση:
[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)
Είναι σαφές ότι μπορείτε να χρησιμοποιήσετε παρόμοιο εξοπλισμό για να επιτευχθεί το ίδιο αποτέλεσμα.  Περισσότερες λεπτομέρειες σχετικά με τον εξοπλισμό που περιγράφονται στα αντίστοιχα τμήματα του παρόντος άρθρου.
Ακολουθούν σύντομες περιγραφές των προσωπικών υπολογιστών που χρησιμοποιούνται σε αυτή τη διαδήλωση:
[1] Personal Computer (PC), 350 MHz, Windows 98   [Runs video game]
[2] Personal Computer (PC), 800 MHz, Windows 2000 [Runs AI program]
Αυτή η διαδήλωση θα μπορούσε εύκολα να αναπαραχθεί με άλλα λειτουργικά συστήματα, όπως Linux.  Είναι πιο σημαντικό να έχουμε μια CPU ταχύτητα της τάξης των 800 MHz ή ταχύτερος για τον υπολογιστή που να τρέχει το λογισμικό A.I., επειδή αυτός ο υπολογιστής θα κάνει πραγματικό χρόνο επεξεργασία των βίντεο.

7.3 Καταγραφής βίντεο hardware

I χρησιμοποιηθεί ένα κοινό USB βιντεοκάμερα ως συσκευή καταγραφής βίντεο για A.I. μου σύστημα.  Συγκεκριμένα, θα χρησιμοποιηθεί το Creative "WebCam Pro", USB βιντεοκάμερα με 640 * 480 ψήφισμα.
creative_web_cam_pro_site.jpg
Creative(TM) USB βιντεοκάμερα περιγραφή
http://us.creative.com/products
tetris_web_cam_angle.jpg
USB βιντεοκάμερα (σε γωνία)
tetris_web_cam_front.jpg
USB βιντεοκάμερα (εμπρός)
tetris_web_cam_ccd.jpg
USB βιντεοκάμερα (σκάφους με CCD)
tetris_web_cam_chips.jpg
USB βιντεοκάμερα (κύριες μάρκες)
tetris_web_cam_ov511_blocks.jpg
OV511 βασικούς άξονες (σημείωση: USB βιντεοκάμερα είναι OV511+)

7.4 OV511 δελτίο δεδομένων

ov511ds.pdf
OV511 δελτία δεδομένων
1136328 bytes
MD5: e927d786e16baea59b7e7e54529778c0

7.5 OV511+ ( "συν") χαρακτηριστικό διαφορές

ov511plus_101.pdf
OV511+ χαρακτηριστικό διαφορές
56271 bytes
MD5: 388a03c56d6f67d6d5d80e3d06c4de21

7.6 Λογισμικό καταγραφής βίντεο

Microsoft έχει μια πολύ παλιά API όνομα "Video for Windows" (VFW) που χρησιμοποιήθηκε με επιτυχία για το έργο αυτό.  (Μπορείτε να σύνδεσμο "vfw32.lib" C++ στο έργο σας, ή κάνετε μια DllImport "vfw32.dll" στο δικό σας κώδικα C#.) Παραδείγματα που χρησιμοποιούν την VFW API είναι ευρέως διαθέσιμα.
Μια εναλλακτική λύση είναι η χρήση Microsoft's "DirectShow" API να κάνουμε καταγραφής βίντεο.
Επειδή VFW πήρε μόνο μια ντουζίνα γραμμές κώδικα σε χρήση, και διενεργήθηκε στις αποδεκτές 800 MHz μηχανή μου, εγώ δεν τον κόπο η διερεύνηση εναλλακτικών APIs.  Αλλά DirectShow είναι μια πιο σύγχρονη API για Windows καταγραφής βίντεο, και δυνητικά αποδόσεις πολύ υψηλότερη ταχύτητα πλαισίου για το ίδιο υλικό.
Κοιτάξτε το "CPF.StandardTetris.STVideoCapture" πηγαίο κώδικα των αρχείων στο Standard Tetris λογισμικό για να δείτε πόσο εύκολο είναι να πάρετε καταγραφής βίντεο με την δική σας σχέδια.

7.7 Computer interface να ηλεκτρονόμοι (μέσω RS232)

Για να έχουν έναν υπολογιστή "Τύπο κλειδιά" για το πληκτρολόγιο του υπολογιστή άλλη, έχω μια "ρελέ του σκάφους" που ελέγχονται από το κείμενο εντολές που αποστέλλονται από μια σειριακή θύρα επικοινωνίας (π.χ.: "COM1") μέσω ενός καλωδίου RS-232.  Ι χρησιμοποιούνται κάθε ρελέ για σύνδεση των δύο σύρματα ενός ειδικού πληκτρολογίου κλειδί για την προσομοίωση βασικό τύπο.
Αυτό που απαιτείται το άνοιγμα του πληκτρολογίου και κάνοντας συνδέσεις.  Υπάρχουν πολλές μέθοδοι για ευκολότερη προσομοιώνουν κλειδί με πίεση σε έναν υπολογιστή, θα ήθελα όμως να κάνει κάτι που έμοιαζε όσο το δυνατόν πλησιέστερη προς ένα πρόσωπο που πραγματικά δακτυλογράφησης για ένα πληκτρολόγιο.
Ένα πολύπλευρο και πολύ καλά γίνεται αναμετάδοση του σκάφους είναι το ADR2200 από Ontrak Control Systems:
ontrak_adr2200_board.jpg
Ontrak Control Systems ADR2200 RS232 / RS485 Relay I/O Interface
ontrak_adr2200_web_site.jpg
Ontrak Control Systems ADR2200 RS232 / RS485 Relay I/O Interface
http://www.ontrak.net/adr2200.htm
Μπορείτε να δείτε το "CPF.StandardTetris.STRS232" πηγαίο κώδικα των αρχείων για να δείτε πόσο εύκολο είναι να στείλετε bytes μέσω σειριακής θύρας, η οποία στη συνέχεια μπορεί να χρησιμοποιηθεί για τον έλεγχο των συσκευών, όπως τα ADR2200 σκάφους που εμφανίζεται παραπάνω.

8. Standard Tetris λογισμικού

8.1 Λήψη λογισμικού

Πήγαινε στην αρχή αυτού του άρθρου, για να βρει ένα σύνδεσμο για να κατεβάσετε τον πηγαίο κώδικα (C# και C++ εκδόσεις) και ενσωματωμένο λογισμικό (*.exe).

8.2 Περίληψη των χαρακτηριστικών

Λογισμικό χαρακτηριστικά:
Η διδασκαλία οθόνες και πιστώσεις
Μονόχρωμο mode
Σκιά mode
Συμβουλή mode
Junk σειρές
Ποσοστό ελέγχου
Επόμενο κομμάτι
Συμβούλιο μέγεθος
S/Z τεμάχια
Calibration mode
Καταγραφής βίντεο και αναγνώριση
Debugging console
Save game
Load παιχνίδι

8.3 Ξεκινώντας εμφάνιση

Εμφάνιση όταν το λογισμικό έχει αρχίσει:
tetris_app_startup.jpg
Εμφάνιση όταν το λογισμικό έχει αρχίσει

8.4 Μονόχρωμο mode

Εξ 'ορισμού, το συμβούλιο εμφανίζεται στο χρώμα:
tetris_app_colormode01.jpg
Εξ 'ορισμού, το συμβούλιο εμφανίζεται στο χρώμα.
Το χρώμα mode μπορεί να αλλάξει σε μονόχρωμη (Shift + K):
tetris_app_colormode02.jpg
Το χρώμα mode μπορεί να αλλάξει σε μονόχρωμη.

8.5 Σκιά mode

Σκιά mode δείχνει ένα κομμάτι όπου θα γης.  Αυτό είναι πολύ χρήσιμο για τα πολύ μεγάλα διοικητικά συμβούλια, διότι είναι δύσκολο να κρίνω όταν ένα κομμάτι θα γης.
tetris_app_shadowmode.jpg
Σκιά mode δείχνει ένα κομμάτι όπου θα γης.

8.6 Συμβουλή mode

Συμβουλή mode σας δείχνουν σήμερα-όταν το επιλεγμένο AI θα κινηθούν με δεδομένη την υφιστάμενη κατάσταση.  (Shift + H)
tetris_app_hintmode.jpg
Συμβουλή mode, όπου δείχνει την στιγμή που επιλέχθηκαν AI θα προχωρήσουμε.

8.7 Junk σειρές

Τοποθετήστε "junk" σειρές στο κάτω μέρος του σωρού, ένα προς ένα, με το χέρι.  (Shift + J)
tetris_app_junkrows.jpg
Τοποθετήστε "junk" σειρές στο κάτω μέρος του σωρού.

8.8 Ποσοστό ελέγχου

Η '+' (συν) και '-' (μείον) πλήκτρα ελέγχου της ταχύτητας του παιχνιδιού.
Από προεπιλογή, το παιχνίδι τρέχει σε σταθερή ταχύτητα, σύμφωνα με τους κανόνες του Προτύπου Tetris (ταχύτητα με βάση επίπεδο).
Εδώ είναι ένας πίνακας των νοημάτων της ταχύτητας μεροληψία:
-3,-4,...: βραδύτητα ανάλογη με προκατάληψη
-2: βραδύτερος από το επίπεδο 1
-1: κανονική, αλλά περιορίζεται στο επίπεδο 6 (0,2 sec), ταχύτητα?
0: κανονικό?  Standard Tetris ελέγχου ταχύτητας?
+1: ελαφρώς ταχύτερη από ό, τι επίπεδο 9 (0.05 sec καθυστερήσεις)?
+2: οριοθετούνται από καθιστώντας ποσοστό (π.χ.: 75 Hz)?
+3,+4,...: πολλαπλές επαναλήψεις ανά τετηγμένο πλαίσιο?
Μου αρέσει να τρέχει το A.I. σε μια ρύθμιση του "+2" (πατήστε '+' κλειδί δύο φορές, αν η μεροληψία ξεκινά στο μηδέν).
tetris_app_speedcontrol.jpg
Ταχύτητα μεροληψία μεταβάλλει την ταχύτητα του παιχνιδιού.

8.9 Δείτε το επόμενο κομμάτι

Hit 'N' για να επιλέξετε το "Επόμενο κομμάτι" οθόνη.  Η A.I. θα χρησιμοποιήσει το "Επόμενο κομμάτι" πληροφορίες μόνο αν η "Επόμενο κομμάτι" εμφανίζεται στην οθόνη.
Μπορείτε να είστε βέβαιοι ότι το AI δεν χρησιμοποιεί "Επόμενο κομμάτι" τις πληροφορίες όταν δεν μπορείτε να δείτε την "Επόμενο κομμάτι" στην οθόνη.
tetris_app_nextpiece.jpg
Δείτε το επόμενο κομμάτι

8.10 Συμβούλιο μέγεθος

Πιέζοντας Ctrl + (αριστερή, δεξιά, κάτω, μέχρι), μπορεί κανείς να προσαρμόσει το μέγεθος του σκάφους σε αυθαίρετα μεγέθη από 4 * 4 μέχρι 200 * 400.
tetris_app_boardsize.jpg
Board size: 4 * 8
tetris_app_board20x40.jpg
Board size: 20 * 40
tetris_app_board40x80.jpg
Board size: 40 * 80
tetris_app_board20x5.jpg
Board size: 20 * 5
tetris_app_board4x100.jpg
Board size: 4 * 100

8.11 S/Z κομμάτια μόνο

Μελέτη το ενδιαφέρον εναλλασσόμενο S/Z μοτίβο.
Αυτό το μοντέλο δεν μπορεί να λυθεί για μια 10 * 20 σκάφους (πλάτος * ύψος).
Ωστόσο, οι πίνακες που έχουν πλάτος που είναι πολλαπλάσια του 4 είναι trivially φαίνεται να επιτρέπει την επιβίωση άπειρο.
Η AIs επιβιώσει επ 'αόριστον σε αυτές τις περιπτώσεις, παρόλο που δεν ήταν ειδικά ρυθμισμένο για τον χειρισμό αυτής της παθολογικής κατάστασης.
tetris_app_sz_pieces.jpg
S/Z κομμάτια μόνο

8.12 Βίντεο βαθμονόμησης mode

Hit 'C' για να εισέλθουν "Calibration Mode".  Όταν στη διακρίβωση λειτουργία, μπορείτε να χτυπήσει τον αριθμό κλειδιά: {1,2,3,4,5,6,7} να επιλέξετε ένα κομμάτι {O,I,S,Z,L,J,T} στην κορυφή του παιχνιδιού του σκάφους.
Αυτό είναι χρήσιμο ως αναφορά εικόνα για την καταγραφής βίντεο σχετικά με ένα δεύτερο Standard Tetris λογισμικού.
Αν χτυπήσει τον 0 (μηδέν) κλειδί, θα κάνω το κενό του σκάφους.
Μπορείτε να υποκρίνονται ότι αναπαράγονται από την επιλογή των κομματιών ένα κομμάτι (1..7) και, στη συνέχεια, επιλέγοντας ένα κενό (0), ενώ ένα δεύτερο υπολογιστή κάνει τα ρολόγια καταγραφής βίντεο για τεμάχια.
Μπορείτε να εκτελέσετε το A.I. στον δεύτερο υπολογιστή και να δούμε πώς θα ασχολείται με το χέρι σας τέθηκε παθολογική Tetris σενάρια!
Calibration Mode είναι η μόνη φορά που μπορείτε να χειριστείτε το καταγραφής βίντεο επεξεργασία εικόνας πρότυπο (4 * 2 πλέγμα).  Μπορείτε να χρησιμοποιήσετε το ποντίκι για να αντλήσει από το ορθογώνιο, αλλά τότε μπορείτε να χρησιμοποιήσετε τα πλήκτρα δρομέα ( "up", "κάτω", "αριστερά", "δικαίωμα") να έχει ωραία έλεγχο των συνόρων - Shift χρησιμοποιώντας το κλειδί για να επιλέξετε απέναντι από τα σύνορα του ορθογωνίου (παράδειγμα: "Shift-αριστερά" combo είναι διαφορετική από την «αριστερά»).
tetris_app_calibrate.jpg
Βίντεο βαθμονόμησης mode

8.13 Καταγραφής βίντεο και αναγνώριση

Πιέζοντας 'V' Εναλλάσσει τον τρόπο καταγραφής βίντεο.  Αν σωστά βαθμονομημένη (βλ.  "βίντεο βαθμονόμησης" στο προηγούμενο τμήμα), τα κομμάτια ενός απομακρυσμένου οθόνη θα συλληφθούν από την βιντεοκάμερα και ταξινομούνται - και τα κομμάτια θα spawned στο τοπικό παιχνίδι για την A.I. να εξετάσει και να αντιδρούν .
Η A.I. παραγωγή πρέπει στη συνέχεια να μεταδοθεί (μέσω της διεπαφής RS-232 στη διαδήλωση που περιγράφονται στο παρόν άρθρο) στον απομακρυσμένο παιχνίδι εισόδου (π.χ.  πληκτρολόγιο) για την A.I. να διαδραματίσει με επιτυχία το απομακρυσμένο παιχνίδι.
Αν οποιαδήποτε στιγμή αυτό το κλειστού βρόχου έχει διαταραχθεί (παράδειγμα: καταγραφής βίντεο δυσλειτουργία, ή σήμα εξόδου δυσλειτουργία), τότε η A.I. θα αναπτύξει μια ψευδή εικόνα της κατάστασης του απομακρυσμένου παιχνιδιού, και το A.I. θα καταστήσει ακατάλληλη αποφάσεις που γρήγορα χάνουν το παιχνίδι .
(Σημείωση: Αυτό το πρόβλημα μπορεί να ξεπεραστεί με ένα μικρό ποσό προσπάθειας: Η A.I. σύστημα χρειάζεται μόνο να εξετάσει το σύνολο του μακρόθεν Tetris οθόνη για ένα συνεχή "έλεγχος της πραγματικότητας" του συνόλου του σκάφους και τα A.I. σύστημα πρέπει να είναι προετοιμασμένος για κάποιες εντολές για την παραγωγή αποτύχει σε κάποιο τρόπο.)
tetris_app_videocapture.jpg
Καταγραφής βίντεο και αναγνώριση

9. Original Tetris AI πείραμα (2003)

Οι παρακάτω δείχνει η πρώτη έκδοση του Tetris A.I. σύστημα το 2003.
standard_tetris_demo_camera.jpg
Βιντεοκάμερα που αντιμετωπίζει υπολογιστή # 1 εκτελεί κάθε απλού παιχνιδιού Tetris
standard_tetris_demo_ai.jpg
Υπολογιστής # 2 λειτουργίας Standard Tetris λογισμικού σε A.I. mode
standard_tetris_pattern_sequence.jpg
Αριστερά: Με δίκτυο για τη βαθμονόμηση της εικόνας βίντεο αναγνώριση?
Δεξιά: Tetris κομμάτι αναγνώριση περιπτώσεις.
tetris_experiment_video_clip_frame.jpg
Frame από το βίντεο του Tetris A.I. πείραμα κατά το 2003

10. Best ένα κομμάτι Tetris-playing αλγόριθμο στον κόσμο

10.1 Pierre Dellacherie (2003?  Γαλλία)

photo_pierre_dellacherie.jpg
flag_france.jpg
Pierre Dellacherie (2003?  Γαλλία), προγραμματιστής από τα καλύτερα ένα κομμάτι Tetris-playing αλγόριθμο στον κόσμο
Το καλύτερο το ένα κομμάτι, σε πραγματικό χρόνο Tetris αλγόριθμο για να τις γνώσεις μου δημιουργήθηκε από Pierre Dellacherie της Γαλλίας.
Ο αλγόριθμος εκπληκτικό μερικές φορές γεμίζει περισσότερο από 2 εκατομμύρια σειρές!
Η μέση απόδοση είναι με τη σειρά 650000 σειρές.
Ο αλγόριθμος λαμβάνει πολύ μικρή μνήμη, και τρέχει με μεγάλη ταχύτητα (περίπου 160 γραμμές ανά δευτερόλεπτο με 800 MHz μου υπολογιστή).
Επιδόσεις Pierre Dellacherie's αλγόριθμο:
Το σημερινό μοντέλο για τις επιδόσεις του Tetris ΔΓ είναι ότι για κάθε μεμονωμένο κομμάτι υπάρχει μια σταθερή πιθανότητα ότι το παιχνίδι θα τερματίσει, p.
Έτσι, η πιθανότητα ότι ένα κομμάτι δεν θα λύσει ένα παιχνίδι q=(1-p).
Η πιθανότητα το παιχνίδι μετά την περάτωση k κινήσεις είναι απλά το γινόμενο των πιθανοτήτων επιβίωσης (k-1) κινήσεις, δηλαδή q^(k-1), και η πιθανότητα καταγγελίας σχετικά με την επόμενη κίνηση, δηλαδή p.
Αυτό αντιστοιχεί σε μια "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 )
Για μικρές p, ln(q) είναι περίπου (-p), και έχουμε τα ακόλουθα:
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 )
Αναμένουμε το κλάσμα του συνολικού αριθμού των έπαιξε παιχνίδια για να καταγγείλει με αρκετές σειρές ολοκληρωθεί κατά το ενδιάμεσο χρονικό διάστημα [k1, k2] να είναι:
Integral of the Exponential Distribution:

I(k1,k2) = exp[-p * k1] - exp[-p * k2]
Μετά τη συμπλήρωση 36 παιχνίδια στον υπολογιστή μου, σε χρονικό διάστημα δύο ημερών, Βρήκα ένα μέσο όρο των 674827 ολοκληρωθεί σειρές.
Σύμφωνα με τη γενική θεωρία παραπάνω, εγώ θα το ακόλουθο κείμενο σχετικό κλάσμα των παιχνιδιών για να τελειώσουμε με την ακόλουθη σειρά ολοκληρωθεί σειρές:
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
Εδώ είναι ένα διάγραμμα που συγκρίνει τη θεωρία με την Exponential Distribution παρατηρήθηκε κατανομή των παιχνιδιών.
tetris_pdellacherie_exponential_theory01.jpg
Επιδόσεις Pierre's αλγόριθμος ολοκληρωθεί σε 36 παιχνίδια
Παρόλο που υπάρχουν πολύ λίγα παιχνίδια σε αυτό το σύνολο δεδομένων, είναι προφανές ότι το μοντέλο είναι αρκετά καλή σε αντιστοιχία τις παρατηρούμενες διανομής.
Pierre's εισαγωγή προς τον αλγόριθμο:
Pierre άρχισε τις εργασίες της σχετικά με αυτό το ένα κομμάτι αλγορίθμου σε 2003,1.
Pierre μου έστειλε ένα e-mail για τον αλγόριθμο για 2003.4.9, καταγράφοντας τις ακόλουθες επιδόσεις πάνω από 20 συνεχόμενα παιχνίδια:
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.
"Ο αλγόριθμος υλοποιείται στη Turbo Pascal και ολοκληρώνει 7000 σειρές / min.  Athlon 1600+ με."
I Pierre's αλγόριθμος μετατρέπεται σε C++ σε 2003,6, μετά από αρκετές ανταλλαγές e-mail με Pierre.  Θα ελεγχθεί ότι το A.I. στο C++ έκδοση κάνει την ίδια αποφάσεις του Pascal έκδοση.
I παρατηρούνται παρόμοιες επιδόσεις με την αρχική του έκθεση?  Μέσο όρο περίπου 650000 ολοκληρωθεί σειρές, καθώς και ορισμένα παιχνίδια συμπληρώνοντας 2 εκατομμύρια σειρές.
Απίστευτο!

10.2 Συνομιλία με Pierre Dellacherie

[1] Πότε εσείς δημιουργείτε για πρώτη φορά αυτός ο κώδικας;
Έχω ήδη εργάζονται επί του αλγορίθμου από τα τέλη Ιανουαρίου 2003 μέχρι τώρα.
[2] Πόσο καιρό έχετε εργαστεί για αυτό;
Εργάστηκα για σχεδόν κάθε εβδομάδα ...  αλλά δεν καθημερινή καιρό γιατί έχω άλλες δραστηριότητες: Δυστυχώς, θα πρέπει να κερδίσουν χρήματα όπως και οποιοσδήποτε άλλος!
[3] Τι ενέπνευσε το σχεδιασμό του κώδικα;
Έπαιξα Tetris 10 ή 15 χρόνια πριν, αλλά δεν είχα παίξει και πάλι για μεγάλο χρονικό διάστημα.  Θα έλεγα ότι είμαι ένα "μέσο" παίκτη που γνωρίζει τους κανόνες και μερικά κόλπα.
Ωστόσο, όταν άρχισε να εργάζεται επί του αλγορίθμου δεν είχα παίξει τόσο πολύ γιατί βρήκα, ήταν μάλλον πιο αποτελεσματικά για να παρακολουθήσουν τον υπολογιστή να παίζουν και να αναλύσουμε τις αδυναμίες του.
[4] Μήπως χρήση οποιουδήποτε αυτοματισμού "να" εκπαιδεύσει τον κωδικό σας για να αποδώσει καλύτερα; Μήπως έχετε κάποια σχόλια για τη βελτίωση του αλγορίθμου;
Ή μήπως απλά παρακολουθούν τα αποτελέσματα και να αποφασίσουμε να κάνουμε αλλαγές;
Είμαι από το "παλιό σχολείο:" εγώ απλά έβλεπε τα αποτελέσματα και αποφάσισε να κάνει τροποποιήσεις.
"Αυτόματη μάθηση" είναι ένα είδος μετα-αλγόριθμος έτσι δεν είμαι βέβαιος ότι το κάνουμε αυτό τον τρόπο θα πάρετε αυτό το ευκολότερο ως μετα-αλγόριθμος θα πρέπει να κατασκευαστούν επίσης και ότι δεν είναι τόσο εύκολο!
Τι περισσότερο, εγώ συμφωνώ με Roger Penrose όταν λέει (στο βιβλίο του "Shadows of the mind") ότι η ανθρώπινη κατανόηση και διαίσθηση δεν μπορεί να αλγοριθμικής (παράδειγμα: υπολογίσιμο).
[5] Πότε ξεκινάτε για πρώτη φορά παίζει Tetris, και πότε έχετε την ιδέα της επίλυσης Tetris με A.I.;
I διδάσκουν αλγοριθμικής και προγραμματισμού υπολογιστών (Turbo Pascal και Scilab) για τους φοιτητές που τρένο για εισαγωγικές εξετάσεις πανεπιστημιακού μηχανικού σχολεία.
Κατά την πρώτη, "Ο υπολογιστής παίζει Tetris" ήταν μια ιδέα που ήθελα να αναπτύξουν μου για το επόμενο έτος οι σπουδαστές.
Δεν γνώριζα την ιστοσελίδα σας, όταν άρχισε να εργάζεται για το αλγόριθμο.
Πράγματι ήμουν τυχερός να γνωρίζουν την ιστοσελίδα σας μόνο πριν από λίγες εβδομάδες, διότι νομίζω ότι θα έχουν αποθαρρυνθεί από τα αποτελέσματα σας (όπως μπορείτε να μαντέψετε, οι πρώιμες εκδοχές του αλγορίθμου μου δεν παίζουν τόσο καλά!).
[6] Ποια είναι η τρέχουσα κατάσταση;
Είμαι σχεδόν 30 [πριν από το 2003 Απρ 27].  Έχω πολλές δραστηριότητες: Είμαι cellist, συνθέτουν μουσική μου και να διδάξω προγραμματισμό υπολογιστών.
Έχω ένα master στο πτυχίο μουσικολογίας (1994) και "Artificial Intelligence and Algorithmic" δίπλωμα (1998).
Στη Γαλλία αυτό το δίπλωμα που αντιστοιχεί στο 5 ο έτος που φοιτούν στο Πανεπιστήμιο (4 ο έτος είναι το Μεταπτυχιακό Δίπλωμα Ειδίκευσης και 6 ο έτος είναι η διατριβή).
Pierre's συνθέσεις:
http://perso.club-internet.fr/dellache/Personnel/scores2.html
[7] Πού ζείτε;
Είμαι γαλλική και ζω στη Ρουέν (Νορμανδία).
[8] Άλλα σχόλια:
Τελικά δεν έχω καμία καινούργια ιδέα για να τη βελτιώσουμε.
Έχω δοκιμάσει τόσα πολλά άχρηστα (και ανόητος) αμφιβάλλω ότι τα πράγματα θα μπορούσε να βελτιωθεί.
Από την άλλη πλευρά, νομίζω ότι μπορεί να υπάρχει εντελώς διαφορετική αλγόριθμοι που θα μπορούσαν να έχουν καλύτερες επιδόσεις.
Παρεμπιπτόντως, μια πιο γρήγορη δοκιμή συνίσταται στην έναρξη λειτουργίας του κομμάτια σε ενάμιση-box (10 γραμμές Χ 10 στήλες): κατά το ήμισυ-box, μου αλγόριθμος κάνει κατά μέσο όρο 280 ολοκληρωθεί σειρές.
Και κάτι ακόμα: ο αλγόριθμος μπορεί εύκολα να μεταβληθεί σε ένα διπλό συμμετοχής αλγόριθμο ([θα κάνω] τις δοκιμές σύντομα).
Λατρεύω μουσική κινηματογράφου: να γίνει μια ταινία συνθέτη είναι μέρος από τις βασικές μου όνειρα (αλλά είναι απλώς το όνειρο!).

11. Best ανθρωπίνων παίκτης στον κόσμο

11.1 Ιαπωνικά Tetris Master (2001 Ιαν.  27) video

flag_japan.jpg
tetris_japanese_master_2001_frame.jpg
Tetris πλοίαρχος (2001?  Ιαπωνία) το βίντεο
Arika παρουσιάζει η ιαπωνική Tetris τελικά του πλοιάρχου (2001 Ιαν.  27).  "TETRIS THE ABSOLUTE PLUS --The Grandmaster2-- DEATH-MODE"

12. Σχόλια

12.1 Slashdot thread (2003)

Το 2003, μου Tetris A.I. σχέδιο συζητήθηκε με τα Slashdot Internet forum (http://slashdot.org).
tetris_slashdot_article_headlines.jpg
Slashdot (http://slashdot.org) Internet headline φόρουμ για τη συζήτηση του σχεδίου μου 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 ]
fullarb_hotmail_com_tetris_ed209.jpg
Comic εμπνευσμένη από μου Tetris A.I. έργου (2003) (η πρώτη φορά που έχω ποτέ ενέπνευσε μια κόμικ!)
fullarb_hotmail_com_tetris_ed209_02.jpg
Comic εμπνευσμένη από μου Tetris A.I. έργου (2003) (η δεύτερη φορά που έχω ποτέ ενέπνευσε μια κόμικ!)

13. Η ιστορία του Tetris A.I. έργου

Την άνοιξη του 1989 ήμουν απασχολημένος παράβλεψη (και παραλείποντας) το δεύτερο εξάμηνο του freshman τάξεις στο University of Pennsylvania.
Ένα από μου roommates, Bill Matthews, είχε την Mac Classic, και μερικές φορές παίζονται παιχνίδια βίντεο.
Άνθρωποι που έχουν εισαχθεί προς Ivy League σχολεία είναι συνήθως την τάση να ανταγωνίζονται με άλλους ανθρώπους ανά πάσα στιγμή - όταν λοιπόν Bill πήρε το παιχνίδι Tetris για την Mac, θα αρχίσει αμέσως μια μακροχρόνια μάχη για την υψηλή βαθμολογία.
Όπως και οι βαθμολογίες αναρριχήθηκε, ο χρόνος που απαιτείται για να κάνουν επενδύσεις ένα μικρό κέρδος αυξήθηκε εντυπωσιακά.
Για να πραγματοποιήσετε μια μακρά ιστορία σύντομη, Bill δήθεν κατέχει την υψηλή βαθμολογία μεταξύ μας, αλλά φαντάζομαι να του χρησιμοποιώντας ResEdit hacking και το σκορ αρχείο!
Bill είχε τάξεις στο σχολείο Wharton των επιχειρήσεων, την alma mater των Michael Milken και Donald Trump, έτσι δεν είναι αδιανόητο ότι κάποιος φέρει μια impossibly υψηλή βαθμολογία ...
Το καλοκαίρι του 1990 θα δανειστεί μια 30 MHz Intel 80386 IBM PC from my roommate, Alex Haidas.
Εγώ αγόρασα ένα Mac πληκτρολόγιο σε μια υπαίθρια αγορά για $ 1.
I ενσωματωμένη παράλληλη θύρα κυκλώματα για να επιτραπεί η PC για τον έλεγχο της Mac πληκτρολόγιο.
(I χρησιμοποίησε μια CMOS 4040 chip να λειτουργήσει ως ένα είδος στερεά κατάσταση ρελέ να ενταχθούν στο εσωτερικό του πληκτρολογίου επαφές Mac πληκτρολόγιο.)
Έγραψα ένα πρόγραμμα υπολογιστή που χρησιμοποιήθηκε μια απόφαση δέντρο όπως τη στρατηγική της για να παίζουν το παιχνίδι Tetris.  Σε μερικές μόλις εβδομάδες είχα μια PC παίζουμε το παιχνίδι Tetris εκτελείται σε ένα Mac.
Ωστόσο, ήταν υποχρεωμένη να χρησιμοποιήσει το PC πληκτρολόγιο για να πούμε την A.I. για κάθε κομμάτι που υπάγονται στην οθόνη.
Άρχισα να εργάζομαι σε ένα κύκλωμα, χρησιμοποιώντας CdS (Cadmium Sulfide) φως ανιχνευτές που θα άπαχο Mac κατά την οθόνη και να "δούμε" τα κομμάτια που υπάγονται, αλλά CdS αισθητήρες αντέδρασε υπερβολικά αργά στις αλλαγές στη φωτεινότητα και την αντίθεση μεταξύ Tetris τεμάχια και το ιστορικό της Mac Classic οθόνη ήταν πολύ χαμηλό σε αξιόπιστη διάκριση.
Σε εκείνες τις ημέρες δεν είχα πολλά χρήματα, γι 'αυτό και ήταν πολύ επικίνδυνο να αγοράσει ένα $ 2 Radio Shack phototransistor ότι δεν μπορεί να κάνει ό, τι ήθελα.
Επίσης, με δεδομένη την αντίθεση πρόβλημα, είμαι απαισιόδοξος όσον αφορά την όλη προσέγγιση.
Όταν αγόρασα το πρώτο μου προσωπικών υπολογιστών κατά το 1996, δεν θα μπορούσα να πάρετε το λογισμικό υπό Windows 95 σε 100 MHz CPU να κάνουμε επεξεργασίας βίντεο αρκετά γρήγορος για να κάνουν ένα απλό σύστημα το όραμα έργο.
Έγραψα την επεξεργασία εικόνας στον κωδικό της συναρμολόγησης γλώσσα, αλλά υπήρχε τόση γενικά πριν μου κώδικα που πράγματι έλαβε βίντεο δεδομένα που φαινόταν αδύνατο να κάνω κάτι αξιόλογο.
Το 2003, την τεχνολογία, ιδιαίτερα CPU ταχύτητα, είχε φτάσει σε ένα επίπεδο που θα πραγματοποιηθεί τον τερματισμό του έργου σχεδόν ασήμαντο.
I dug up παλιό μου προσωπική έργου και τελικά ολοκληρωθεί, να διαθέσει ορισμένες αίσθηση του κλεισίματος.
Ήταν πολύ συναρπαστικό να δείτε έναν υπολογιστή παίζοντας ένα άλλο υπολογιστή μέσω της USB βιντεοκάμερα και των κέντρων.
Ο ήχος των κέντρων κάνοντας κλικ, και βλέποντας τα κομμάτια γύρισμα και πτώση σε γελοίες, υπεράνθρωπη ταχύτητες, έκανε την εμπειρία μεγάλη ικανοποίηση σε πολυτροπικές τρόπο.
Το 2003, την εργασία μου αναγνωρίστηκε από Slashdot (http://slashdot.org), και έλαβα μια πολλή μεγάλη ανατροφοδότηση.
Είχα προσκληθεί να παραστεί στο "Screen Savers" για την τηλεόραση δείχνουν TechTV ψηφιακό τηλεοπτικό δίκτυο.
Πήγα στο Σαν Φρανσίσκο και φάνηκε να το δείτε, και η εμπειρία ήταν μεγάλη.
Αργότερα στη 2003, έλαβα ένα μήνυμα από Henk Rogers, καλέσατε να Χαβάη να τον γνωρίσουμε και Alexey Pajitnov να μιλήσουμε για την ίδρυση κάποιου είδους πρότυπο για Tetris, για τους σκοπούς του τουρνουά έχοντας Tetris.
Ένα ιδιαίτερα ενδιαφέρον ήταν παίκτες που επιτρέπει να χρησιμοποιούν τα κινητά τηλέφωνα να "ανταγωνίζονται μεταξύ τους," έμμεσα, μέσω A.I. ότι μιμείται παίκτες (με προηγούμενη ανάλυση του κάθε παίκτη δράσεις), αποφεύγοντας έτσι τις επιπτώσεις των κινητών τηλεφώνων πρόσβαση στο Internet λανθάνουσα κατάσταση, και επιτρέποντας παίκτες να "ανταγωνιστούν" * Το πολύ καλύτερος παίκτες του ανθρώπου στον κόσμο (*...  ή, μάλλον, A.I. απομίμηση είναι οι καλύτεροι παίκτες του ανθρώπου στον κόσμο).
I was thrilled από την προοπτική της συνάντησης ο δημιουργός του Tetris.  Δυστυχώς, οι πτήσεις με κάνει να ανησυχούν, και μου αρνήθηκαν την πρόσκληση.
Το 2006, θα μετατραπεί μου "Standard Tetris" λογισμικό από C++ να C# να κάνει το λογισμικό πιο προσιτές και χρήσιμες για τη σύγχρονη προγραμματιστές.
colinfahey.com
επικοινωνία
English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية