Тетрис
Colin Fahey
1. Программное обеспечение
2. Введение
Эта статья описывает, как компьютер может играть классический видео игры Tetris на получение информации о борту, определяющих хорошие действия, и выполняют эти действия.
Эта статья включает в себя программное обеспечение, способных играть Тетрис в режиме реального времени.
Программное обеспечение включает в себя лучшие в режиме реального времени Тетрис алгоритм игры в общественное достояние.
Данная статья определяет правила для «стандартных Тетрис,» спецификация основывается на первоначальной 1986 до коммерческой версии Tetris для персональных компьютеров (PC).
В 2003, программное обеспечение, включенных в настоящей статье, была использована для того, чтобы играть в компьютерные Тетрис работает на отдельном компьютере.
Обыкновенных USB видеокамера была использована для того, чтобы компьютер «видеть» экран другой компьютер.
Реле борту, который контролируется через RS-232 интерфейс к компьютеру, чтобы «нажать клавиши» на клавиатуре другой компьютер.
Таким образом, первый компьютер имеет отношения к второй компьютер, который похож на типичного игрока человеческого отношения к компьютеру при игре в Tetris; игру состоянии известен только взглянуть на экран, и игрок действия могут быть начата только с помощью клавиатуры .
Конфигурация в этой демонстрации установлено, что компьютер может сыграть Тетрис лучше, чем права, в соответствии с обычной в режиме реального времени игры Tetris условиях.
3. История Тетрис
В 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-летний средних школ компьютерной prodigy которые работали в академии осуществляется на Тетрис IBM PC работает MS-DOS операционной системы.
(Vadim Gerasimov позже сделал исследований на MIT Media Laboratory, от 1994 до 2003, получив степень доктора философии по окончании много интересных проектов:
http://vadim.www.media.mit.edu)

Введение экране 1987-1988 до коммерческого выпуска Тетрис для PC

Игру экране 1987-1988 до коммерческого выпуска Тетрис для PC
После 1987, Тетрис распространились по всему миру.
The Tetris Company, LLC, владеющей торговой маркой Тетрис.
4. Проекты вдохновили на Тетрис
4.1 0-мерное Тетрис
Еще не разработаны.
4.2 1-мерное Тетрис
Ziga Hajdukovic разработал 1-мерной Тетрис программное обеспечение, которое можно играть в Интернет-браузере.
Ziga Hajdukovic также разработал 1-мерной Тетрис программного обеспечения для мобильных телефонов, используя Java J2ME платформы.
4.3 2-мерном Тетрис
Все обычные Тетрис варианты в этой категории.
Данный раздел включает в себя интересные варианты.
4.3.1 Самый большой когда-либо игру Тетрис: Delft University of Technology (1995)

Тетрис играл на строительство; 2000 m^2 площадь поверхности; Delft University of Technology (1995)

Тетрис играл на строительство; 2000 m^2 площадь поверхности; Delft University of Technology (1995)
4.3.2 Еще одна игра Тетрис играл на здании: Brown University (2000)

Тетрис игра отображается, используя огни в окнах здания на Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
«Я считаю, что это было лишь самые невероятные один день, что я могу представить себе в моей жизни. Как и Стив Работа всегда говорили, перевозки вознаграждение.»
«Он сделал мне кажется проектов, мы сделали еще в колледже. Вещи, которые были почти undoable, что другие люди не будут думать о занимаемся.»
Steve Wozniak (2000)
4.3.3 Интернет-браузер, игры с MIT «Green построение» изображений

Vadim Gerisimov's Интернет-браузера Тетрис
Этот Интернет-браузер Тетрис вариант был создан Vadim Gerasimov.
Этот Интернет-браузер Тетрис черты «Green» здание на кампусе MIT.
Тетрис Этот вариант имеет только девять колонок вместо стандартных десять колонн.
Это Тетрис вариант представляет новые куски со случайной ориентации.
Vadim Gerasimov является лицо, которые он написал компьютерный код для PC версию Tetris в 1986.
Vadim Gerasimov сделал к.т.н. Исследования по MIT Media Laboratory ходе 1994-2003, работающих на многих интересных проектов.
4.3.4 PIC16F84 12 MHz микроконтроллера на базе NTSC / PAL видео игры Tetris

PIC16F84 12 MHz микроконтроллера на базе NTSC / PAL видео игры Tetris
Изображение вверху NTSC / PAL вывода видео получается путем PIC16F84 12 MHz микроконтроллеров работает программное обеспечение, написанных Rickard Gunee в 1998.
Видео сигнал генерируется при помощи соответствующего программного обеспечения контроля цифровых материалов.
4.3.5 «Scopetris» осциллографа тетрис на Lars Pontoppidan (2007.8)

«Scopetris» осциллографа тетрис на Lars Pontoppidan (2007.8)
Lars Pontoppidan писал код для AtMega32 микроконтроллеров, и добавил, простых аналоговых схем, создавать Тетрис версия, которую могли бы играть по осциллографа.
Некоторые регистры AtMega32 микроконтроллерным контроля 8-битных выходных сигналов, и, когда проходили через «R-2R» электрического сопротивления контура для цифрового сигнала в аналоговый (D/A) преобразования, в результате аналоговые сигналы могут контролировать (x,y) координаты луча осциллографа (когда это осциллографа набор для «X-Y режиме).»
YouTube видео:
FLV видео:
4.3.6 Obfuscated код Тетрис: 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 код Тетрис: Perl код
Ниже приводится Тетрис для 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 Тетрис
Scalable Vector Graphics (SVG) является стандартом для описания графических объектов, используя XML.

Mozilla SVG Тетрис: Tetris осуществляться с использованием Scalable Vector Graphics (SVG) описание
4.3.9 Google «widget» Тетрис
Google, Yahoo! и Microsoft, а также других компаний, способствовали миниатюрный интернет-программное обеспечение с именем «widgets», которые обычно характерны некоторые использования динамических данных, имеющихся на Интернете.
Одним из таких widget через Google является Тетрис игры.
Следующий пример является cute, но формы вращаются в раздражает способами:

Google «widget» Тетрис
Другие Google widgets:
4.3.10 MIT исследования: «Tetris is Hard, Even to Approximate» (2002)
Следующие исследования документе содержатся доказательства того, что некоторые виды Тетрис вариант «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 на Computer Science отдела Rhodes University, Южной Африки, представляет применение «обучения с подкреплением» к Тетрис.
4.3.12 Тетрис юбку (2007.11)

Тетрис юбку (2007.11)
Тетрис юбка была создана «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."
Форум комментарии относительно этой юбки:
«Человек, что юбка sucks на Тетрис»
«Ahahahaha, я думал, одно и то же.»
«Там в полное соответствие вниз на дно ... завершен линий исчезнет.» «СДЕЛАТЬ БОЛЕЕ» «.»
«Там должно быть места в задней или передней, где давно куска будет вполне соответствуют ...»
«Это действительно отвратительный, хотя юбку. Мой парень не может купить мне достаточно шоколад и цветы, чтобы убедить меня надеть что вещь.»
4.3.13 Тетрис этапе действовать (2007.4)

Тетрис этапе действовать (2007.4)
«Из тех, кто вывел вас Triforce в 2006 ... Comes следующего поколения неодушевленных объектов скит ... Тетрис.»
Локально-кэше Flash видео в формате видео (FLV) (использование VLC играть):
4.3.14 Забавного Тетрис вариации на японские телевизионные шоу

Тетрис вариации на японские телевизионные шоу
Это видео сегмент от японской телевизионных шоу включает в себя забавного вариаций Тетрис, в том числе:
штук, которые исчезают после посадки, кусок, что наполняет всю строку (завершив тем самым подряд после посадки), несколько единиц, входящих одновременно, неправильной формы куски, долго кусок, что немного слишком большим для того, чтобы он поместился в разрыв (предотвращение 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 во Дворце Rumine (Лозанна, Швейцария) на November 24th 2007.
Локально-кэше Flash видео в формате видео (FLV) (использование VLC играть):
4.3.16 2.5-мерное Тетрис
Термин «2.5-мерной» используется здесь в виду не являющихся ортогональных мнению двумерного версию Tetris, причем некоторые толщиной в третье измерение.
(Узнать ссылку «tetris3d» в «F7: GAMES».)
4.4 3-мерные Тетрис

Linux / GTK версия
Трехмерная Tetris в виде Java апплет для Интернет-браузеры:
Трехмерная Tetris для Windows операционной системы:
4.5 4-мерной Тетрис

Greg Kaiser's «HyperTetris» (1996): 4-мерной Тетрис
В [1996], [...], Greg Kaiser воедино четырехмерного варианта на классические игры.
Использование IrisGL (a.k.a. igl) он создавал рабочие, если трудно играть, игры, используя четыре к югу от экранов изображать различные трехмерные аспекты всей игры-пространстве.
[Поскольку] там не легко [понятными] способ обратить четыре-D объектов на два-D экране, четыре к югу от мнения практический метод для обработки и визуализации вращения и перевода произведений с помощью четырех измерениях ( в игру под названием 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.
Она занимает некоторое время привыкнуть к, мягко говоря.
Если некоторые чудо терпения или изменения параметров игры, один делает полный куб, она исчезнет, как завершены линий сделать в первоначальном Тетрис, хотя и не показатель находится в HyperTetris.
Benjamin Bernard (2000)
4.6 N-мерной Тетрис

Polytope Tetris (2003): N-мерной вариант игры Tetris
Polytope Tetris является n-dimensionally Тетрис.
Воодушевленная HyperTetris программа, Polytope Tetris позволяет тонн играть в любом Тетрис ЧИСЛО измерение.
Играйте в Тетрис 3D, 4D, 5D, или даже больше.
HyperTetris является гораздо catchier название, чем Polytope (Ок) Тетрис, но я не могу украсть название.
5. «Стандартные» спецификации «Тетрис»
5.1 Введение
Определение «стандарта Тетрис» является моделью идеального наиболее важных характеристик и поведения первого IBM-PC осуществления игру Тетрис (ок. 1986-1988).
Идеализированных модель основана на inferring явного намерения создателей первого IBM-PC осуществления Тетрис игры.
Например, представляется разумным сделать вывод о том, что разработчики первых IBM-PC осуществления Тетрис игры предназначены для выбора формы каждого нового падения куска «случайно,» и что использование Borland C осуществления rand() функция заключается лишь практические приближении намерение.
Определение «стандарта Тетрис» указывается, что форма каждого нового падения куска должен быть выбраны «произвольно.»
Этот идеал поведения не может быть достигнуто за счет каких-либо реализации, однако реализация может приблизительное идеального поведения.
Хотя никаких осуществление может прекрасно выполнять определение «стандарта Тетрис,» идеалы «Стандартный Тетрис» включать объективные характеристики, и реализациях могут быть сопоставлены с учетом их относительной близости к идеалам «Стандартный Тетрис.»
Этот раздел описывает набор элементов, модели поведения и правил, которые в совокупности определяют «стандарт Тетрис.»
5.2 Стандартный Тетрис борту
Совет сетку из клеток, имеющих 10 столбцов и 20 строк, в общей сложности 10 * 20 = 200 клеток.

Стандартный Тетрис борту (10 колонок, 20 строк)
Каждый элемент может быть либо незанятых (пусто) или занятые (полный).
5.3 Стандартный Тетрис штук
Есть семь (7) стандарта Тетрис штук, причем имена следующее письмо:
{ O, I, S, Z, L, J, T }
Письмо имена вдохновляет формы штук.

Стандартный Тетрис семь штук, и их «ориентации»
Точку в (0,0) совпадает с позиции (6,20) борту, когда кусок первый взгляд.
Первая колонка показывает первоначальных «ориентиров.»
В следующие слова «ориентация» используется для обозначения любого состояния куска, в рамках комплекса позволяет государствам, которые могут возникнуть в результате против ротации событие.
Смена «ориентации» с указанной «ориентации I, S» или «Z» кусок, требует сочетания ротации и перевод.
Таким образом, слово «ориентация» используется здесь означает нечто большее, чем вращение в одиночку.
Однако, «ориентация» может изменить лишь в ответ на мероприятие против ротации, а также цикл различных «направлений» для каждого куска приближается, или спички, цикл результате чистая замен.
Специальное использование слова «ориентацию» в данном контексте это почти эквивалентно смыслу слова «ротации» или «угол,» но слово «ориентация» используется вместо «ротации» пытаться привлечь внимание к тому факту, что некоторые куски требуют больше, чем производить ротацию набор разрешенных состояний в результате против «ротации» событий.
Кусочки могут лишь переключатель направления (или пройти конкретные горизонтальной или вертикальной перевод), если в результате состояние куска не будет иметь никаких оккупированных (полное) клетки вне области борту и не будет иметь никаких оккупированных клеток, которые в настоящее время каких-либо накладок, оккупированных клеток от борту.
(В этом правиле, оккупированных (полное) клеток кусок, не рассматриваются как часть «в настоящее время занимают клетки борту»
В следующие замечания, любая ссылка на результат против ротации случае производится с предположением, что такая ротация может фактически быть выполнены с учетом существующих условий и кусок борту.
«O» (вставка) фрагмент только одного ориентации, и не меняет места какого-либо из своих оккупированных (полное) клетки в ответ на любые мероприятия против ротации.
«I» (линии) кусок имеет два возможных направления, первоначально появляются в горизонтальной ориентации.
«I» кусок между заместителями два направления в ответ на сменявшие друг против ротации событий.
«S» и «Z» штук каждой из двух возможных ориентаций.
Эти кусочки каждого поочередно два направления в ответ на сменявшие друг против ротации событий.
«L», «J» и «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 (семь) штук наугад, вероятность получения конкретного образца не p=(1/7).
Если мы сделаем это n=70 раз, например, вероятность получения точно k штук (с k в диапазоне 0 к 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 штук, то оптимальные решения могут быть найдены для каждого места в последовательности.
(Там, как представляется, будет достаточно возможностей время на борту совершенно пустой борту состоянии, что позволило нам получить синхронизирована с precomputed оптимальный путь решения.)
Риск, используя простой генератор случайных чисел в симуляции, чтобы найти оптимальное решение проблемы состоит в том, что решение будет оптимальным только за особый путь через пространство проблемы, отобранных простой генератор случайных чисел. ]
5.6 Стандартный Тетрис контроля
За игру, следующие материалы доступны:
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
Все материалы в действие на рост-кромка позитивный вклад (на нажатие кнопок, в отличие от кнопки-релиз).
Когда происходит нажатие кнопок, это засчитывается как просьбу.
Холдинг кнопку спуска за определенное время, возможно, приведет к «автоматической повторять» особенность клавиатуры, создавая новые кнопки и прессы, - но эта функция вне игры двигателя.
Материалов, указанных выше, соответствуют первоначальным Тетрис игры.
Повернуть запросы могут быть выполнены, если нет совпадения между желаемой ориентации и набор клеток на текущий пансион (за исключением входящих шт), и если желаемый ориентация не имеет набор клеток вне борту области.
Перевести запросы могут быть выполнены, если нет совпадения желаемого переведены конфигурации и набора клеток на текущий пансион (за исключением входящих шт), и, если требуемый перевод конфигурации не имеет набор клеток вне борту области.
Введите запросы обрабатываются с латентностью, которая зависит от кадров из игры (например: 75 Hz), и просит в силу (в случае действительной) мгновенно.
Кусок может быть отброшен без каких-либо шагов, входящих линии происходит.
Кусок может быть переведены несколько раз влево или вправо, а затем сбросили, которые испытывают все без официальной линией падения шаг.
Потому что недавно вызвал фрагмент не могут быть повернуты (потому что он застрял в отношении верхней кромки доска), игрок должен согласиться, по крайней мере один фрагмент, входящих шаг, если циклы подвергаются желаемого или требуемого.
Влияние на оценку является незначительным.
5.7 Стандартный Тетрис кусок «посадки»
Если это просто кусок падает, он падает на одной строке на каждый кусок, входящих итерации.
Там будет итерации, что она движется с места без каких-либо контактов с горизонтальной поверхности на месте, которое имеет контакт с горизонтальной поверхности. Как только это произойдет итераций, фигуры покоится в контакт.
Если итерации начинается с куска отдыха в контакт с горизонтальной поверхности, кусок «земли,» и становится частью статический стопку.
5.8 Стандартный Тетрис «линий завершена»
Завершена строка строка стопку, в которой все ячейки заняты. Когда завершен ряд исключен из стопки, и рядами выше ликвидированы подряд являются сместился вниз на одну строку ликвидировать разрыв, это засчитывается как завершил «линию.»
Когда кусок земли она становится частью стопки.
Сразу же после кусок земли, куча проверяется завершен рядами, и все строки будут завершены ликвидирован.
До четырех строк может быть завершена одновременно.
Следующая таблица дает верхний предел на линиях завершена одновременно одного куска:
piece max. simultaneous
rows completed
===== ==================
"O" 2
"I" 4
"S" 2
"Z" 2
"L" 3
"J" 3
"T" 2
5.9 Стандартный Тетрис «уровнях»
Стандартный Тетрис имеет 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&