Тьюрмит. Построение красивых мозаек. Трансляторы и интерпретаторы
Язык: Borland Pascal 7.0
Курс: Трансляторы и интерпретаторы
Тьюрмит - это существо, вылезшее из разбитой машины Тьюринга, после того, как Грегори Тэрк уронил еe со своего стола. С тех пор тьюрмиты распространились довольно широко, однако по-прежнему остаются мало исследованными созданиями. Живут тьюрмиты на бесконечной плоскости, разделённой на квадратные клетки. Чем они питаются, неизвестно. Живой тьюрмит постоянно движется по плоскости; он не может оставаться в покое.
Тьюрмит всегда работает по программе, заложенной в его ''мозг''.В каждый момент времени выполняется одна из строк программы, а какая именно - зависит от ''ситуации''. Точнее - от цвета клетки, в которой тьюрмит находится, и от той строки, которая выполнялась перед этим.
Результатом выполнения этой строки будет следующее :
Синтаксис всех строк программы для тьюрмита очень прост :
БУКВА, ТЕКУЩИЙ ЦВЕТ, НОВЫЙ ЦВЕТ, КОД ПОВОРОТА, НОВАЯ БУКВА
Под буквой здесь понимается любая буква, а также цифра или другой символ.
Цвета кодируются числами от 0 до 15.
Поворотов бывает всего три : -1 - ''налево'' , 0 - ''прямо'' , 1 - ''напрово''.
Program Turmits; { Make 11.11.1998 } Uses { All rights reserved } Crt,Graph; Type zz = record a1,a5 : char; a2,a3 : byte; a4 : -1..1 end; Var a : array[1..20] of zz; n : byte; g,v : integer; x,y : integer; key : char; stop,go : Boolean; gm,gd : integer; {--------------------------------------------------------------------------} procedure makeprog; var i : integer; ss : boolean; begin textcolor(blue); clrscr; textcolor(white); writeln('Введите программу для тьюрмита :'); i:=0; ss:=false; while not ss do begin i:=i+1; readln(a[i].a1); a[i].a1:=upcase(a[i].a1); readln(a[i].a2); readln(a[i].a3); readln(a[i].a4); readln(a[i].a5); a[i].a5:=upcase(a[i].a5); key:=readkey; if key = #27 then ss:= true else begin if key = #0 then key:=readkey; sound(40); delay(30); nosound end end; writeln('Программа задана...'); n:=i; readkey; textcolor(blue); clrscr end; {--------------------------------------------------------------------------} procedure prog_info; begin textcolor(blue); clrscr; textcolor(white); writeln('Тьюрмит'); writeln(''); readkey; textcolor(blue); clrscr end; {--------------------------------------------------------------------------} procedure autor_info; begin textcolor(blue); clrscr; textcolor(yellow); writeln; writeln(' ':24,'Привет всем !!!'); gotoxy(7,1); writeln('Программа написана студентом Рыбинской Государственной Авиационной'); writeln(' ':11,'Технологической Академии Шаровым Евгением Николаевичем.'); writeln(''); writeln(''); writeln(''); writeln(''); writeln(''); textcolor(11); gotoxy(30,23); writeln('All rights reserved.'); readkey; textcolor(blue); clrscr end; {--------------------------------------------------------------------------} procedure p1; begin n:=6; a[1].a1:='A'; a[1].a2:=0; a[1].a3:=14; a[1].a4:=0; a[1].a5:='B'; a[2].a1:='A'; a[2].a2:=14; a[2].a3:=11; a[2].a4:=-1; a[2].a5:='A'; a[3].a1:='A'; a[3].a2:=11; a[3].a3:=0; a[3].a4:=1; a[3].a5:='B'; a[4].a1:='B'; a[4].a2:=0; a[4].a3:=11; a[4].a4:=1; a[4].a5:='A'; a[5].a1:='B'; a[5].a2:=11; a[5].a3:=14; a[5].a4:=-1; a[5].a5:='A'; a[6].a1:='B'; a[6].a2:=14; a[6].a3:=0; a[6].a4:=0; a[6].a5:='A' end; {--------------------------------------------------------------------------} procedure p2; { мазайка } begin n:=10; a[1].a1:='A'; a[1].a2:=0; a[1].a3:=14; a[1].a4:=0; a[1].a5:='B'; a[2].a1:='B'; a[2].a2:=0; a[2].a3:=14; a[2].a4:=0; a[2].a5:='C'; a[3].a1:='C'; a[3].a2:=0; a[3].a3:=14; a[3].a4:=0; a[3].a5:='E'; a[4].a1:='E'; a[4].a2:=0; a[4].a3:=14; a[4].a4:=0; a[4].a5:='F'; a[5].a1:='F'; a[5].a2:=0; a[5].a3:=14; a[5].a4:=0; a[5].a5:='J'; a[6].a1:='J'; a[6].a2:=0; a[6].a3:=13; a[6].a4:=-1; a[6].a5:='A'; a[7].a1:='A'; a[7].a2:=14; a[7].a3:=13; a[7].a4:=0; a[7].a5:='A'; a[8].a1:='A'; a[8].a2:=13; a[8].a3:=14; a[8].a4:=0; a[8].a5:='A'; a[9].a1:='J'; a[9].a2:=14; a[9].a3:=13; a[9].a4:=0; a[9].a5:='A'; a[10].a1:='J'; a[10].a2:=13; a[10].a3:=14; a[10].a4:=1; a[10].a5:='A' end; {--------------------------------------------------------------------------} procedure p3; { вертушка } begin n:=7; a[1].a1:='A'; a[1].a2:=0; a[1].a3:=2; a[1].a4:=0; a[1].a5:='C'; a[2].a1:='A'; a[2].a2:=2; a[2].a3:=0; a[2].a4:=0; a[2].a5:='B'; a[3].a1:='B'; a[3].a2:=2; a[3].a3:=2; a[3].a4:=1; a[3].a5:='A'; a[4].a1:='B'; a[4].a2:=15; a[4].a3:=2; a[4].a4:=1; a[4].a5:='A'; a[5].a1:='C'; a[5].a2:=2; a[5].a3:=0; a[5].a4:=-1; a[5].a5:='A'; a[6].a1:='C'; a[6].a2:=0; a[6].a3:=15; a[6].a4:=-1; a[6].a5:='A'; a[7].a1:='C'; a[7].a2:=15; a[7].a3:=2; a[7].a4:=-1; a[7].a5:='A' end; {--------------------------------------------------------------------------} procedure p4; begin n:=0; end; {--------------------------------------------------------------------------} procedure p5; { линия } begin n:=2; a[1].a1:='A'; a[1].a2:=0; a[1].a3:=15; a[1].a4:=1; a[1].a5:='A'; a[2].a1:='A'; a[2].a2:=15; a[2].a3:=15; a[2].a4:=0; a[2].a5:='A' end; {--------------------------------------------------------------------------} procedure primers; var stop3 : boolean; begin textcolor(blue); clrscr; textcolor(yellow); gotoxy(21,3); writeln('Примеры программ для тьюрмита:'); gotoxy(28,7); write('1-Вертушка.'); gotoxy(28,8); write('2-Жeлтый дом.'); gotoxy(28,9); write('3-Мазайка.'); gotoxy(28,10); write('4-Бегущие линии.'); gotoxy(28,11); write('5-Линия.'); textcolor(white); gotoxy(22,14); writeln('Выберите необходимый пункт.'); stop3:=false; while not stop3 do begin key:=readkey; case key of '1' : p3; '2' : p1; '3' : p2; '4' : p4; '5' : p5; else begin stop3:=true; Sound(160); Delay(17); NoSound end end; if stop3 then stop3:=false else stop3:=true end; textcolor(blue); clrscr end; {--------------------------------------------------------------------------} procedure help; var stop2 : boolean; begin textcolor(blue); textbackground(blue); clrscr; stop2:=false; n:=0; while not stop2 do begin textcolor(lightmagenta); gotoxy(36,5); write('HELP'); textcolor(10); gotoxy(20,10); write('О программе...........................1'); gotoxy(20,11); write('Автор.................................2'); gotoxy(20,12); write('Примеры программ для тьюрмита.........3'); gotoxy(20,13); write('Выход в основное меню.................4'); key:=readkey; case key of '1' : prog_info; '2' : autor_info; '3' : primers; '4' : stop2:= not stop2; else begin Sound(160); Delay(17); NoSound end end end; textcolor(blue); clrscr end; {--------------------------------------------------------------------------} procedure moving(what:integer); begin case what of 1:if (v=0) and(g=1) then begin v:=1; g:=0 end else if (v=1) and(g=0) then begin v:=0; g:=-1 end else if (v=0) and(g=-1) then begin v:=-1; g:=0 end else if (v=-1) and(g=0) then begin v:=0; g:=1 end; -1:if (v=0) and(g=1) then begin v:=-1; g:=0 end else if (v=1) and(g=0) then begin v:=0; g:=1 end else if (v=0) and(g=-1) then begin v:=1; g:=0 end else if (v=-1) and(g=0) then begin v:=0; g:=-1 end end; x:=x+g; y:=y+v; if (x<5) or (y<5) or (x>635) or (y>345) then go:=false end; {--------------------------------------------------------------------------} procedure lookprog; var i : integer; begin textcolor(blue); clrscr; textcolor(white); if n = 0 then writeln('Программа не задана...'); for i:=1 to n do writeln(a[i].a1,a[i].a2:3,a[i].a3:3,a[i].a4:3,a[i].a5:2); readkey; textcolor(blue); clrscr end; {--------------------------------------------------------------------------} procedure game; var i,j,k : integer; old_char : char; old_color : byte; xx : word; begin textcolor(blue); clrscr; textcolor(white); if n = 0 then begin writeln('Программа не задана...'); readkey; textcolor(blue); clrscr; exit end; Gd:=VGA; Gm:=2; InitGraph(Gd,Gm,'c:\bp\bgi'); if GraphResult <> grOk then begin textcolor(blue); clrscr; exit end; x:=300; y:=175; old_char:='A'; old_color:=0; g:=1; v:=0; go:=true; setbkcolor(black); cleardevice; while go do begin go:=false; for i:=1 to n do if (a[i].a1 = old_char) and (a[i].a2 = old_color) then begin go:=true; j:=i; break end; if not go then break; if keypressed then begin key:=readkey; if key = #0 then key:=readkey; go:=false; break end; xx:=a[j].a3; putpixel(x,y,xx); k:=a[j].a4; moving(k); old_char:=a[j].a5; old_color:=getpixel(x,y) end; setcolor(green); settextstyle(smallfont,0,6); outtextxy(1,1,'Ok !'); readkey; closegraph; textmode(3); textcolor(1); textbackground(1); clrscr end; {--------------------------------------------------------------------------} BEGIN textmode(3); textcolor(blue); textbackground(blue); clrscr; stop:=false; n:=0; while not stop do begin textcolor(11); gotoxy(30,23); writeln('All rights reserved.'); textcolor(15); gotoxy(20,11); write('Задать программу......................1'); gotoxy(20,12); write('Просмотреть программу.................2'); gotoxy(20,13); write('Выполнить.............................3'); gotoxy(20,14); write('Help..................................4'); gotoxy(20,15); write('Выход в ДОС...........................5'); key:=readkey; case key of '1' : makeprog; '2' : lookprog; '3' : game; '4' : help; '5' : stop:= not stop; else begin Sound(160); Delay(17); NoSound end end end; textmode(3) END.
PHP — это язык программирования, основанный на использовании скриптов. Данный язык широко применяется для создания различных front-end и back-end веб-приложений. Поддерживается по-умолчанию большинством хостеров, являясь одним из лидеров среди языков программирования, предназначенных для создания динамических интерактивных сайтов. |
Интересные материалы на сайте:
|