tetris
Colin Fahey
1. 소프트웨어
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있는 퍼즐 조각 만들어진 5 개의 사각형 참여 준비합니다.
Alexey 생각을하게 떨어진 그들의 생각이 작품을 준비 Pentamino 직사각형 컵, 그러나 실현하는 12 개의 서로 다른 다섯 - 스퀘어 모양의 비디오 게임은 너무 복잡합니다.
7 Alexey로 전환 "tetramino"를 사용하여 조각, 각각 4 개의 사각형 만들어진합니다.
이 1985.6, Alexey Pajitnov 프로그램에서 첫 번째 버전의 tetris Electronica 60합니다.

Dmitry Pavlovsky, Alexey Pajitnov, 그리고 tetris합니다.
이 1985-1986, Vadim Gerasimov, 컴퓨터 천재 16 - 세의 하이 - 학교에서 일한 아카데미, 구현 tetris MS-DOS 운영 체제를 실행하는 PC을 IBM합니다.

- 1987-1988 사전을 도입 화면에서 PC의 상업적인 릴리스의 tetris

게임 플레이 화면을 1987-1988 - 상업적인 릴리스의 이전을 PC tetris
1987 후, 전 세계의 확산 tetris합니다.
The Tetris Company, LLC, tetris 상표권을 소유하고있습니다.
4. 프로젝트를 영감을 tetris
4.1 0 - 차원 tetris
아직 개발합니다.
4.2 1 - 차원 tetris
1 - 차원 tetris Ziga Hajdukovic을 개발하는 소프트웨어를 인터넷 브라우저에서 재생할 수있습니다.
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
"대부분의 믿을 수 있었던 것 같아 한 - 일 단지 내 인생에서 내가 할 수있는 상상합니다. 스티브처럼 일자리가 항상 말씀 하시길, 그 여정은 보상합니다."
"그것은 우리가 위로는 대학의 프로젝트 나를 생각합니다. 과거의 일들과 거의 취소할 수가 아닌 다른 사람들이하는 생각을합니다."
Steve Wozniak (2000)
4.3.3 인터넷 브라우저의 게임을 "그린 건물" 이미지를 MIT

인터넷 브라우저를 Vadim Gerisimov's tetris
변형 만든이 인터넷 브라우저를 tetris Vadim Gerasimov합니다.
인터넷 브라우저를 tetris 기능이 "Green" 건물의 캠퍼스 MIT합니다.
9 개 열을뿐만 아니라 변형이 tetris의 표준 10 열합니다.
임의의 방향으로 새로운 작품이 tetris 선물을 변형합니다.
Vadim Gerasimov은 컴퓨터에 코드를 쓴 사람 PC 버전의 tetris에 1986합니다.
Vadim Gerasimov 한 박사 학위 MIT Media Laboratory하는 동안의 연구 1994-2003, 노동, 많은 흥미있는 프로젝트.
4.3.4 마이크로 컨트롤러 - 기반 PIC16F84 12 MHz tetris NTSC / PAL 비디오 게임

마이크로 컨트롤러 - 기반 PIC16F84 12 MHz tetris NTSC / PAL 비디오 게임
위의 이미지를 보여주는 NTSC / PAL 비디오 출력 PIC16F84 12 MHz 마이크로 컨트롤러에 의해 생산 Rickard Gunee를 실행하는 소프트웨어를 작성한 1998합니다.
비디오 신호의 디지털 출력을 제어하는 소프트웨어가 발생합니다.
4.3.5 오실로 스코프 Lars Pontoppidan (2007.8) 의해 "scopetris" tetris

오실로 스코프 Lars Pontoppidan (2007.8) 의해 "scopetris" tetris
마이크로 Lars Pontoppidan 쓴 코드를 AtMega32, 그리고 추가 단순한 아날로그 회로, tetris 버전을 만들 오실로 스코프에서 재생할 수있습니다.
레지스터의 특정 AtMega32 마이크로 컨트롤 8 - 비트 출력 신호, 그리고 때, 전기 저항을 통과 "R-2R"을 통해 아날로그 회로를 디지털 -이 - (D/A) 변환, 그 결과 아날로그 신호를 오실로 스코프의 좌표를 (x,y)가 제어할 수있는 빔 (오실로 스코프는 때 "X-Y 모드로" 설정).
YouTube 비디오 :
FLV 비디오 :
4.3.6 판단이 흐려지게 코드를 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 판단이 흐려지게 코드를 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 tetris Mozilla SVG
를 사용하여 그래픽 개체를 설명하기위한 Scalable Vector Graphics (SVG)가 표준 XML합니다.

Mozilla SVG tetris : tetris Scalable Vector Graphics (SVG) 설명을 사용하여 구현
4.3.9 tetris Google "widget"
Google, Yahoo!, 그리고 Microsoft, 기타 회사의 이름을 추진 "widgets" 소형 인터넷 - 기반 소프트웨어를 사용하는 일부 특징으로하는 동적 데이터는 대개 인터넷에서 사용할 수있습니다.
그런 Google가 tetris 경기를 통해 액세스할 수있습니다 widget합니다.
다음 예제는 귀엽지만, 성가신 방법으로 회전의 형태 :

tetris Google "widget"
다른 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 치마를 (2007.11) tetris

치마를 (2007.11) tetris
치마를 만든 the 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 크리에이 티브기구).
- Flash 비디오 영상을 로컬 캐시 (FLV) 형식 (VLC을 재생을 사용) :
4.3.16 2.5 - 차원 tetris
여기에 "2.5 - 차원이라는" 용어가 사용됩니다 - 직교이 문서가 적용되는 의미가 아닌, 2 - 차원 버전의 tetris의 일부 두께의 3 차원을합니다.
("tetris3d"의 링크를 찾을 "F7: GAMES"합니다.)
4.4 3 - 차원 tetris

Linux / GTK 버전
3 - 차원 tetris의 형태로 애플릿을 Java 인터넷 브라우저 :
3 - 차원 tetris의 Windows 운영 체제 :
4.5 4 - 차원 tetris

Greg Kaiser's "hypertetris" (1996) : 4 - 차원 tetris
이 [1996], [...], 4 - 차원 변형들을 하나로 결집하고 Greg Kaiser 고전 게임을합니다.
IrisGL (a.k.a. igl)를 사용하여 만든 그는 작업, 만약 하드를 재생, 게임 묘사를 사용하여 서로 다른 4 개의 서브 - 스크린을 3 개 - 치수 측면의 전체 게임 - 공간을합니다.
[왜냐면] 쉬운 없다 [이해할 수] 4 - 패 개체를 그리는 방법을, 2 - 패 스크린, 4 개의 서브 -보기는 실용적인 방법을 조작하고 회전 및 번역 조각을 시각화를 통해 4 개의 치수 ( 게임에 전화 x,y,z,w).
같이 라인의 블록을 완료보다는 원래의 목표는이 사건은 완전한 정육면체를 x,y,z을 채우는 subview (일반적으로 4 - 4 - 4).
"w" 포함하는 다른 차원은 배열의 subviews에서 4 - 4 - 10 블록에 대한 기본 협정을 체결 "w"가 긴, "vertical" 3 차원의 경우, 서로 다른 기지와 (x,y), (x,z), (y,z)합니다.
사도 행전에 "-w" 중력 방향으로, 그래서 작품에서 "떨어질" subviews를 포함하는 3 개의 긴 "w", 그리고 플레이어 컨트롤에 의해 움직이 지마의 마지막 (x,y,z)하지 않는 한 subview합니다.
그것에 익숙해질 데는 시간이 많이 소요를 최소한에 따르면합니다.
기적의 경우 일부 게임의 인내심을하거나 매개 변수를 변경하여, 하나는 완료하는 큐브, 그것은 사라질 것이다 라인을 완성하지의 기존 tetris지만 점수는 보관 HyperTetris없습니다.
Benjamin Bernard (2000)
4.6 N - 차원 tetris

Polytope Tetris (2003) : an N - 차원 tetris 게임 기타
Polytope Tetris는 n - 치수 tetris합니다.
HyperTetris에 의해 영감을받은 프로그램, Polytope Tetris tetris 어떠한 플레이하실 수있습니다 톤 개수 치수합니다.
tetris에서 플레이 3D, 4D, 5D, 또는 좀 더합니다.
catchier 이름을 HyperTetris은 훨씬 더 Polytope (def) tetris했지만 그렇게 할 수 없어 이름을 도용합니다.
5. "표준 tetris" 사양
5.1 소개
"tetris는" 이상적인 모델에 대한 정의를 "기준의" 가장 중요한 특성과 동작의 구현의 첫번째 IBM-PC tetris 게임 (대진 1986-1988).
이상적인 모델을 기반으로 the inferring the 명백한 의도를 IBM-PC의 개발자의 첫번째 tetris 게임의 구현합니다.
예를 들어, 합리적으로 추론하는 것 IBM-PC의 개발자의 첫번째 게임의 구현하기위한 tetris 각각의 새 떨어지는 모양의 작품을 선택하여 "무작위로," 그리고 Borland C의 구현을 사용하는 기능은 단순히 실용적인 접근 rand() 의도합니다.
"tetris" 지정하는 "표준에" 대한 정의를 각각의 새 하락의 모양을 선택한이 작품은 "무작위로합니다."
이 이상 문제가되지 않습니다 다습에 의한 모든 구현, 그러나 대략적인 가장 이상적인 동작 구현을 수있습니다.
완벽하게 구현하는 지역에 대한 정의를 구현하는 것이지만 "표준 tetris," 객관적 특성을 이념 "표준 tetris" 참여, 그리고 그들의 상대적인 구현을 비유할 수있다 친밀감을 이념에 따라 "표준 tetris합니다."
이 섹션에 대해 설명 일련의 요소, 동작, 그리고 규칙, 어떤, 총칭를 정의 "표준 tetris합니다."
5.2 표준 tetris 보드
그리드의 세포 보드는 애를 10 열, 그리고 20 행, 기간이 총 10 * 20 = 200 세포를합니다.

표준 tetris 보드 (10 컬럼, 20 행)
각각의 세포 중 하나는 빈 (빈) 또는 점령 (전체).
5.3 표준 tetris 조각
tetris (7) 기준에 해당하는 이미 7 개 조각, 다음과 같은 편지 이름 :
{ O, I, S, Z, L, J, T }
그 편지의 이름은 작품의 형태에 의해 영감을받은합니다.

7 표준 tetris 조각과 그 "오리 엔테이션"
보드 입장과 일치한다 (0,0) 도트를 (6,20)로 조각을 때 첫 번째가 나타납니다.
첫 번째 열에는의 초기 "오리 엔테이션합니다."
다음과 같은, 그 단어 "오리 엔테이션은" 모든 상황을 설명하는 데 사용 한 조각 세트를 허용 상태로, 그 시계 회전 행사에서 발생할 수있습니다.
"오리 엔테이션에서 오리 엔테이션을" 변경하지 않는 "I, S," 또는 "Z 작품의" 회전과 번역의 조합이 필요합니다.
따라서, "오리 엔테이션이라는" 단어가 사용됩니다 혼자 여기를 회전 이상의 의미가있습니다.
그러나, 시계 반대 "방향으로" 회전을 변경할 수있습니다 이벤트에 대한 응답만을, 그리고 별개의 순환 과정에서 각각의 작품에 대한 "오리 엔테이션" 근사, 또는 성냥, 순수의 사이클에 따른 회전합니다.
"오리 엔테이션의" 특별라는 단어의 사용이 문맥이라는 단어의 의미는 거의 동일합니다 "회전하거나 각도," 그러나 "혁명이라는" 단어 대신에 "오리 엔테이션을" 사용하려고 할 사실에 대한 관심을 가지고이 필요 이상의 회전을 생산하면 몇 조각 시계 "회전" 행사를 통해 발생한 상태 세트를 허용합니다.
작품은 유일한 스위치를 오리 엔테이션 (또는받는 특정 수평 또는 수직 번역)로 조각을 경우에는 결과가없는 상태를 점령 (전체) 세포를 넘어 영역을 보드와 겹치는 어떠한 않았을 현재 차지하고있는 모든 세포를 세포를 점령 이사회합니다.
(이 규칙에 점령 (전체) 세포의 작품의 일부로 간주되지 않습니다 "세포를 점령은 현재 이사회"
다음과 같은 의견, 로테이션에 대한 언급은 시계 반대의 결과를 만들어 이벤트는 회전이 같은 추측을 수행할 수 사실을 고려할 때 기존의 조건에 조각 및 이사회합니다.
the "O" (상자) 작품에는 하나의 오리 엔테이션, 그리고 그 중 하나의 위치는 변경되지 않습니다 점령 (전체) 세포에 대한 응답으로 어떤 시계 회전 행사합니다.
the "I" (행) 작품에는 두 개의 가능한 오리 엔테이션, 초기에 나타나는 수평 오리 엔테이션합니다.
둘 사이에 대체 the "I" 작품 연속적인 시계 반대 방향으로 회전 이벤트에 대한 응답합니다.
각각의 작품 수가 두 "Z" the "S" 및 오리 엔테이션합니다.
이들 각각의 다른 작품 사이에 두 개의 연속적인 시계 반대 방향으로 회전 이벤트에 대한 응답합니다.
the "L", "J", 그리고 각각의 작품이 4 수있습니다 "T" 오리 엔테이션, 그리고 이들의 결과를 간단한 오리 엔테이션은 회전의 형태에 대해 중앙 지점을합니다.
첫 번째 경우에 나타납니다 한 조각 보드, 그 조각은 수평 방향의 "주요 축," 그리고 작품은 상단에있는 보드.
따라서, 그들의 오리 엔테이션으로 문제가있는 것은 아니 조각은 당초 변경합니다. 조각을 하나씩 하강해야합니다 데 행의 가능성의 오리 엔테이션을 변경합니다.
한 번 떨어진 한 조각은 행 하나를 칠판에 의해, 모든 작품 오리 엔테이션 수있습니다 달성 (추측에 너무 가까이 그 조각은 현재의 더미에 옆 벽면이나 개).
5.4 표준 Tetris 흐름도
다음은 표준 Tetris 게임에 대한 대략적인 흐름도합니다.

표준 Tetris 게임에 대한 대략적인 흐름도

표준 Tetris 게임에 대한 대략적인 흐름도
5.5 표준 Tetris 작품 만들기
다음 다이어그램 표시합니다 (4 셀 * 2 셀) 지역의 모든 작품은 보드에있는 창조 때 나타납니다.

지역에서 만든 작품 표준 Tetris 때 나타납니다
처음에 새로운 작품에 나타납니다 보드, 그 기원과 일치한다 도트이 다이어그램, 그리고 그 조각이된다 회색 영역에이 숫자를 완전히 포함합니다.
새로운 게임을 시작하면, 완전 무료 - 가을 지연 경과, 그리고 한 조각의 첫 자유 - 가을 반복 보드 상단에있는가 태어납합니다.
정상적인 게임 플레이, 구체적인 자유 - 가을 반복하면 "토지를" 한 조각, 완전 무료 - 가을 지연 경과는 다음과 자유 - 가을 반복 한 조각의 상단에 보드가 태어납합니다.
한 조각가 태어납 때, 다음과 같은 알고리즘을 사용하는 유형의 작품을 선택 :
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 일 (7) 작품 무작위로, 구체적인 작품은 p=(1/7) 확률이되고있다.
만일 우리가 이렇게 n=70 시간, 예를 들면, 정확하게 확률은 점점 k 조각 (0을 k 범위에서 n)가 지정한 이항 분포에서 보는 바와 같이, 다음과 같은 이미지를합니다.

이항 분포를 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와 조각, 그리고 모든 위치에서 최적의 의사 결정의 순서를 찾을 수있습니다.
(충분한 기회가되는 것 같아 보드를 완전히 빈 기판 주, 우리가 동기화할 수 있도록 최적의 솔루션과 경로를 예측합니다.)
간단한 난수 생성기를 사용의 위험을 의도에서 시뮬레이션을 발견하면 문제는 최적의 솔루션을 최적의 솔루션은이 문제에 대해서만 공간의 특정 경로를 통해 간단한 난수 생성기를 선택합니다. ]
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), 그리고 요청을 발효 (만약 유효) 순간적합니다.
한 조각 떨어지는 단계를 발생하는 라인 수없이 삭제합니다.
번역을 여러 번 한 조각은 왼쪽이나 오른쪽에, 그리고 연속적으로 하락, 모든 공식적인 라인 하락 단계를 경험하지 않고있습니다.
있을 수 있기 때문에 새롭게 태어납 조각 회전 수없습니다 (상단 모서리에 반대하기 때문에 보드가 정지되어있습니다),이 선수에 동의해야합니다 적어도 하나의 조각 회전이 원하는 경우 단계 하락하거나 필요합니다.
그 효과를 점수는 무시합니다.
5.7 표준 tetris 조각 "상륙"
작품은 간단하게 떨어지는 경우에는, 각 떨어지는 폭포를 반복하는 동안 하나의 행을합니다.
반복하는가있을 거라고 움직임이없는 장소에서 장소로 연락을 수평 표면 수평 표면이 접촉을합니다. 이와 같은 반복이 발생하면 최대 절전 모드 조각은 연락합니다.
한 조각 경우 최대 절전 모드로 시작 접촉을 반복 수평 표면에 조각을 "토지를," 그리고이 부분의 정적 더미합니다.
5.8 표준 tetris "라인 완성"
행의 더미를 완료 행이있는 모든 세포가 차지하고있습니다. 더미에서 제거를 완료하면 행이, 그리고 위에있는 행이 삭제 행은 행 하나를 아래로 이동 간격을 제거하기 위해,이 완료된 "라인을" 계산합니다.
한 조각의 일부가 토지를 쌓기이된다.
그 조각이 땅에 후 즉시의 더미를 검사 완료 행, 및 모든 완료된 행이 삭제합니다.
동시에 최대 4 개의 행을 완료할 수있습니다.
위 제한이 줄을 다음과 같은 테이블을 제공하여 하나의 작품을 동시에 완료 :
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 (1) ~ 10 (10), 1과 수준이 "최소 어려운합니다."
의 수준 인덱스는 최대 두 개의 값 :
actualLevel = max( initialLevel, earnedLevel );
the 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 지연 하락 반복
표준 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]
이 보드는 빈, 그리고 사용자의 입력 없다는 조각을 실제 수준 시키려 10 초 약 1 토지와 토지를 약 10 시키려 작품을 실제 수준 1 두 번째합니다.
5.11 표준 tetris "점수"
보너스 포인트만을 기준 tetris 한 조각의 행위를 방문합니다.
포인트가없습니다 수상의 행위를 한 줄로을 완료, 또는 완료 2, 3, 또는 4 개의 회선을 동시에합니다.
[참고 : 일부 변화, 여성의 행위를 완료한 tetris 보너스 포인트 라인, 상여를 확대로 급격히 늘고있다 라인을 동시에 완성합니다.
이에 따라 평가 점수를 최대화하기위한 전략을 설정하는 그러한 변화에는 기회를 "좀" tetris "Tetris," 속어를 사용하기위한 4 개의 동시 모양 "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 );
참고 :이 수식을 한 조각의 거리와 아무 상관 없어 폴스!
그것은 엄격하게하는 함수의 실제 수준과 반복의 수에 대한 처벌에 빠지기를 자유롭게 한 조각을 허용합니다.
이것은 사용자에 대한 처벌이 필