www.gcmsite.ru

Новости Программы PHP-скрипты Статьи Числа
Услуги Резюме Игры Автомобили Поиск

СИСТЕМНОЕ И ВЕБ-ПРОГРАММИРОВАНИЕ
компьютерная техника, игры

Тьюрмит. Построение красивых мозаек. Трансляторы и интерпретаторы

Язык: Borland Pascal 7.0

Курс: Трансляторы и интерпретаторы

Тьюрмит - это существо, вылезшее из разбитой машины Тьюринга, после того, как Грегори Тэрк уронил еe со своего стола. С тех пор тьюрмиты распространились довольно широко, однако по-прежнему остаются мало исследованными созданиями. Живут тьюрмиты на бесконечной плоскости, разделённой на квадратные клетки. Чем они питаются, неизвестно. Живой тьюрмит постоянно движется по плоскости; он не может оставаться в покое.

Тьюрмит всегда работает по программе, заложенной в его ''мозг''.В каждый момент времени выполняется одна из строк программы, а какая именно - зависит от ''ситуации''. Точнее - от цвета клетки, в которой тьюрмит находится, и от той строки, которая выполнялась перед этим.

Результатом выполнения этой строки будет следующее :

1) тьюрмит покрасит ту клетку, на которой он стоит, в некоторый цвет;
2) затем он либо сдвинется прямо относительно своего текущего направления движения, либо свернeт налево, либо повернёт направо;
3) тьюрмит узнает, какую строку программы он должен выполнить следующей. Если такой строки в тексте программы не обнаружится, тьюрмит ''умирает''. Пока такие строки находятся, тьюрмит живёт вечно.

Синтаксис всех строк программы для тьюрмита очень прост :

            БУКВА, ТЕКУЩИЙ ЦВЕТ, НОВЫЙ ЦВЕТ, КОД ПОВОРОТА, НОВАЯ БУКВА

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

Интересные материалы на сайте:

Автор, разработчик: Шаров Евгений   (gcmsite@yandex.ru)
(c) 2000-2020 GCM-Site - системное и веб-программирование
Цитирование материалов сайта возможно только при наличии гиперссылки