Тьюрмит. Построение красивых мозаек. Трансляторы и интерпретаторы
Язык: 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 веб-приложений. Поддерживается по-умолчанию большинством хостеров, являясь одним из лидеров среди языков программирования, предназначенных для создания динамических интерактивных сайтов. |
Интересные материалы на сайте:
|
|
|