Tetris
Colin Fahey
1. सॉफ्टवेयर
StandardTetris_2007June4.zip
Tetris स्रोत कोड ( C# और C++ संस्करण ) और कार्यक्रम ( "exe" ) ;
4068277 bytes
MD5: 4e957e0ead66064183e9f7e04e618ec0
2. परिचय
यह लेख का वर्णन कर सकते हैं कि किस तरह एक कंप्यूटर वीडियो गेम खेलने के क्लासिक Tetris के बारे में जानकारी के बोर्ड द्वारा मिल रहा है , अच्छे कार्यों को निर्धारित करने , और उन कार्यों का निष्पादन .
यह लेख सॉफ्टवेयर शामिल हैं Tetris में खेलने में सक्षम वास्तविक समय है .
इस सॉफ्टवेयर शामिल हैं वास्तविक समय का सबसे अच्छा खेलने Tetris एल्गोरिथ्म सार्वजनिक डोमेन में है .
यह लेख परिभाषित "Tetris मानक" नियमों के लिए , एक विवरण के आधार पर 1986 के मूल संस्करण में पूर्व वाणिज्यिक Tetris के लिए निजी कंप्यूटर (PC) .
2003 में , इस अनुच्छेद में शामिल सॉफ्टवेयर का उपयोग किया गया सक्षम करने के लिए एक कंप्यूटर Tetris खेलने के लिए एक अलग कंप्यूटर पर चल रहे हैं .
एक साधारण USB वीडियो कैमरे का उपयोग किया गया सक्षम करने के लिए कंप्यूटर को "देखने" के लिए स्क्रीन के अन्य कंप्यूटर है .
बोर्ड के एक रिले एक RS-232 अंतरफलक के द्वारा नियंत्रित किया गया था सक्षम करने के लिए कंप्यूटर पर "कुंजी" को "प्रेस" के अन्य कंप्यूटर कीबोर्ड है .
इस प्रकार , कंप्यूटर के पहले के संबंध में एक दूसरे के समान है कि कंप्यूटर में एक विशिष्ट मानव संबंधों को एक कम्प्यूटर खिलाड़ी के खेल जब Tetris ; खेल राज्य के नाम से जाना जाता है केवल स्क्रीन पर भी विचार किया , और खिलाड़ी कार्रवाई शुरू की जा सकती है के माध्यम से एक की बोर्ड .
इस प्रदर्शन के विन्यास में स्थापित की है कि एक कंप्यूटर से बेहतर खेल सकते हैं Tetris एक मानव के अंतर्गत , सामान्य वास्तविक समय Tetris खेलने की स्थिति है .
3. Tetris का इतिहास
1985 में , Alexey Pajitnov कंप्यूटर इंजीनियर थे और Dmitry Pavlovsky पर Computing Center of the Russian Academy of Sciences .

Dorodnicyn Computing Centre के Russian Academy of Sciences
Alexey थे और Dmitry के विकास में दिलचस्पी और कंप्यूटर गेम बेच लत है .
वे जांच के खेल में कई अलग अलग है .
Alexey से प्रेरित था प्राचीन यूनानी पहेली खेल , Pentaminos है , जो पहेली की व्यवस्था शामिल किए गए पाँच टुकड़ों वर्ग है .
Alexey विचार के विचार के टुकड़ों के रूप में वे गिर Pentamino की व्यवस्था करने के लिए एक आयताकार कप में है , लेकिन जान लिया है कि पांच बारह विभिन्न आकारों वर्ग के लिए किए गए एक वीडियो गेम बहुत जटिल है .
Alexey में स्विच करने का उपयोग करते हुए सात टुकड़े "tetramino" , प्रत्येक वर्ग के चार बनाया है .
1985.6 में , Alexey Pajitnov क्रमादेशित के पहले संस्करण में Tetris पर Electronica 60 .

Dmitry Pavlovsky , Alexey Pajitnov , और Tetris .
1985-1986 में , Vadim Gerasimov , एक 16 वर्षीय उच्च विद्यालय कंप्यूटर पर काम किया जो विलक्षण अकादमी , Tetris के लिए लागू की IBM PC के MS-DOS ऑपरेटिंग सिस्टम चल रहा है .
( Vadim Gerasimov ने बाद में अनुसंधान में MIT Media Laboratory , 2003 से 1994 के माध्यम से , एक पीएच.डी. प्राप्त करने के बाद परियोजनाओं को पूरा करने के कई दिलचस्प :
http://vadim.www.media.mit.edu )

स्क्रीन के 1987-1988 की शुरूआत से पहले जारी की वाणिज्यिक Tetris के लिए PC

इस खेल को खेलने के स्क्रीन 1987-1988 पूर्व व्यावसायिक Tetris के लिए जारी की PC
1987 के बाद , Tetris विश्व भर में फैले हैं .
The Tetris Company, LLC , Tetris ट्रेडमार्क के मालिक हैं .
4. परियोजनाओं से प्रेरित Tetris
4.1 0 - आयामी Tetris
अभी विकसित नहीं है .
4.2 1 - आयामी Tetris
Ziga Hajdukovic ने 1 - आयामी Tetris सॉफ्टवेयर विकसित किया जा सकता है कि इंटरनेट ब्राउज़र में खेला है .
Ziga Hajdukovic ने भी विकसित 1 - आयामी Tetris सॉफ्टवेयर के लिए मोबाइल फोन का उपयोग करके Java J2ME मंच है .
4.3 2 - आयामी Tetris
सभी पारंपरिक Tetris वेरिएंट इस श्रेणी में हैं .
यह खंड शामिल हैं वेरिएंट दिलचस्प है .
4.3.1 सबसे बड़ा खेल कभी Tetris : Delft University of Technology (1995)

Tetris पर खेला निर्माण ; 2000 m^2 सतह क्षेत्र ; Delft University of Technology (1995)

Tetris पर खेला निर्माण ; 2000 m^2 सतह क्षेत्र ; Delft University of Technology (1995)
4.3.2 एक अन्य इमारत पर Tetris खेल खेला : Brown University (2000)

Tetris खेल का उपयोग करके प्रदर्शित की रोशनी में एक इमारत में खिड़कियां Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
"मैं सोचता हूँ कि यह सिर्फ एक दिन की बात सबसे अविश्वसनीय मैं अपने जीवन में कल्पना कर सकता है . हमेशा की तरह नौकरियाँ स्टीव ने कहा , यात्रा के प्रतिफल है ."
"यह परियोजनाओं ने मुझे लगता है कि हमने कॉलेज में वापस . हालात थे कि लगभग undoable है कि अन्य लोगों के बारे में सोचना भी नहीं कर रहे हैं ."
Steve Wozniak (2000)
4.3.3 इंटरनेट ब्राउज़र के साथ खेल MIT "ग्रीन बिल्डिंग" छवि

Vadim Gerisimov's इंटरनेट ब्राउज़र Tetris
यह इंटरनेट ब्राउज़र Tetris मा Vadim Gerasimov द्वारा बनाया गया था .
यह इंटरनेट ब्राउज़र Tetris सुविधाओं के निर्माण पर "Green" के परिसर में MIT .
यह कॉलम Tetris मा के बजाय केवल नौ ने दस मानक कॉलम शामिल हैं .
यह नया टुकड़ों के साथ प्रस्तुत Tetris मा यादृच्छिक झुकाव है .
Vadim Gerasimov ने लिखा है वह व्यक्ति जो कंप्यूटर के लिए कोड के PC संस्करण Tetris में 1986 .
Vadim Gerasimov ने पीएच.डी. MIT Media Laboratory पर अनुसंधान के दौरान 1994-2003 , कई दिलचस्प परियोजनाओं पर काम है .
4.3.4 PIC16F84 12 MHz microcontroller आधारित NTSC / PAL वीडियो Tetris खेल

PIC16F84 12 MHz microcontroller आधारित NTSC / PAL वीडियो Tetris खेल
इस छवि के ऊपर से पता चलता है NTSC / PAL वीडियो आउटपुट द्वारा निर्मित एक PIC16F84 12 MHz microcontroller सॉफ्टवेयर द्वारा लिखित Rickard Gunee में चल रहे 1998 .
इस वीडियो संकेत है सॉफ्टवेयर के द्वारा उत्पन्न नियंत्रण के डिजिटल outputs .
4.3.5 "Scopetris" Oscilloscope Tetris द्वारा Lars Pontoppidan (2007.8)

"Scopetris" Oscilloscope Tetris द्वारा Lars Pontoppidan (2007.8)
Lars Pontoppidan के लिए कोड के AtMega32 microcontroller ने लिखा है , और कहा कि सरल अनुरूप circuitry , Tetris संस्करण बनाने के लिए किया जा सकता है कि एक oscilloscope पर खेला है .
कुछ रजिस्टरों के AtMega32 microcontroller नियंत्रण 8 बिट संकेत उत्पादन है , और , जब एक के माध्यम से पारित "R-2R" विद्युत परिपथ resistor करने के लिए डिजिटल रूपांतरण (D/A) अनुरूप है , जिसके परिणामस्वरूप अनुरूप संकेतों को नियंत्रित कर सकते हैं (x,y) निर्देशांक की एक किरण oscilloscope ( जब oscilloscope है "X-Y मोड" सेट करने के लिए ) .
YouTube वीडियो :
FLV वीडियो :
4.3.6 Obfuscated कोड 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);}
4.3.7 Obfuscated कोड 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;
4.3.8 Mozilla SVG Tetris
Scalable Vector Graphics (SVG) वर्णन के लिए एक मानक है ग्राफिकल XML वस्तुओं का उपयोग करते हुए .

Mozilla SVG Tetris : Tetris लागू Scalable Vector Graphics (SVG) का उपयोग करते हुए एक वर्णन
4.3.9 Google "widget" Tetris
Google , Yahoo! , और Microsoft , और अन्य कंपनियों के पास इंटरनेट आधारित लघु बढ़ावा "widgets" सॉफ्टवेयर का नाम है जो कि आम तौर पर कुछ विशेषता के उपयोग की गतिशील डाटा को इंटरनेट पर उपलब्ध है .
ऐसा ही एक widget के माध्यम से उपलब्ध Google है Tetris खेल है .
निम्नलिखित उदाहरण है आकर्षक है , लेकिन आकारों में घुमाने कष्टप्रद तरीके :

Google "widget" Tetris
अन्य Google widgets :
4.3.10 MIT शोध पत्र : "Tetris is Hard, Even to Approximate" (2002)
निम्नलिखित दस्तावेज़ में अनुसंधान का सबूत है कि एक खास किस्म की है Tetris मा "NP के पूरा हो गया" .
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 .
"NP -" है वर्गीकरण की "पूरी" लागत और समय अंतरिक्ष की लागत से एक एल्गोरिथ्म .
अन्य वर्गीकरण "P" में शामिल हैं और "NP" .
वर्गीकरण का एक "पूरा का" मतलब यह है कि "NP" , समस्याओं के लिए कुछ छोटे से बड़े आकार , एल्गोरिथ्म की उम्मीद नहीं है ढूँढने के लिए एक इच्छित में एक व्यावहारिक समाधान की राशि का समय या स्थान है .
4.3.11 अनुसंधान दस्तावेज : "Applying reinforcement learning to Tetris"
निम्नलिखित पत्र प्रकाशित 2005.5.30 , Donald Carr में कंप्यूटर विज्ञान विभाग में Rhodes University , दक्षिण अफ्रीका , आवेदन प्रस्तुत करने के लिए "सीखने" का "प्रबलन" Tetris .
4.3.12 Tetris स्कर्ट (2007.11)

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 चरण अधिनियम (2007.4)
"उन में से लाया है कि आप के Triforce में 2006 ... अगली पीढ़ी के आती है निर्जीव वस्तु प्रहसन ... Tetris ."
स्थानीय वीडियो में Flash कैश्ड (FLV) वीडियो प्रारूप ( VLC खेलने के लिए उपयोग करें ) :
4.3.14 प्रफुल्लित करने वाला एक जापानी टेलीविजन पर Tetris भिन्नरूप दिखाने

जापानी टेलीविजन पर Tetris भिन्नरूप दिखाने
यह वीडियो क्षेत्र से एक जापानी टेलीविजन शो Tetris परिवर्तनों से प्रफुल्लित करने वाला शामिल हैं , जिनमें शामिल हैं :
पर उतरने के टुकड़े हो कि , एक टुकड़ा भरता है कि एक संपूर्ण पंक्ति ( एक पंक्ति पर उतरने को पूरा इस प्रकार ) , एक साथ कई टुकड़े गिरते , अनियमित आकार के टुकड़ों , एक टुकड़ा है जो लंबे समय से थोड़ा बहुत व्यापक में फिट होने के लिए एक अंतर ( 4 रोकने एक पंक्ति पूरा ! ) , Mario कुकुरमुत्ता और एक छक्के और भारी हो मर ! , छोटे टुकड़े मलबे के बाद शेष पंक्तियाँ नष्ट कर रहे हैं , ऊपर गुरुत्व के शीर्ष बनाने के टुकड़ों को फ्लोट , आदि
स्थानीय वीडियो में Flash कैश्ड (FLV) वीडियो प्रारूप ( VLC खेलने के लिए उपयोग करें ) :
4.3.15 "The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)

"The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)
YouTube पर से वर्णन :
"TETRIS द्वारा निभाई गई वास्तविक मानव एक सभागार में बैठे है :"
TETRIS है 4 वीडियो प्रदर्शन के GAME OVER Project द्वारा निर्देशित इस स्विस कलाकार Guillaume REYMOND ( NOTsoNOISY रचनात्मक एजेंसी ) .
यह वीडियो रोकने के प्रस्ताव के लिए किया गया था शॉट खेला और "LES URBAINES" उत्सव
http://www.urbaines.ch पर Palais डे Rumine ( लॉज़ेन , स्विट्जरलैंड ) पर November 24th 2007 .
स्थानीय वीडियो में Flash कैश्ड (FLV) वीडियो प्रारूप ( VLC खेलने के लिए उपयोग करें ) :
4.3.16 2.5 आयामी Tetris
"2.5" शब्द का प्रयोग किया जाता है "आयामी" करने के लिए यहाँ मतलब है एक गैर orthogonal को देखते हुए एक दो आयामी Tetris संस्करण के साथ , कुछ मोटाई में तीसरा आयाम है .
( लिंक का पता लगाएं , "tetris3d" में "F7: GAMES" . )
4.4 3 आयामी Tetris

Linux / GTK संस्करण
तीन आयामी Tetris के रूप में एक Java applet इंटरनेट ब्राउज़र के लिए :
Tetris तीन आयामी Windows ऑपरेटिंग सिस्टम के लिए :
4.5 4 आयामी Tetris

Greg Kaiser's "HyperTetris" (1996) : 4 एक आयामी Tetris
[1996], [...] में , Greg Kaiser को मिलाकर चार आयामी variant पर क्लासिक खेल है .
उन्होंने एक कार्यदल बनाया का उपयोग IrisGL (a.k.a. igl) , यदि हार्ड खेलने के लिए , खेल का उपयोग करते हुए चार उप प्रस्तुत करने के लिए स्क्रीन के विभिन्न पहलुओं के बारे में तीन आयामी पूरे खेल का स्थान है .
[ के कारण ] वहां आसानी से नहीं है [ बोधगम्य ] तरह से आकर्षित करने के लिए चार वस्तुओं डी डी स्क्रीन पर एक दो , चार उप विचार कर रहे हैं हेरफेर करने के लिए एक व्यावहारिक और विधि visualize के रोटेशन के टुकड़े और अनुवाद के माध्यम से चार आयामों ( इस खेल में x,y,z,w कहा जाता है ) .
लाइनों को पूरा करने के बजाए मूल के ब्लॉक के रूप में , लक्ष्य यह है कि इस मामले में पूरी तरह से भर में घन x,y,z subview ( आमतौर पर 4 से 4 के द्वारा 4 ) .
subviews के अन्य आयाम हैं जिनमें "w" की व्यवस्था में एक डिफ़ॉल्ट 4 के द्वारा 4 के द्वारा 10 ब्लॉक की व्यवस्था की जा रही "w" के साथ लंबे , "vertical" तीन आयाम में सभी मामलों में , विभिन्न अड्डों के साथ (x,y), (x,z), (y,z) .
गुरुत्व "-w" दिशा में कार्य करता है , इसलिए "नीचे" गिर टुकड़ों में लंबे समय से तीन subviews कि "w" शामिल हैं , और जब तक नहीं ले खिलाड़ी द्वारा नियंत्रण में पिछले (x,y,z) subview .
यह awhile को प्राप्त करने के लिए प्रयोग किया जाता है , का कहना है कि कम से कम करने के लिए .
यदि धैर्य के द्वारा कुछ चमत्कार या बदलने के मापदंडों के इस खेल में , एक एक घन पूरा करता है , यह पूरी की लाइनों के रूप में गायब हो जाते हैं Tetris के मूल में है , हालांकि कोई स्कोर HyperTetris में रखा है .
Benjamin Bernard (2000)
4.6 N - आयामी Tetris

Polytope Tetris (2003) : एक N - आयामी Tetris खेल मा
Polytope Tetris है n - dimensionally Tetris .
HyperTetris से प्रेरित होकर इस कार्यक्रम में , Polytope Tetris टन की मदद से आप किसी भी खेल में Tetris संख्या आयाम है .
प्ले Tetris में 3D , 4D , 5D , या अधिक है .
HyperTetris है catchier नाम की तुलना में काफी Polytope ( def ) Tetris है , लेकिन चोरी के नाम से मैं नहीं कर सकता .
5. "मानक Tetris" विनिर्देशन
5.1 परिचय
इस परिभाषा के "मानक Tetris" है idealized एक मॉडल के सर्वाधिक महत्वपूर्ण विशेषताएं और behaviors के कार्यान्वयन के पहले IBM-PC खेल Tetris ( लगभग 1986-1988 ) .
idealized के मॉडल पर आधारित है inferring के इरादे स्पष्ट की पहली IBM-PC डेवलपर्स के कार्यान्वयन के Tetris खेल है .
उदाहरण के लिए , ऐसा लगता है कि यह उचित डेवलपर्स को अनुमान है कि पहले IBM-PC के कार्यान्वयन के Tetris खेल का चयन करने के उद्देश्य से प्रत्येक के आकार का नया टुकड़े गिरते "अनियमित" है , और यह कि Borland C के प्रयोग के कार्यान्वयन के rand() समारोह की केवल एक व्यावहारिक के सन्निकटन का इरादा है .
इस परिभाषा के "मानक Tetris" निर्दिष्ट करता है कि नया आकार प्रत्येक टुकड़े गिरने का चयन किया जाना है "अनियमित" है .
यह आदर्श व्यवहार के द्वारा प्राप्त नहीं किया जा सकता है लागू करने में कोई है , लेकिन लगभग आदर्श व्यवहार implementations कर सकते हैं .
पूर्ण रूप से लागू नहीं कर सकते हैं हालांकि कार्यान्वयन की परिभाषा "मानक Tetris" , "मानक" के आदर्शों के उद्देश्य "Tetris" विशेषताएँ शामिल है , और हो सकता है implementations की तुलना में निकटता के अनुसार उनके रिश्तेदार के आदर्शों के "मानक Tetris" .
यह खंड का वर्णन का एक सेट के तत्वों , behaviors , और नियमों को , जो , सामूहिक , परिभाषित "मानक Tetris" .
5.2 Tetris मानक बोर्ड
बोर्ड का एक ग्रिड की कोशिकाओं , 10 कॉलम होने , और 20 पंक्तियाँ , कोशिकाओं के लिए कुल 10 * 20 = 200 .

मानक Tetris बोर्ड ( 10 कॉलम , 20 पंक्तियाँ )
प्रत्येक सेल किया जा सकता है या तो खाली ( खाली ) या कब्जा ( पूर्ण ) .
5.3 मानक Tetris टुकड़ों
सात (7) मानक हैं Tetris टुकड़ों के साथ निम्नलिखित के नाम पत्र :
{ O, I, S, Z, L, J, T }
इस पत्र के नाम से प्रेरित हैं आकार के टुकड़ों की है .

सात मानक Tetris टुकड़ों और उनके "झुकाव"
इस पर डॉट (0,0) बोर्ड की स्थिति के साथ मेल खाता है (6,20) टुकड़ा पहले जब लगता है .
शो के पहले स्तम्भ प्रारंभिक "झुकाव" है .
बाद में , इस शब्द का प्रयोग किया जाता है "अभिविन्यास" का वर्णन करने के लिए किसी भी राज्य की एक टुकड़ा , राज्यों के भीतर का एक सेट की अनुमति दे दी है , कर सकते हैं कि परिणाम वामावर्त्त रोटेशन से एक घटना है .
"अभिविन्यास" बदलने से एक निर्धारित "अभिविन्यास" के एक "I" , "S" , या "Z" टुकड़ा है , एक रोटेशन का संयोजन की आवश्यकता होती है और एक अनुवाद है .
इसलिए , शब्द का प्रयोग किया जाता है "अभिविन्यास" करने के लिए यहाँ मतलब है कुछ रोटेशन से अधिक ही है .
लेकिन , "अभिविन्यास" के उत्तर में परिवर्तित कर सकते हैं केवल एक वामावर्त्त रोटेशन घटना है , और इस चक्र के प्रत्येक के लिए अलग "झुकाव" टुकड़ा approximates , या मिलान , जिसके परिणामस्वरूप के चक्र से शुद्ध rotations .
इस शब्द के उपयोग की विशेष "अभिविन्यास" इस संदर्भ में लगभग बराबर शब्द का अर्थ या "रोटेशन कोण" , लेकिन इस शब्द का प्रयोग किया जाता है "अभिविन्यास रोटेशन" के स्थान पर लाने के लिए प्रयास करने के लिए इस तथ्य को ध्यान की जरूरत है कि कुछ टुकड़ों से अधिक के रोटेशन के उत्पादन के लिए राज्यों के सेट की अनुमति दी जिसके परिणामस्वरूप वामावर्त्त "रोटेशन" की घटनाओं से है .
टुकड़ों से स्विच कर सकते हैं केवल झुकाव ( या एक विशिष्ट को क्षैतिज या खड़ी अनुवाद ) यदि जिसके परिणामस्वरूप राज्य के टुकड़े नहीं होगा कोई कब्जा ( पूर्ण ) कोशिकाओं के क्षेत्र से परे नहीं है और बोर्ड ने किसी भी समय किसी भी कब्जा अतिव्याप्ति जो कोशिकाओं की कोशिकाओं पर कब्जा बोर्ड की .
( इस नियम है , पर कब्जा ( पूर्ण ) कोशिकाओं के टुकड़े नहीं माना जाता के भाग के रूप में "वर्तमान में कोशिकाओं के बोर्ड पर कब्जा"
निम्न टिप्पणी में , किसी भी परिणाम के संदर्भ में एक घटना में एक वामावर्त्त रोटेशन के साथ किया जाता है कि इस तरह की धारणा वास्तव में किया जा सकता है रोटेशन प्रदर्शन को देखते हुए मौजूदा स्थिति का टुकड़ा और बोर्ड है .
इस "O" ( बॉक्स ) ने केवल एक ही अभिविन्यास टुकड़ा है , और कोई बदलाव नहीं होता है कि किसी भी अपने स्थानों पर कब्जा ( पूर्ण ) कोशिकाओं के उत्तर में किसी भी घटना वामावर्त्त रोटेशन .
इस "I" ( पंक्ति ) के दो टुकड़े झुकाव संभव है , शुरू में दिखने में एक क्षैतिज अभिविन्यास .
यह टुकड़ा "I" घटाने के बीच दो झुकाव के उत्तर में लगातार वामावर्त्त रोटेशन घटनाओं .
"S" और प्रत्येक के पास दो टुकड़ों "Z" संभव झुकाव है .
ये दो टुकड़ों के बीच प्रत्येक वैकल्पिक झुकाव के उत्तर में लगातार वामावर्त्त रोटेशन घटनाओं .
इस "L" , "J" , और "T" टुकड़ों से प्रत्येक के पास चार झुकाव संभव हो , और ये हैं झुकाव के परिणामों के बारे में सरल rotations केन्द्र बिंदु पर आकृति है .
पहले आता है जब एक टुकड़े पर बोर्ड के टुकड़े ने अपने "प्रमुख धुरी" में एक क्षैतिज अभिविन्यास , और टुकड़ा है कि बोर्ड में सबसे ऊपर है .
इसलिए , नहीं टुकड़ों से शुरू कर रहे हैं उनके झुकाव परिवर्तित करने में सक्षम है . उतरना चाहिए द्वारा इस टुकड़े को एक पंक्ति के पास होने की संभावना की अपनी अभिविन्यास बदल गया है .
एक बार एक टुकड़ा गिर गया है कि बोर्ड द्वारा एक पंक्ति पर , सभी टुकड़ा झुकाव प्राप्त किया जा सकता है ( संभालने के टुकड़े भी नहीं है या दीवारों पक्ष के निकट से चालू करने के लिए ढेर के टुकड़े ) .
5.4 मानक Tetris प्रवाह संचित्र
इस प्रकार है लगभग एक प्रवाह संचित्र Tetris खेल के लिए एक मानक है .

अनुमानित प्रवाह संचित्र के लिए एक मानक Tetris खेल

अनुमानित प्रवाह संचित्र के लिए एक मानक Tetris खेल
5.5 मानक Tetris निर्माण टुकड़ा
निम्न चित्र को दिखाता है ( 4 * 2 सेल सेल ) के क्षेत्र में जहां सभी टुकड़ों को बोर्ड पर दिखाई देते हैं जब बनाया है .

क्षेत्र है जहां टुकड़ों में दिखाई देते हैं जब बनाया मानक Tetris
पहले आता है जब एक नया टुकड़े को बोर्ड पर , इसके मूल के साथ मेल खाता है डॉट इस पर चित्र , और पूरी तरह शामिल किया जाएगा टुकड़ा धूसरित द्वारा इस क्षेत्र पर चित्र है .
जब एक नया खेल शुरू किया है , एक पूर्ण मुक्त गिरावट elapses देरी है , और मुक्त गिरावट पर पहली iteration एक टुकड़ा है जन्म के बोर्ड में सबसे ऊपर है .
सामान्य खेल खेलने के दौरान , जब एक विशिष्ट गिरावट iteration मुक्त "भूमि" का टुकड़ा है , एक पूर्ण मुक्त गिरावट elapses और देरी पर अगले मुक्त गिरावट iteration एक टुकड़ा है जन्म के बोर्ड में सबसे ऊपर है .
जब जन्म एक टुकड़ा है , के प्रकार के टुकड़े चुना है कलन विधि का प्रयोग करते हुए निम्नलिखित हैं :
pieceIndex = 1 + (randomInteger % 7); // 1..7
क्योंकि है निरंतर का मौका p (= 1/7) का चयन एक विशेष प्रकार का टुकड़ा है , और इसी प्रकार सभी टुकड़े अप्रभेद्य हैं , ठीक होने की संभावना k टुकड़े को एक विशिष्ट प्रकार के बाद n परीक्षणों के बाद एक Binomial वितरण :
P(k) = (1-p)^(n-k) * p^k * ( n! / ( (n-k)! k! ) );
p = 0.0 ... 1.0;
k = 0, 1, 2, ..., n;
mean = ( n * p )
variance = ( n * p *(1-p) )
standard deviation = sqrt( variance )
जब हम चुन के बीच में से 7 ( सात ) के टुकड़ों पर यादृच्छिक , विशिष्ट होने की संभावना है p=(1/7) टुकड़ा है .
यदि हम इस बार n=70 , उदाहरण के लिए , ठीक होने की संभावना के टुकड़ों k ( k के साथ सीमा 0 में n करने के लिए ) द्वारा दिया जाता है binomial वितरण , के रूप में निम्नलिखित छवि में दिखाया गया है .

Binomial वितरण के लिए 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 संकलक समारोह की पेशकश की है .
यह समारोह का उपयोग राज्य के 32 बिट चर .
इसलिए , अनुक्रम यादृच्छिक संख्या सीमित करने के लिए किया गया था 2^32 मूल्यों अलग है .
इसलिए , सिद्धांत रूप में , एक खिलाड़ी का पता कर सकते हैं , शायद 10 टुकड़ों से गिर जाने के बाद , सटीक स्थान में 2^32 की संख्या निर्धारित करने के लिए इसी की वर्तमान स्थिति का खेल है .
यदि Tetris हैं मार डाला सिमुलेशन के साथ निर्धारित अनुक्रम के टुकड़ों 2^32 , फिर इष्टतम निर्णयों के लिए हर स्थान पर पाया जा सकता है अनुक्रम में है .
( कुछ को लगता है कि बोर्ड की जा रही करने के लिए पर्याप्त अवसर करने के लिए एक पूरी तरह से खाली बोर्ड राज्य की अनुमति प्राप्त करने के लिए हमें तुल्यकालन के साथ precomputed इष्टतम समाधान मार्ग है . )
का जोखिम का उपयोग करते हुए एक सरल में एक यादृच्छिक संख्या जनक अनुकरण करने के उद्देश्य से एक इष्टतम समाधान ढूँढने के लिए एक समस्या यह है कि इष्टतम समाधान के लिए ही किया जाएगा पथ के माध्यम से इस समस्या का विशेष स्थान का चयन द्वारा सरल यादृच्छिक संख्या जनक है . ]
5.6 मानक नियंत्रण 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
सभी आदानों पर ले बढ़ते प्रभाव के किनारे के सकारात्मक इनपुट ( बटन पर प्रेस , विरोध के रूप में जारी करने के लिए बटन ) .
जब एक प्रेस बटन होता है , इस देश के रूप में निवेदन है .
एक बटन कम होल्डिंग से परे एक निश्चित समय में परिणाम हो सकता है "स्वत : दोहराने" की सुविधा में एक की बोर्ड , उत्पादन नया बटन प्रेस -- लेकिन इस सुविधा से बाहर का खेल इंजन है .
इस निवेश के अनुरूप ऊपर निर्दिष्ट करने के लिए मूल Tetris खेल है .
घुमाएँ अनुरोध किया जा सकता है तो मार डाला नहीं है अतिव्याप्ति के बीच वांछित अभिविन्यास और कोशिकाओं पर वर्तमान बोर्ड ( गिरने के टुकड़े को छोड़कर ) , और यदि अपेक्षित नहीं है अभिविन्यास सेट कोशिकाओं के बाहर बोर्ड क्षेत्र है .
अनुवाद अनुरोध किया जा सकता है तो मार डाला नहीं है अतिव्याप्ति के बीच अनुवाद इच्छित विन्यास और कोशिकाओं पर वर्तमान बोर्ड ( गिरने के टुकड़े को छोड़कर ) , और यदि अनुवाद इच्छित विन्यास निर्धारित नहीं है कोशिकाओं के बाहर बोर्ड क्षेत्र है .
इनपुट के साथ एक अनुरोध संसाधित कर रहे हैं विलंबता पर निर्भर करता है कि इस खेल के फ्रेम दर ( उदाहरण : 75 Hz ) , और लागू अनुरोध ( यदि वैध ) तत्काल .
एक टुकड़ा गिरा किया जा सकता है बिना किसी होने की रेखा से गिरते कदम है .
एक टुकड़ा अनुवाद किया जा सकता है या कई बार करने के लिए बाईं ओर का अधिकार है , और बाद में छोड़ा , सभी के बिना अनुभव के एक अधिकारी की रेखा से गिरते कदम है .
क्योंकि एक टुकड़ा नव जन्म घुमाया जा संभवतः नहीं कर सकते हैं ( क्योंकि यह फँसना के खिलाफ बोर्ड के शीर्ष के किनारे ) , खिलाड़ी को स्वीकार करना होगा कि कम से कम एक टुकड़े गिरते कदम rotations यदि आवश्यक या वांछित हैं .
इस स्कोर पर प्रभाव नगण्य है .
5.7 मानक Tetris टुकड़ा "अवतरण"
यदि गिरने बस एक टुकड़ा है , यह फॉल्स के दौरान प्रत्येक पंक्ति के द्वारा एक ही टुकड़े गिरते iteration .
एक iteration होगी कि यह कदम के साथ एक स्थान से नहीं समतल सतह से संपर्क करने के लिए एक स्थान से संपर्क किया है कि क्षैतिज जगह है . एक बार जब इस iterations होता है , आराम के टुकड़ों से संपर्क में हैं .
iteration के साथ शुरू होता है अगर एक एक टुकड़ा में आराम के साथ संपर्क में एक समतल सतह , "भूमि" के टुकड़े , और स्थिर ढेर का हिस्सा बन जाता है .
5.8 मानक "लाइनें पूरी" Tetris
एक पंक्ति पूरी की एक पंक्ति के ढेर है जिसमें सभी कोशिकाओं पर कब्जा कर रहे हैं . जब एक पंक्ति पूरी की है सफाया से ढेर है , और ऊपर की पंक्तियों का सफाया कर रहे हैं पंक्ति स्थानांतरित कम एक पंक्ति को खत्म करने के अंतराल में , इस देश के रूप में एक "पंक्ति" पूरी की .
जब यह एक टुकड़ा भूमि के एक भाग के ढेर हो जाता है .
भूमि के टुकड़े के तुरंत बाद , ढेर की जाँच के लिए पूरी की पंक्तियाँ हैं , और सभी पंक्तियाँ पूरा सफाया कर रहे हैं .
चार पंक्तियों में से एक साथ पूरा किया जा सकता है .
निम्नलिखित सारणी के ऊपरी सीमा देता है साथ ही साथ द्वारा पूरी की तर्ज पर एक टुकड़ा :
piece max. simultaneous
rows completed
===== ==================
"O" 2
"I" 4
"S" 2
"Z" 2
"L" 3
"J" 3
"T" 2
5.9 मानक "स्तर" Tetris
मानक 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 मानक Tetris गिरते iteration देरी
मानक Tetris ने एक वास्तविक समय के बीच लगातार देरी की रेखा से मुक्त गिरावट iterations है कि एक समारोह के मौजूदा स्तर में कठिनाई है .
निम्नलिखित के बीच संबंध और गिरते स्तर के सूचकांक पर आधारित है iteration देरी दोहराया stopwatch मापन के सभी स्तरों पर पहले से वाणिज्यिक 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
इस प्रकार , हम निम्नलिखित फार्मूले की स्थापना के लिए iteration देरी मूल्य के रूप में एक समारोह के सूचकांक वास्तविक स्तर :
iterationDelay = ((11 - actualLevel) * 0.05); // [seconds]
यदि बोर्ड खाली है , और उपयोगकर्ता इनपुट नहीं है , एक टुकड़ा जन्म भूमि पर वास्तविक 1 स्तर में लगभग 10 सेकंड , और एक टुकड़े पर वास्तविक स्तर 10 जन्म भूमि में लगभग 1 दूसरे नंबर पर है .
5.11 मानक Tetris "स्कोर"
केवल अंक पुरस्कार 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 पंक्तियाँ .
इस खाते के लिए अंतर बिंदु के बीच मुक्त गिरावट और त्वरित ड्रॉप मामले हैं .
मध्यवर्ती मामलों के साथ प्रयोग करके यह बात आसानी से अनुमान निम्न सूत्र :
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
ध्यान दें कि इस फार्मूले से कोई संबंध नहीं की दूरी एक टुकड़ा फॉल्स !
यह कड़ाई से एक समारोह के वास्तविक स्तर पर , और एक के लिए दंड की संख्या का एक टुकड़ा है iterations गिरावट करने की अनुमति दी जाए .
punishes के लिए यह एक प्रयोक्ता को लगता है कि समय की आवश्यकता होगी .
ध्यान दें कि एक टुकड़ा भी नहीं कर सकते क्योंकि शुरू में जब यह पहली बार घुमाया जा spawns , एक खिलाड़ी को दंडित किया है , कम से कम एक मुक्त गिरावट iteration यदि rotations करने के लिए आवश्यक हैं स्थान पर एक टुकड़ा में ढेर है .
शायद यह कभी नहीं मानव खिलाड़ियों को प्रभावित करता है , जब तक वे किसी : पहचान के टुकड़े , प्रेस अनुवाद कुंजी ( "बाएँ" या "अधिकार" ) , प्रेस के एक या एक से अधिक बार कुंजी "को घुमाएगी" , प्रेस और "ड्रॉप" कुंजी , सभी 0.5 सेकंड के भीतर से भी कम स्तर पर 1 , या 0.05 सेकंड से कम स्तर पर 10 .
6. मानक Tetris रणनीति
6.1 परिचय
एक खेल खेलने के लिए एक रणनीति पर निर्भर करता है इस खेल के नियमों का है .
एक रणनीति पर निर्भर करता है जो पैरामीटर अनुकूलित किया जाना है .
मानक Tetris , एक जीवित पूरा करके पंक्तियाँ , लैंडिंग के लिए अंक टुकड़े हो जाता है , और सर्वाधिक स्कोर अंक के लिए हर संभव टुकड़ा द्वारा क्रियान्वित करने से पहले एक बूंद एक या एक से अधिक गिरावट मुक्त iterations transpire .
अनुकूलित कर सकते हैं A.I. एक अंक से सम्मानित के टुकड़े के लिए बस के द्वारा प्रत्येक कदम पर निर्णय लेने से जल्दी और "दबाव" को निष्पादित करने के कदम "की कुंजी" है .
इससे भी महत्वपूर्ण यह है A.I. करने के लिए एक अस्तित्व है , क्योंकि जीवित रहने का मतलब है एक अनिश्चित मनमाने ढंग से अधिक अंक प्राप्त किया जा सकता है . क्योंकि Tetris टुकड़ों को एक विशिष्ट दर में गिरावट , A.I. बनाना चाहिए निर्णयों में कम से कम इस तेजी से -- कदम और A.I. बनाना चाहिए कि पूरी पंक्तियों में एक औसत दर है कि कम से कम 1 प्रति पंक्ति 2,5 टुकड़ों . ( 4 कोशिकाओं प्रत्येक टुकड़ा है , और प्रत्येक पंक्ति में 10 कोशिकाओं . )
निश्चित रूप से एक को पूरा कर सकते हैं स्थगित पंक्तियाँ द्वारा गायब टुकड़ों और इमारत का एक बड़ा ढेर है , लेकिन केवल 200 कोशिकाओं हैं पर पूरे बोर्ड है , जो सिद्धांत में ही रोक 50 टुकड़े कर सकते हैं , इसलिए किसी भी खिलाड़ी के ( जैसे कि एक A.I. ) लाइनों को पूरा करने के रूप में होना चाहिए एक मौलिक प्राथमिकता है .
मानक Tetris , राज्य के खेल में शामिल हैं और व्यवसाय की वर्तमान बोर्ड की मौजूदा टुकड़े गिरते ( प्रकार , स्थिति , और अभिविन्यास ) . राज्य के इस खेल में शामिल हो सकता है कि वैकल्पिक " अगले टुकड़ा " .
6.2 एक बारी अनुक्रम " S " और " Z " टुकड़ों
Heidi Burgiel , पीएच.डी. , के Department of Mathematics, Statistics and Computer Science पर University of Illinois at Chicago , एक बारी से सिद्ध हो गया कि अनुक्रम " S " और " Z " टुकड़ों शक्ति होगी एक मानक ( 10 कॉलम , 20 पंक्ति ) Tetris खेल को समाप्त करने के लिए एक उम्मीद के मुताबिक संख्या कदमों की है .
उद्धरण से यह आलेख : " 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 में एक इंटरनेट ब्राउज़र कि एक सुविधाओं बदल Tetris है कि क्लोन spawns बारी " S " और " Z " टुकड़ों .
[ इस " मानक Tetris " सॉफ्टवेयर से संबंधित दस्तावेज़ पढ़ रहे हैं आप भी एक मोड जो spawns बारी " S " और " Z " टुकड़ों . ]
Heidi Burgiel ने दावा किया कि एक खेल को शामिल बारी " S " और " Z " टुकड़ों ( Tetris बोर्ड के लिए एक मानक कॉलम में 10 और 20 पंक्तियाँ ) समाप्त होना चाहिए कम से पहले की तुलना में 70000 टुकड़े गिर गए हैं .
इस सॉफ़्टवेयर के साथ शामिल मानक Tetris इस दस्तावेज़ में सक्षम बनाता है एक व्यक्ति के साथ खेल खेलने के लिए बारी " S " और " Z " टुकड़ों , और बोर्ड बदलने की चौड़ाई .
यह देखने के लिए आसान है कि जिनकी boards widths पूर्णांक गुणजों के चार स्तंभ हैं ( उदाहरण : 4 कॉलम , 8 कॉलम , 12 कॉलम , आदि ) खेला जा सकता है जब हमेशा के टुकड़ों के बीच वैकल्पिक " S " और " Z " , ढेर के साथ बढ़ती नहीं है 4 पंक्तियाँ से अधिक है . इस उल्लेख मैं यह स्पष्ट करना है कि सीमित survivability अनुसंधान दस्तावेज में वर्णित है ऊपर वर्णित के लिए विशेष के मामले में एक मानक Tetris बोर्ड ( कॉलम के साथ 10 और 20 पंक्तियाँ ) .
6.3 Unsolvable टुकड़ा दृश्य में सामान्य
सारी श्रेणियों के रोग होते हैं दृश्य नहीं किया जा सकता है कि बच गया .
यह दिलचस्प होगा गणना करने के लिए कुल की संभावना का सामना एक खेल समाप्त अनुक्रम है , क्योंकि यह एक डाल ऊपरी परिबंध के प्रदर्शन पर किसी भी रणनीति के साथ भी पूरा ज्ञान के भविष्य की सभी टुकड़ों में एक बिंदु पर किसी भी खेल है .
6.4 कुल संभव बोर्ड configurations
यह देखते हुए कि बोर्ड ने 10 * 20 = 200 कोशिकाओं , और दी जा सकती है कि प्रत्येक कोशिका में से किसी एक में दो राज्यों ( खाली या कब्जा ) , configurations बोर्ड की कुल संख्या के बराबर या उससे कम होनी चाहिए : (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 , आदि इस प्रकार , केवल आधे configurations के (2 ^ 200) बोर्ड द्वारा किया जा सकता है पहुँचे खेल है .
इस प्रकार , बोर्ड की कुल संख्या लगभग configurations है : (2 ^ 199) = 8.03469... * 10^59 .
लेकिन , हम हमारे कुल से निजात पा लेना चाहिए कि किसी भी विन्यास भर पंक्तियाँ शामिल हैं , क्योंकि पंक्तियाँ हैं भर के अंत में समाप्त होने से पहले पूरा हर कदम है . कोई भी विन्यास के साथ एक या एक से अधिक पंक्तियों में भर जाएगा ध्वस्त करने के लिए एक और विन्यास नहीं है कि किसी भी भर पंक्तियाँ .
इसके अलावा , हम विन्यास से निजात पा लेना चाहिए कि किसी भी शामिल है एक गैर खाली पंक्ति के ऊपर एक या एक से अधिक पंक्तियाँ खाली है , क्योंकि एक गैर खाली पंक्ति के ऊपर एक खाली पंक्ति हमेशा गिर जाएगा , और सब से पहले गिरने से रोक के अंत में हर कदम है .
प्रत्येक पंक्ति में किया जा सकता है 2^10 = 1024 राज्यों में से एक है जो कि " खाली " , जिनमें से एक है " पूर्ण " , और (1024 - 2) = 1022 हैं जिनमें से आंशिक रूप से कब्जा है . हम बाहर के " पूर्ण " से मामला विचाराधीन हैं .
यदि पंक्ति के नीचे खाली है , फिर पंक्ति के नीचे से ऊपर के सभी पंक्तियाँ भी खाली करना चाहिए .
यदि पंक्ति के नीचे आंशिक रूप से कब्जा है , तो दूसरी पंक्ति खाली किया जा सकता है या आंशिक रूप से कब्जा है .
सतत इस विश्लेषण , हम गणना कर सकते हैं कि कई configurations बोर्ड में ले पूरा करने के लिए खाते के बहिष्कार की पंक्तियों पर प्रतिबंध और खाली पंक्तियाँ : 1 + (1022 * (1 + 1022 * (1 + 1022 * (1 + 1022 * (... * (1023)))))) है , जो लगभग ((1022 ^ 19) * (1023)) .
इस प्रकार हम देखते हैं और सटीक एक अनुमान के अनुसार बोर्ड की कुल संख्या स्थिर configurations : (1/2) * ((1022 ^ 19) * (1023)) = 0.9625... * (2 ^ 199) ; यानी , लगभग 3,74 % (2 ^ 199) अनुमान से कम है .
तथापि , वास्तविक संख्या में स्थिर है , बोर्ड राज्यों सुलभ होने की संभावना है कम होने के कारण इस तथ्य उल्लेखनीय है कि सर्वोच्च पंक्तियाँ भर में ही हो सकता है कुछ तरीके हैं . जैसा कि सर्वोच्च भरने के पंक्तियाँ , एक टुकड़ा नव सृजित स्थानांतरित नहीं किया जा सकता है या घुमाया बहुत अधिक है . इस तरह की संख्या की सीमा के सर्वोच्च पंक्तियाँ भरा जा सकता है .
6.5 सिद्धांत रूप में , सबसे अच्छा कदम के लिये पाया जा सकता है और किसी भी बोर्ड के टुकड़े विन्यास
हम किसी भी प्राप्त कर सकते हैं क्योंकि संभव सात टुकड़े के लिए बोर्ड के किसी भी राज्य की कुल संख्या लगभग 7 * (2 ^ 199) = 5.624... * 10^60 खेल राज्यों है .
क्योंकि हम कर सकते हैं , सिद्धांत में , क्या एक गहरी खोज के भविष्य के लिए सभी संभव के लिए हर संभव कदम किसी राज्य के खेल में , हम एक ही हो सकते हैं " सर्वोत्तम " खेल के प्रत्येक राज्य के कदम से जुड़े हैं .
हम मान लें कि हम किसी को उपलब्ध नहीं हैं जानकारी के अलावा अन्य बोर्ड के मौजूदा और मौजूदा टुकड़ा है , अतः " सर्वोत्तम " का अर्थ है कि " इस कदम का सबसे बड़ा मौका प्रदान करता है कि हमारे संतोष के लक्ष्य को लंबे समय तक जीवित रहने " .
सिर्फ एक कदम है अनुवाद ( विकल्पों में से 10 ) और एक रोटेशन ( 4 तक के विकल्प ) , हम आसानी से कर सकते हैं encode का सबसे अच्छा कदम में एक बाइट .
इसलिए , सिद्धांत , हम कर सकते हैं फार्म के साथ एक मेज 10^61 प्रविष्टियों ( बाइट्स ) से कहा है कि हमें किसी भी बोर्ड का सबसे अच्छा कदम दिया और राज्य के वर्तमान टुकड़ा है .
बेशक इस अव्यावहारिक है , जैसे सभी enumerating " Go " boards या " Chess " boards अव्यावहारिक है . लेकिन मुद्दा यह है कि सही समाधान वहां से एक है , और सबसे अच्छा कदम है विन्यास के लिए किसी भी है . इस कदम के लिए अच्छा हो सकता है उतना ही एक विन्यास दिया है , लेकिन हम मनमाने ढंग से चुन सकते हैं कि मामले में एक कदम है .
कई खेल खेलने एल्गोरिदम हैं कि टेबल ृनव enumerate राज्य की सभी संभावनाओं का खेल संदर्भों के भीतर तक ही सीमित है , जैसे कि " खोलने ( प्रारंभिक ) कदमों " या " खेल के अंत तक ( अंतिम ) कदमों " शतरंज में है . शायद संपूर्ण enumeration के ढेर Tetris सतहों ( लगभग (20 ^ 10) राज्यों ) संभव है . यह एक दिलचस्प विचार है .
नि : शेष सभी राज्यों के enumeration के नीचे दो पंक्तियाँ , सात गुणा के टुकड़ों से संभव है , और भंडारण का सबसे अच्छा कदम में एक बाइट , काफी आसान हो जाएगा ; केवल 7 MB स्मृति की आवश्यकता होती है . शायद प्रदर्शन का अनुकूलन के लिए इन मामलों में सात लाख प्रदान करेगा विश्लेषण और दोनों के लिए कच्ची सामग्री के विकास के मॉडल के लिए डेटा सरल है ; ऐसे मॉडलों का हिस्सा माना जा सकता है आदर्श Tetris खेलने के समग्र रणनीति है .
ध्यान दें कि सबसे अच्छा कदम अभी भी क्रियान्वित नहीं की रक्षा के खिलाफ हमें खेल के रोग संभव दृश्य समाप्त टुकड़ा है . यह केवल प्रदर्शन है कि हम हमेशा हमारे कदमों की अधिकतम क्षमता प्रदान करता है कि भविष्य के लिए सभी उत्तरजीविता दिया है कि भविष्य में पूरी तरह से यादृच्छिक टुकड़े कर रहे हैं ( और अज्ञात के समय तय करने के लिए हम कैसे को स्थानांतरित करने के लिए एक ही टुकड़े के नाम से जाना मौजूदा ) .
6.6 भू समय प्रदर्शन
एक बाधा का सामना करना पड़ रहा है एल्गोरिदम कुछ रणनीति की जरूरत प्रदर्शन के लिए वास्तविक समय -- एल्गोरिथ्म चाहिए जिसका अर्थ है कि एक के भीतर एक विशिष्ट निर्णय राशि का समय है .
जब एक मानव Tetris नाटकों के टुकड़े गिरने नहीं रोक देने का मौका लगता है कि एक खिलाड़ी हैं . यह भाग के Tetris चुनौती है . इस प्रकार , एक A.I. प्रणाली का मतलब है कि सिमुलेट करने के लिए एक मानव की भूमिका को भी खिलाड़ी बनाने के फैसले की दर तय की Tetris खेल है .
6.7 पंक्ति और योग टुकड़ा
ध्यान दें कि लंबी अवधि में की संख्या गिराया टुकड़ों के बहुत करीब है 2.5 बार पूरी की पंक्तियों की संख्या -- 10 कोशिकाओं के कारण प्रत्येक पंक्ति है , और प्रत्येक 4 कोशिकाओं का टुकड़ा है , और हम एक पंक्ति को पूरा करना चाहिए , औसत (10/4) = 2.5 टुकड़ों में एक बार गिराया .
इसलिए हम उपयोग कर सकते हैं " पूरा पंक्तियाँ " और " गिराया टुकड़ों " लगभग interchangeably के साथ निरंतर proportionality उपयुक्त है . यह सबसे बड़ी त्रुटि है , जब पूरी तरह से भर जाता है कि बोर्ड के लिए एक अंतर को छोड़कर प्रत्येक पंक्ति (((10*20)-20)/4) = 45 टुकड़ों में गिरा है लेकिन एक भविष्यवाणी की कमी पूरी की पंक्तियाँ (45/2.5) = 18 .
6.8 वर्तमान में पीस ( और बोर्ड ) रणनीति
यदि हम केवल A.I. की अनुमति देने के लिए ज्ञान के वर्तमान और बोर्ड के मौजूदा टुकड़ा है , और हम केवल विचार का परिणाम चलती वर्तमान में विशेष तरीकों टुकड़ा है , तो हो सकता है इस नाम का एक " एक टुकड़ा " विश्लेषण .
यहां एक मोटा खाका कि कैसे एक टुकड़े पर फैसला कर सकते हैं विश्लेषण में एक कदम Tetris :

वर्तमान के विश्लेषण के एक टुकड़े Tetris राज्य खेल
मूलतः हम हर संभव प्रयास करें और कदम उठाने की पैदावार का सबसे अच्छा कदम है कि परिणाम है .
कठिन है दर्ज़ा प्रत्येक भाग के परिणाम है .
हमें एक काल्पनिक दर के अनुसार राज्य के खेल को कितनी अच्छी तरह समर्थन करता है हमारे राज्य में इस तरह के एक अल्पकालिक और दीर्घकालिक लक्ष्य है .
हमारा लक्ष्य है लंबे समय तक जीवित रहने . जीवन को रोकने के ढेर पर निर्भर करता है कि बोर्ड से overflowing . हम कम कर सकते हैं ढेर की ऊँचाई बनाने के द्वारा पूरा कर रहे हैं जो पंक्तियाँ फिर से समाप्त ढेर है .
फार्म की एक पूरी करने के लिए पंक्ति में , हम चाहिए भागों में टुकड़ों में फिट करने के लिए कॉलम की है कि हर पंक्ति है . इस प्रकार , हम यह अपेक्षा के सभी भागों को उजागर करने के लिए एक पंक्ति के टुकड़ों से गिरते हैं तो हम को भी भरने की पूरी पंक्ति में है .
यदि किसी कारण से हम कवर करने के लिए खाली भागों में एक पंक्ति के द्वारा टुकड़ों पर किसी भी पंक्ति अधिक है , तो हम को भरने में असमर्थ हैं अब उन भागों में खाली पंक्ति है . का एकमात्र तरीका ( संभालने नहीं स्लाइड़िंग ) उन तक पहुँचने के लिए " दफनाया छिद्र " को खत्म करने की पंक्तियों से ऊपर है कि अभिनय ने भाग के रूप में बाधाओं पर .
निम्नलिखित हैं कारकों का उपयोग कर सकते हैं हम उन लोगों के बीच में एक की दर से दिया बोर्ड राज्य :
Overall pile height
अधिक ढेर में , हमारी स्थिति खराब लगता है , क्योंकि हम overflowing बोर्ड के करीब हैं .
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 आविष्कार के नए तरीके characterize प्रत्येक बोर्ड को अपने एल्गोरिथ्म वास्तव में उत्कृष्ट ; बोर्ड characterizations कब्जा महत्वपूर्ण रणनीतिक आयामों के बोर्ड राज्य है .
एक बहुत ही विकसित कर सकता है एक अलग आयाम है कि काम के लक्षण वर्णन भी उतना ही अच्छा है , मुझे विश्वास है कि यह संभव है अवधि के लिए बोर्ड के संबंधित राज्य में कई जगह है कि अलग अलग तरह से इस्तेमाल किया जा सकता है समारोह को निर्दिष्ट करने के लिए एक रणनीति है . मुख्य लक्षण है कि परियोजना को खोजने के लिए जगह कम करने के लिए राज्य के एक छोटे से कई आयाम विकसित करने के लिए प्रयोग किया जा सकता है कि एक सामान्य दर्ज़ा समारोह ( उदाहरण : रैखिक भारित के संयोजन के द्वारा प्रयुक्त विशेषताओं Pierre's कलन विधि ) .
एक टुकड़ा कलन विधि द्वारा प्रयुक्त " bot " में " xtris " सॉफ्टवेयर ( 1996 ) द्वारा लिखित Roger Espel Llima का उपयोग करता है वजन द्वारा निर्धारित बड़े पैमाने पर की खोज के संयोजन के द्वारा संभव वजन " आनुवंशिक एल्गोरिदम " . एक अन्य भोज्य annealing संभव तरीके से तलाश की बहुआयामी अंतरिक्ष वजन के संयोजन है .
ऐसा लगता है कि , विभिन्न टिप्पणियों पर आधारित है , बहुआयामी Tetris समारोह के औसत प्रदर्शन के रूप में एक समारोह का भार है , उदाहरण : F(w1,w2,w3,...) है , " मोटा " ( और बहुत से स्थानीय minima मॅक्सिमा ) , जिसका अर्थ यह है कि एक साधारण बहुआयामी " पहाड़ी चढ़ाई " काम नहीं हो सकता .
6.9 जब वर्तमान नीति टुकड़ा है , अगले टुकड़ा है , और बोर्ड के नाम से जाना जाता है
यदि एक रणनीति के मौजूदा टुकड़ा एल्गोरिथ्म दी जाती है , अगले टुकड़ा है , और बोर्ड है , तो इसे बनाने के फैसले कर सकते हैं कि लाभ उठाने के टुकड़ों का संयोजन है .
ज्ञान के अगले हिस्से में सुधार कर सकते हैं Tetris की सफलता के एक आदेश के खेल में कई एल्गोरिथ्म परिमाण . यह समझना आसान बना देता है कि कैसे जानते अगले टुकड़ा रणनीति में एक बड़ा अंतर है .
एक कर सकते हैं " पागल " आगे बढ़ती है , जैसे बड़े छिद्र को कवर करने , आदि , क्योंकि वे पहले से ही जानते हैं कि अगले टुकड़े करने के लिए प्रयोग किया जा सकता है " ठीक " की स्थिति है . यदि आप नहीं है ज्ञान के अगले टुकड़ा है , आप लगातार करने की कोशिश कर रहे हैं खेलने के बावजूद , अपने विकल्प खुले रखने की कोशिश कर रहे मामले में अगले टुकड़ा नहीं है आदर्श है .
निम्नलिखित रेखाचित्र से पता चलता है कि किस तरह के सभी संभव कदम के वर्तमान टुकड़ा माना जाता है , और इस तरह के कदम से प्रत्येक के लिए हम हर संभव कदम पर विचार के अगले हिस्से को शामिल है .

मौजूदा रणनीति को शामिल है और अगले टुकड़ा टुकड़ा
इस मानक Tetris सॉफ्टवेयर का उपयोग करता है जब इस रणनीति " अगले टुकड़ा " उपयोगकर्ता द्वारा सक्षम है और स्क्रीन पर दिखाई देता है , और जब एक दो टुकड़े A.I. सक्षम है ( जैसे कि एक मेरे द्वारा लिखे गए , Colin Fahey ) . यदि " अगले टुकड़ा " स्क्रीन पर दिखाई नहीं है , मेरे दो टुकड़े गिरने के एक टुकड़े को वापस A.I. .
मेरा एक टुकड़ा है A.I. भयानक के अन्य AIs की तुलना में मानक सॉफ्टवेयर Tetris ; फायदेमंद इसलिए आप इस बारे में अधिक जानकारी से पता चलता है ( उदाहरण : अगले टुकड़ा ) किया जा सकता है A.I. करने के लिए एक प्रणाली है , यह पर्याप्त के प्रदर्शन को बेहतर बनाने मेरे अपने औसत दो टुकड़े A.I. कई द्वारा आदेशों का परिमाण -- आसानी से surpassing के प्रदर्शन का सबसे अच्छा एक टुकड़ा A.I. दुनिया में है .
( हालांकि , एक टुकड़ा में परिवर्तित के सर्वश्रेष्ठ A.I. दुनिया में विचार करने के लिए दो टुकड़ों को आसानी से इसे बेहतर बनाने के आदेश के द्वारा कई परिमाण में भी ! अगले जानने का यह बड़ा टुकड़ा है ! )
मेरी पहली परीक्षण के साथ खेल के दो टुकड़े मेरे A.I. लगभग 182 घंटे तक चला ( 7,6 दिनों में ) पर 800 MHz PC , 7216290 पूरा पंक्तियाँ . मैं ने की जांच नहीं की पर तेज़ी से कंप्यूटर एल्गोरिथ्म .
जब आप बचाने के राज्य में एक Tetris खेल (Shift-W) करने के लिए एक पाठ फ़ाइल है , तो आप कर सकते हैं तो कॉपी और पेस्ट की सूची संख्या से भाग " heightHistogram " , एक्सेल स्प्रेडशीट को एक है .
प्रत्येक बिन में हिस्टोग्राम संकेत की संख्या पूरी कदमों के साथ समाप्त हुआ है कि किसी विशेष ढेर ऊँचाई ( पंक्तियों के बाद पूरी तरह समाप्त कर रहे हैं ) . जैसा कि आप कल्पना कर सकते हैं , जिससे कि एक कदम पूरी तरह से समाप्त ढेर एक दुर्लभ है , इसलिए कदमों की कुल संख्या के साथ समाप्त हो जाती है कि एक ढेर ऊंचाई शून्य है अपेक्षाकृत कम है .
इस बीच , आप शायद उम्मीद है कि आम तौर पर ढेर fluctuates के आसपास के कुछ औसत ऊंचाई , इसलिए इसी bins इन पंक्तियों के हिस्टोग्राम हावी होगा . अंत में , bins के लिए सर्वोच्च पंक्तियाँ ( जहां हम खतरे में हैं कि बोर्ड के overflowing ) के पास बहुत कम योग है .
इस पाठ्यक्रम में कई घंटे से अधिक है , A.I. के साथ एक ही खेल खेलने को शामिल करने की रणनीति का प्रयोग करते हुए ज्ञान के " अगले टुकड़ा " मैं इस खेल के नमूने यादृच्छिक ने राज्य के कॉपी की ऊँचाई ढेर histograms एक स्प्रेडशीट के रूप में प्रदर्शित करने के लिए नीचे दिए गए हैं :

ऊंचाई पर ढेर histograms दर्ज की विभिन्न बिंदुओं में एक विशिष्ट खेल ( वर्तमान के साथ और अगली रणनीति के टुकड़े )
आप प्रत्येक पैमाने पर हिस्टोग्राम द्वारा टुकड़ों की कुल संख्या ( कुल संख्या में पूरी की चालों ) डेटा प्राप्त करने के लिए निम्नलिखित हैं :

छोटा histograms , और एक सिद्धांत
यह उल्लेखनीय बात यह है कि इन देखने के समान छोटा histograms के आदेश के बावजूद विभिन्न परिमाण की संख्या के टुकड़ों ( पूरा कदमों ) शामिल है .
बस के द्वारा संख्या को देखते समय मैं ने परिकल्पना है कि पूंछ के क्षय घातीय वक्र है . परीक्षण करके मैं आया और त्रुटि के साथ मोटा सिद्धांत है कि पूंछ के द्वारा वर्णित किया गया है :
relative_frequency = ((0.122) * ((0.375)^(row-5)))
निम्न से पता चलता है ग्राफ के छोटा हिस्टोग्राम पूरे कई पंक्तियाँ .

ग्राफ़ का छोटा histograms
ध्यान दें कि वक्र के लिए 50000 टुकड़ों , और वक्र के लिए 2000000 टुकड़ों , और वक्र पूंछ के सिद्धांत पर इस पैमाने पर लगभग अप्रभेद्य .
निम्नलिखित एक के सिर पर करीब देखने के वक्र .

निचले हिस्से के ऊँचाई हिस्टोग्राम
निम्नलिखित एक बहुत - magnified देखने के चरम पूंछ और अंत में मापा सैद्धांतिक हिस्टोग्राम curves .

Magnified की दृष्टि से अत्यधिक पूंछ अंत में छोटा histograms
जैसा कि आप शायद उम्मीद है , यह बहुत ही दुर्लभ के लिए इन ऊंचाइयों तक पहुँचने के ढेर में भी लंबे समय तक प्रयोग -- सीमित है लेकिन हमारे सबूतों के साथ भी इस क्षेत्र में अत्यधिक के सिद्धांत आज भी लगता है स्वीकार्य है .
पूरा चार्ट के सिद्धांत में लगता है अतिव्याप्ति पूंछ के वितरण " ठीक " , जबकि में magnified चार्ट के पूँछ की पूंछ , हम देखेंगे स्पष्ट त्रुटि . लेकिन , मैं जोर है कि इस पर होने के कारण अपर्याप्त डेटा इन अतिवादी ढेर हाइट्स . यदि मैं इस खेल में वृद्धि करने के लिए बोर्ड का कहना है कि , 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 बोर्ड के मूल्यांकन के आँकड़े देखने के आगे नकल सट्टा
अगर एक एल्गोरिथ्म , जैसे कि मैं एक भेंट की इस परियोजना , बस की कोशिश करता है और अनुवाद के लिए सभी टुकड़ा झुकाव गिरती है , जिसके परिणामस्वरूप प्रत्येक बोर्ड के विन्यास और दरों के अनुसार कुछ उपाय योग्यता , कलन विधि की आवश्यक रूप से नकल है " के आगे देखें " .
जब एक कर्मचारी के रूप में इस तरह के आँकड़े " ढेर ऊँचाई " , " दफनाया छिद्र " , " सतह खुरदरापन " या " अच्छा गहराई " , एक का उपयोग कर रहा है वास्तव में एक सरलीकृत रूप है " देखने के आगे " . ये सामान्य characterizations बोर्ड के कुछ संकेत देने के दीर्घकालिक व्यवहार्यता के बोर्ड .
आदर्श तरीका है , एक अनन्त की राशि दी अभिकलन बिजली , जाएगा का मूल्यांकन करने के लिए एक बोर्ड विन्यास दिया है कि सभी संभव टुकड़ा दृश्य का पालन कर सकते हैं .
यद्यपि आप पर विचार करना चाहिए 7 टुकड़ों के रूप में की जा रही समान रूप से सभी संभावित के प्रत्येक स्तर पर आगे देखने के , आप अनुकूलित करने की जरूरत है कि वास्तविक अनुवाद ( 10 ) और झुकाव ( तक 4 ) के टुकड़े में से प्रत्येक के लिए हर संभव अनुक्रम ! यह (7*10*4) = 280 शाखाओं तक हर स्तर पर बोर्ड के मूल्यांकन ! इसलिए , कि ((280)^(LookAheadLevels)) के लिए विचार करने के लिए बोर्ड configurations .
समाप्त करना चाहिए क्योंकि हम परिमित के विश्लेषण के बाद एक कई स्तरों पर , हम कुछ करने की जरूरत है गैर - आगे देखने की पद्धति का मूल्यांकन बोर्ड राज्य -- एक तरह के मूल्यों को देने की पत्ती नोड हमारे खोज वृक्ष है . इसलिए , इन पत्ती नोड के लिए , हम कर रहे हैं कि एक सूत्र का उपयोग करके वापस embodies सामान्य predictors के भविष्य की व्यवहार्यता बोर्ड !
इस प्रकार का प्रयास किया जा सकता है अटकलें के साथ एक और दो टुकड़े टुकड़े एल्गोरिदम के स्थान पर बोर्ड के मूल्यांकन के साधारण तालिका . बाद में सभी समान रूप से टुकड़ों मान रहे हैं और संभावित राशि की क्षमताओं को समायोजित करने के लिए बोर्ड के एक टुकड़े में सभी प्रकार के सर्वश्रेष्ठ तरीके से संभव है . यह एक के साथ किया जा सकता है , दो , या किसी भी कदम का सट्टा संख्या में गहराई -- टुकड़ों के साथ की जा रही समान रूप से सभी संभावित ( p=1/7 ) .
इस वृक्ष के टर्मिनल नोड शायद अभी भी भारित मेट्रिक्स का मूल्यांकन करने के लिए की आवश्यकता होती है , लेकिन सट्टा परत अधिक पकड़ने का सार ठीक करना चाहते हैं कि हम क्या करते हैं : अवधारण को कितनी अच्छी तरह किसी दिए गए सभी संभव बोर्ड के टुकड़ों को स्वीकार कर सकते हैं , जिनमें सकारात्मक कारक जैसे पूरा लाइनों और नकारात्मक कारकों जैसे समग्र ढेर ऊँचाई बढ़ाने , आदि
7. Tetris A.I. प्रणाली प्रदर्शन
7.1 सिस्टम सारांश
यह निम्नलिखित चित्र मेरे प्रयोगात्मक स्थापना से पता चलता है .

कुल मिलाकर प्रदर्शन के लिए प्रणाली
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 वीडियो कब्जा हार्डवेयर
मैं एक आम इस्तेमाल किया USB वीडियो कैमरा के रूप में एक वीडियो उपकरण पकड़ने के लिए मेरे A.I. प्रणाली है . विशेष रूप से , मैं Creative "WebCam Pro" का उपयोग किया है , एक वीडियो कैमरा USB संकल्प के साथ 640 * 480 .

Creative(TM) USB वीडियो कैमरा विवरण

USB वीडियो कैमरा ( कोण पर )

USB वीडियो कैमरा ( सामने )

USB वीडियो कैमरा ( बोर्ड के साथ CCD )

USB वीडियो कैमरा ( मुख्य चिप्स )

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 ने केवल एक दर्जन लाइनों के कोड का प्रयोग करने के लिए , और मेरे प्रदर्शन acceptably पर 800 MHz मशीन , मैं नहीं चिंता का विकल्प तलाश APIs . DirectShow अधिक है लेकिन समकालीन API पकड़ने के लिए Windows वीडियो , और संभवतः बहुत अधिक पैदावार एक फ्रेम दर हार्डवेयर के लिए एक ही है .
देखो पर " CPF.StandardTetris.STVideoCapture " स्रोत कोड में फाइल के मानक Tetris सॉफ्टवेयर को देखने के लिए आसान है कि कैसे प्राप्त करने के लिए अपना स्वयं का वीडियो को पकड़ने में परियोजनाओं .
7.7 कम्प्यूटर अंतरफलक को रिले ( via RS232 )
करने के लिए एक कंप्यूटर " कुंजी दबाएँ " कुंजीपटल पर एक और कंप्यूटर , मैं एक का उपयोग किया " रिले बोर्ड " पाठ द्वारा नियंत्रित आज्ञा से भेजा संचार एक सीरियल पोर्ट ( उदाहरण : " COM1 " ) के माध्यम से एक केबल RS-232 . मैं रिले का इस्तेमाल किया प्रत्येक के दो तारों को जोड़ने के लिए एक विशेष कुंजी कुंजीपटल सिमुलेट प्रेस के एक प्रमुख है .
यह आवश्यक है और खोलने की कुंजीपटल बनाने के कनेक्शन है . ऐसे कई प्रमुख स्टिमुलेट आसान तरीके के लिए एक कंप्यूटर पर दबाव है , लेकिन मुझे लगता है कि कुछ करने की इच्छा के रूप में बंद के रूप में एक व्यक्ति वास्तव में टाइप करना संभव में एक की बोर्ड पर .
बहुमुखी और एक बहुत अच्छी तरह से बनाई गई है ADR2200 रिले मंडल द्वारा बनाई गई Ontrak Control Systems :

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

Ontrak Control Systems ADR2200 RS232 / RS485 Relay I/O Interface
आप देखते " CPF.StandardTetris.STRS232 " स्रोत कोड फ़ाइलों को देखने के लिए आसान है बाइट्स भेजने के लिए एक सीरियल पोर्ट के माध्यम से , जो कर सकते हैं तो उपकरणों को नियंत्रित करने के लिए उपयोग किया जाता है जैसे कि बोर्ड ADR2200 ऊपर दिखाए गए .
8. सॉफ्टवेयर मानक Tetris
8.1 सॉफ्टवेयर डाउनलोड करें
पर जाएँ की शुरुआत इस लेख को खोजने के लिए डाउनलोड करने के लिए एक कड़ी के स्रोत कूट ( C# और C++ संस्करण ) और सॉफ्टवेयर का निर्माण ( *.exe ) .
8.2 सारांश की सुविधाएँ
सॉफ्टवेयर विशेषताएं :
स्क्रीन और क्रेडिट निर्देश
मोनोक्रोम विधा
छाया विधा
सुझाव विधा
रद्दी पंक्तियाँ
दर नियंत्रण
अगला टुकड़ा
बोर्ड आकार
S/Z टुकड़ों
अंशांकन विधा
वीडियो और मान्यता कब्जा
डीबगिंग कन्सोल
सहेजें खेल
लोड खेल
8.3 प्रारम्भिक उपस्थिति
प्रकटन जब सॉफ्टवेयर शुरू किया है :

प्रकटन जब सॉफ्टवेयर शुरू की है
8.4 मोनोक्रोम विधा
मूलभूत रूप से लगता है कि बोर्ड में रंग :

मूलभूत रूप से बोर्ड के रंग में दिखाई देता है .
इस विधा का रंग परिवर्तित करने के लिए किया जा सकता है मोनोक्रोम (Shift + K) :

इस विधा का रंग परिवर्तित करने के लिए किया जा सकता है मोनोक्रोम .
8.5 छाया विधा
छाया जहाँ विधा का संकेत एक टुकड़ा भूमि जाएगा . यह बहुत ही मददगार boards के लिए बहुत बड़ी है , क्योंकि यह न्याय करना कठिन है , जहां एक टुकड़ा भूमि जाएगा .

छाया जहाँ विधा का संकेत एक टुकड़ा भूमि जाएगा .
8.6 सुझाव विधा
सुझाव मोड आपको दिखाता है , जहां वर्तमान में ले जाया जाएगा दिया पऊलू के चयन की वर्तमान स्थिति है . (Shift + H)

सुझाव मोड से पता चलता है , जहां वर्तमान में से चुने हुए बर्ड ले जाया जाएगा .
8.7 रद्दी पंक्तियाँ
डालें " जंक " पंक्तियों में सबसे नीचे के ढेर , एक एक करके , स्वयं है . (Shift + J)

डालें " जंक " पंक्तियों के ढेर में सबसे नीचे है .
8.8 दर नियंत्रण
इस '+' ( धन ) और '-' ( ऋण ) कुंजी की गति के इस खेल का नियंत्रण है .
मूलभूत रूप से , इस खेल में रन गति के एक मानक के अनुसार , Tetris के नियमों का मानक ( स्तर की गति के आधार पर ) .
यहां एक सारणी के अर्थ के पूर्वाग्रह की गति :
-3,-4,... : सुस्ती आनुपातिक पूर्वाग्रह
-2 : धीमी स्तर की तुलना में 1
-1 : सामान्य है , लेकिन इन तक सीमित स्तर 6 ( 0,2 सेक ) गति ;
0 : सामान्य ; मानक Tetris गति पर नियंत्रण ;
+1 : 9 स्तर की तुलना में तेजी से थोड़ा ( 0.05 sec देरी ) ;
+2 : घिरे द्वारा प्रतिपादन दर ( उदाहरण : 75 Hz ) ;
+3,+4,... : कई iterations रेंडर फ्रेम प्रति ;
मैं जैसे को चलाने के लिए एक रूपरेखा के A.I. " +2 " ( हिट '+' कुंजी दो बार शून्य पर शुरू यदि पक्षपात ) .

पक्षपात की गति के स्पीड alters खेल है .
8.9 दिखाएँ अगले टुकड़ा
हिट ' N करने के लिए ' के टॉगल " अगले टुकड़ा " प्रदर्शित है . इस A.I. का उपयोग करेंगे " अगले टुकड़ा " यदि जानकारी केवल " अगले टुकड़ा " स्क्रीन पर दिखाई देता है .
आप आश्वासन दिया जा सकता है कि बर्ड का प्रयोग नहीं कर रहा है " अगले टुकड़ा " जब आप जानकारी को देख नहीं पा " अगले टुकड़ा " स्क्रीन पर .

दिखाएँ अगले टुकड़ा
8.10 बोर्ड आकार
दबाव Ctrl + ( छोड़ दिया है , अधिकार है , नीचे , ) , एक समायोजित कर सकते हैं कि बोर्ड के आकार को मनमानी से 4 * 4 आकार तक 200 * 400 .

बोर्ड का आकार : 4 * 8

बोर्ड का आकार : 20 * 40

बोर्ड का आकार : 40 * 80

बोर्ड का आकार : 20 * 5

बोर्ड का आकार : 4 * 100
8.11 केवल S/Z टुकड़ों
रोचक अध्ययन की बारी S/Z पैटर्न है .
इस पद्धति के लिए एक हल नहीं किया जा सकता है 10 * 20 बोर्ड ( * लंबाई चौड़ाई ) .
लेकिन , boards हैं कि widths हैं कि गुणजों के 4 हैं तुच्छता से दिखाया को अनुमति देने का अस्तित्व अनन्त है .
इस AIs जीवित अनिश्चित इन मामलों में भी नहीं थे , हालांकि वे इस रोग के संचालन के लिए विशेष रूप देखते स्थिति है .

केवल S/Z टुकड़ों
8.12 वीडियो मोड अंशांकन
हिट ' C ' में प्रवेश करने के लिए " अंशांकन मोड " . जब मोड में अंशांकन , आप कर सकते हैं हिट की संख्या कुंजी : {1,2,3,4,5,6,7} का चयन करने के लिए एक टुकड़ा {O,I,S,Z,L,J,T} के शीर्ष पर बोर्ड की भूमिका की है .
यह उपयोगी संदर्भ के रूप में वीडियो छवि के लिए एक दूसरे पर कब्जा Tetris सॉफ्टवेयर मानक है .
यदि आप हिट के 0 ( शून्य ) प्रमुख हैं , यह बोर्ड बनाने के रिक्त है .
आप कर सकते हैं बहाना अंडे टुकड़ों को चुन कर एक टुकड़ा (1..7) , और फिर एक खाली (0) का चयन करते हैं , जबकि एक दूसरे कंप्यूटर घड़ियों पकड़ने के लिए वीडियो टुकड़े कर रहे हैं .
आप के A.I. पर चला सकते हैं और देखें कि कैसे कंप्यूटर के दूसरे के साथ अपने हाथ से इसका संबंध में प्रवेश रोग Tetris परिदृश्यों !
अंशांकन का एकमात्र तरीका है समय आप यह कर सकते हैं हेरफेर वीडियो टेम्प्लेट कब्जा इमेज प्रोसेसिंग ( 4 * 2 ग्रिड ) . आप माउस का प्रयोग कर सकते हैं आकर्षित करने की आयत है , लेकिन उसके बाद आप कर्सर कुंजी का प्रयोग कर सकते हैं ( " अप " , " कम " , " बाएँ " , " अधिकार " ) को ठीक करने के लिए नियंत्रण के सीमा -- कुंजी का प्रयोग कर Shift को चुनने के लिए सीमाओं के विपरीत आयत ( उदाहरण : " Shift की बाईं " combo से अलग हो रहा है " बाएँ " ) .

वीडियो मोड अंशांकन
8.13 वीडियो और मान्यता कब्जा
दबाव ' V ' toggles वीडियो मोड कब्जा है . यदि ठीक से तुले ( देखें " वीडियो अंशांकन " पिछले भाग में एक ) , दूरदराज के एक टुकड़े वीडियो स्क्रीन पर कब्जा किया जाएगा और वीडियो कैमरे में वर्गीकृत -- टुकड़े हो जाएगा और जन्म में स्थानीय खेल के लिए A.I. पर विचार करने और प्रतिक्रिया .
यह तो होना चाहिए A.I. निर्गम संचरित ( RS-232 अंतरफलक के द्वारा प्रदर्शन में इस अनुच्छेद में वर्णित ) के लिए दूरदराज के खेल में निवेश ( उदाहरण : कुंजीपटल ) को सफलतापूर्वक A.I. के लिए खेलने के दूरस्थ खेल है .
यदि किसी भी समय इस अशांत संवृत पाश है ( उदाहरण : वीडियो कब्जा malfunction , या निर्गम संकेत malfunction ) , A.I. विकास होगा तो गलत धारणा की स्थिति के दूरदराज के खेल , और A.I. अनुचित होगा बनाने के फैसले है कि जल्दी खो खेल .
( ध्यान दें : यह समस्या दूर की जा सकती के साथ एक मामूली राशि का प्रयास : A.I. प्रणाली की जांच की जरूरत ही पूरे स्क्रीन के लिए चल रहे दूरस्थ Tetris " वास्तविकता की जाँच " के पूरे बोर्ड , A.I. व्यवस्था की जानी चाहिए और कुछ के लिए तैयार करने की आज्ञा निर्गम में विफल होने के कुछ तरीके से . )

वीडियो और मान्यता कब्जा
9. मूल Tetris बर्ड प्रयोग ( 2003 )
निम्नलिखित शो के पहले संस्करण में काम करने के Tetris A.I. प्रणाली 2003 में .

वीडियो कैमरे का सामना करना पड़ रहा # 1 चल रहे किसी भी कंप्यूटर खेल के मैदान Tetris

# 2 कम्प्यूटर सॉफ्टवेयर चल रहे मानक Tetris मोड में A.I.

वाम : ग्रिड आकर्षित करने के लिए वीडियो छवि को मान्यता calibrate ;
अधिकार : Tetris टुकड़ा मामलों में मान्यता है .

फ़्रेम से वीडियो 2003 में प्रयोग के Tetris A.I.
10. सर्वश्रेष्ठ एक टुकड़ा Tetris खेलने वाले दुनिया में एल्गोरिथ्म
10.1 Pierre Dellacherie ( 2003 , फ्रांस )
Pierre Dellacherie ( 2003 , फ्रांस ) , डेवलपर की सर्वश्रेष्ठ एक टुकड़ा Tetris खेलने वाले दुनिया में एल्गोरिथ्म
सबसे अच्छा एक टुकड़ा है , वास्तविक समय Tetris एल्गोरिथ्म मेरे ज्ञान Pierre Dellacherie फ्रांस के द्वारा बनाया गया था .
कभी कभी उनकी अद्भुत एल्गोरिथ्म भरता 2 लाख से अधिक पंक्तियाँ !
औसत प्रदर्शन के आदेश पर है 650000 पंक्तियाँ .
कलन विधि की स्मृति में बहुत कम लेता है , और रन पर उच्च गति ( लगभग 160 पंक्तियाँ प्रति सेकंड 800 MHz मेरे कंप्यूटर पर ) .
प्रदर्शन के Pierre Dellacherie's कलन विधि :
मेरा वर्तमान मॉडल के लिए के प्रदर्शन के लिए Tetris AIs यह है कि किसी भी टुकड़ा है निरंतर संभावना है कि खेल समाप्त होगा , 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 सिद्धांत के साथ मनाया वितरण का खेल है .

36 से अधिक प्रदर्शन के Pierre's एल्गोरिथ्म पूरा खेल
यद्यपि बहुत कम हैं खेलों में इस डाटा सेट है , यह स्पष्ट है कि इस मॉडल को काफी अच्छा है पर मिलान के वितरण मनाया .
Pierre's शुरू करने के लिए अपने कलन विधि :
Pierre काम शुरू कर इस पर एक टुकड़ा एल्गोरिथ्म में 2003,1 .
Pierre ने मुझे भेजा पर एक ईमेल के बारे में अपने एल्गोरिथ्म पर 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.
" कलन विधि पूर्ण है और 7000 में लागू Turbo Pascal पंक्तियाँ / न्यूनतम . Athlon 1600+ के साथ एक है . "
मैं C++ में परिवर्तित करने के लिए Pierre's एल्गोरिथ्म 2003,6 के बाद कई ई मेल से बाजारों के साथ Pierre . सत्यापित है कि हम A.I. में C++ संस्करण ने उसी फैसले के Pascal संस्करण है .
मैं इसी तरह के प्रदर्शन को देखा अपने मूल रिपोर्ट ; औसत लगभग 650000 पूरा पंक्तियाँ , 2 लाख पूरा खेल और कुछ पंक्तियाँ है .
अतुल्य !
10.2 वार्तालाप के साथ Pierre Dellacherie
[ 1 ] ने जब आप पहली बार इस कोड बना ?
मैं काम कर रहे हैं पर एल्गोरिथ्म जनवरी 2003 के अंत से अब तक .
[ 2 ] आपने कितना समय पर काम किया है ?
मैं यह काम पर लगभग हर हफ्ते ... लेकिन लंबे समय तक हर रोज नहीं , क्योंकि मैं ने अन्य गतिविधियों : दुर्भाग्य से मैं ने पैसे कमाने के लिए किसी और की तरह !
[ 3 ] क्या प्रेरित के डिजाइन का कोड है ?
मैं खेला Tetris 10 या 15 साल पहले नहीं खेला था लेकिन मैं फिर से एक लंबे समय के लिए . मैं कहूँगा कि मैं एक " औसत " जो खिलाड़ी के नियमों और कुछ गुर जानता है .
लेकिन , जब मैं इस पर काम करना शुरू किया एल्गोरिथ्म मैंने इतना नहीं खेल पाए क्योंकि मैं यह नहीं बल्कि अधिक प्रभावी और खेल को देखने के लिए कंप्यूटर का विश्लेषण उनकी कमजोरी है .
[ 4 ] क्या आप किसी भी उपयोग स्वचालन को "प्रशिक्षित" करने के लिए अपना कोड बेहतर प्रदर्शन करने ? क्या आप कोई राय को बेहतर बनाने के लिए एल्गोरिथ्म ?
या फिर आपने बस देखने के परिणाम और संशोधन करने का निर्णय है ?
"पुराने स्कूल" से मैं कर रहा हूँ : मैं बस के परिणाम देखा और संशोधन करने का निर्णय लिया है .
" स्वचालित सीखने " का एक प्रकार है मेटा - एल्गोरिथ्म नहीं हूं कि मैं ऐसा करने का आश्वासन दिया है कि इस तरह के रूप में इस आसान होगी मेटा - एल्गोरिथ्म भी निर्माण करना होगा और यह कि इतना आसान नहीं है !
इतना ही नहीं , मैं ऐसा से सहमत Roger Penrose जब वे कहते हैं ( अपनी पुस्तक में " Shadows of the mind " ) है कि मानव की समझ और intuition एल्गोरिथम नहीं किया जा सकता है ( उदाहरण : गणनीय ) .
[ 5 ] ने जब आप पहली बार शुरू Tetris खेल है , और जब आपके पास के विचार ने Tetris को सुलझाने के साथ एक A.I. ?
मैं एल्गोरिथम और कंप्यूटर शिक्षा कार्यक्रम ( Turbo Pascal और Scilab ) के छात्रों के लिए जो ट्रेन के लिए प्रवेश परीक्षा के स्कूलों में इंजीनियर स्नातक हैं .
सबसे पहले , " कम्प्यूटर नाटकों Tetris " मैं चाहता था एक विचार मेरे विकसित करने के लिए अगले साल के छात्र हैं .
मैं अपने वेब पेज की जानकारी नहीं है जब मैं एल्गोरिथ्म पर काम करने लगे .
वास्तव में मैं भाग्यशाली होने की जानकारी अपने वेब पेज पर केवल कुछ ही सप्ताह पहले , क्योंकि मुझे लगता है कि मैं अपने परिणाम द्वारा निरुत्साहित किया गया है ( जैसा आप अनुमान कर सकता है , मेरे एल्गोरिथ्म के प्रारंभिक संस्करणों के साथ ऐसा नहीं खेलने ! ) .
[ 6 ] अपने वर्तमान स्थिति क्या है ?
मुझे लगभग 30 [ 27 अप्रैल 2003 से पहले ] . मैं ने कई गतिविधियों : वायलिन बजानेवाला मैं हूँ , मैं संगीत रचना और मैं कंप्यूटर शिक्षा कार्यक्रम .
मैं ने एक musicology में मास्टर डिग्री ( 1994 ) और एक " Artificial Intelligence and Algorithmic " डिप्लोमा ( 1998 ) .
फ्रांस में इस डिप्लोमा के लिए 5 वर्ष के अध्ययन से मेल खाता है पर विश्वविद्यालय ( 4 वर्ष है मास्टर डिग्री और 6 साल के शोध है ) .
Pierre's रचनाएँ :
[ 7 ] क्या आप कहाँ रहते हैं ?
मैं कर रहा हूँ और मैं फ्रांस में रहते हैं रूऑन ( Normandy ) .
[ 8 ] अन्य टिप्पणियाँ :
अंततः मैंने किसी भी नए विचार को बेहतर बनाने के लिए नहीं है .
मैं ने व्यर्थ की कोशिश की इतनी अधिक है ( और सिली ) बातें मुझे शक है कि हो सकता है यह सुधार हुआ है .
दूसरी तरफ , मुझे लगता है कि वहाँ मौजूद हो सकता है जो पूरी तरह से अलग एल्गोरिदम प्रदर्शन बेहतर हो सकता था .
इस तरह से , एक निर्देशित परीक्षण में तेजी से शुरू करने के टुकड़ों में आधे बॉक्स ( 10 X 10 कॉलम पंक्तियाँ ) : आधे बॉक्स में , मेरे एल्गोरिथ्म बनाता की औसत से 280 पंक्तियाँ पूरी की .
एक बात और : आसानी से बदला जा सकता है कलन विधि में एक डबल प्लाई एल्गोरिथ्म ( [ मैं ] परीक्षणों के शीघ्र ही ) .
मैं प्रेम फिल्म संगीत : फिल्म संगीतकार बनने के मुख्य मेरे सपनों का हिस्सा है ( लेकिन यह केवल सपना ! ) .
11. मानव विश्व में सर्वश्रेष्ठ खिलाड़ी
11.1 जापानी Tetris मास्टर ( 2001 जनवरी 27 ) वीडियो

Tetris निष्णात ( 2001 , जापान ) वीडियो
Arika प्रस्तुत जापानी Tetris के फाइनल में निष्णात ( 2001 जनवरी 27 ) . " TETRIS THE ABSOLUTE PLUS --The Grandmaster2-- DEATH-MODE "
12. प्रतिक्रिया
12.1 Slashdot सूत्र ( 2003 )
2003 में मेरे Tetris A.I. परियोजना पर चर्चा की थी Slashdot इंटरनेट का मंच (
http://slashdot.org ) .

Slashdot ( http://slashdot.org ) इंटरनेट का शीर्षक के लिए एक मंच पर चर्चा के मेरे 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 ]

हास्य से प्रेरित मेरे Tetris A.I. परियोजना (2003) ( पहली बार मैंने कभी प्रेरित एक हास्य ! )

हास्य से प्रेरित मेरे 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 के स्कोर फ़ाइल !
Bill ने स्कूल की कक्षाओं में Wharton व्यापार , alma mater के Michael Milken और Donald Trump है , इसलिए यह अकल्पनीय नहीं है कि कोई एक असंभव धाँधली उच्च स्कोर ...
1990 की गर्मियों में एक 30 MHz Intel 80386 IBM PC से उधार ली गई मैं मेरे रूममेट , Alex Haidas .
मैं एक खरीदा Mac कुंजीपटल पर पिस्सू के लिए बाजार $ 1 .
मैं समानांतर निर्माण की अनुमति देने के लिए बंदरगाह circuitry के PC को नियंत्रित करने के लिए कुंजीपटल Mac .
( मैं एक CMOS 4040 चिप का इस्तेमाल करने के लिए एक प्रकार की ठोस कार्रवाई के रूप में राज्य के बोर्ड में शामिल होने का रिले संपर्कों के भीतर 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 गति , एक स्तर तक पहुँच गया था कि इस परियोजना ने लगभग अंतिम तुच्छ है .
थन मैं अपने व्यक्तिगत परियोजना के पुराने और अंत में समाप्त हो गया है , बंद करने की भावना से कुछ मिल रहा है .
यह बहुत ही रोमांचक खेल को देखने के लिए कंप्यूटर से एक दूसरे के माध्यम से कंप्यूटर USB वीडियो कैमरा और रिले .
यह ध्वनि की रिले क्लिक , और देखने के टुकड़ों में स्पिन और ड्रॉप हास्यास्पद है , superhuman गति , अनुभव ने multisensory में एक तरह से बहुत संतोषजनक है .
2003 में अपने कार्य के द्वारा मान्यता प्राप्त थी Slashdot (
http://slashdot.org ) , और मैं एक बहुत बड़ी राय प्राप्त है .
मैं प्रकट करने के लिए आमंत्रित किया गया था पर " Screen Savers " टेलीविजन पर दिखाया TechTV डिजिटल टेलीविजन नेटवर्क है .
मैं San Francisco के लिए चले गए और दिखाने के दर्शन पर , और बड़ा अनुभव था .
बाद में 2003 , मैं Henk Rogers से एक संदेश प्राप्त हुआ है , मुझे आमंत्रित करने के लिए हवाई और Alexey Pajitnov को पूरा करने के लिए उसके बारे में बात करने के लिए मानक स्थापित करने के लिए किसी प्रकार की Tetris , के प्रयोजनों के लिए होने Tetris टूर्नामेंट है .
एक विशेष रुचि थी खिलाड़ियों को सक्रिय करने के लिए मोबाइल फोन का उपयोग करने के लिए "एक दूसरे के साथ प्रतिस्पर्धा" , अप्रत्यक्ष , imitates है कि खिलाड़ियों के द्वारा A.I. ( द्वारा पूर्व विश्लेषण के प्रत्येक खिलाड़ी की कार्रवाई ) , इस तरह के प्रभावों से बचने के मोबाइल फोन इंटरनेट का उपयोग विलंबता , और सक्रिय करने के खिलाड़ियों को "प्रतिस्पर्धा के खिलाफ" * ही मनुष्य के सर्वश्रेष्ठ खिलाड़ी (*... या दुनिया में , बल्कि A.I. नकल ही सर्वश्रेष्ठ खिलाड़ियों में विश्व में मानव ) .
मैं रोमांचित थी द्वारा की संभावना से बैठक के निर्माता के Tetris . दुर्भाग्य से , मुझे उड़ान चिन्तित बना देता है , और मैं निमंत्रण गिरावट आई है .
2006 में , मैं मेरे परिवर्तित " मानक Tetris " C++ करने के लिए सॉफ्टवेयर से C# अधिक सुलभ बनाने के लिए और उपयोगी सॉफ्टवेयर प्रोग्रामर को समकालीन है .