TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

         Практическое задание N 1. 36

            1.  Создать на экране несколько рядов окон с чередованием двух орнаментов.

            2.  Построить горизонтальную,  либо вертикальную гистограммы столбиками разного цвета для 20-ти значений функций: Y= |Sin(x)|*x; либо  Y= Sin(x)+x;  в диапазоне "x" от 0 до 2*Pi,  с выводом  значений "x" и "Y". 

            Приведем пример программы поиска цели в лабиринте - перемещение символа по экрану с анализом содержания ячеек вокруг текущей позиции.  Строится прямоугольник с преградами в котором случайным образом задаются координаты цели и "десантника",  ищущего цель.  Алгоритм поиска построен на анализе значений ячеек вокруг "десантника",  при этом значение "десантника" k=1,  и проверяется значение восьми окружающих ячеек.  Как только обнаруживается ячейка со значением меньшим k,  то "десантник" перемещается в эту ячейку,  иначе k увеличивается и цикл проверок повторяется.  Ячейка,  из которой вышел “десантник”,  помечается цифрой со значением параметра  k.  Наибольшее число проверок k=8.

Начальные значения пустых ячеек равны нулю,  прямоугольника и преград - десяти.

Uses crt;

Label Metka;

Const       NM=25;                                { число преград в лабиринте }

Var  a: array[1..100, 1..50] of word;                            { массив ячеек }

 NN, MM, N, M, N1, M1, i, j, k, l, i1, j1: word;

BEGIN   textmode(258);  TextColor(1);      Randomize;

        N:= lo(WindMax)+1;     M:= hi(WindMax);        {размеры лабиринта}

      NN:=Random(N)+1;     MM:=Random(M)+1;  { длина преграды по X и по Y}

  for i:=2 to N-1 do for j:=2 to M-1 do a[i,j]:=0;  {обнуление массива}

  for i:=1 to N do begin a[i,1]:=10;  a[i,M]:=10; {границы лабиринта}

                     GotoXY(i, 1);   write(#219);

                 GotoXY(i, M);   write(#219);  end;

 for j:=1 to M do begin a[1, j]:=10;  a[N, j]:=10;     Д  

                        GotoXY(1, j); write(#219);

                   GotoXY(N, j); write(#219);  end;

   for l:=1 to NM do begin         {преграды в лабиринте}                         Ц

           i:=random(N-2)+2;     j:=random(M-2)+2;

           i1:=i+random(NN)+1;  j1:=j+random(MM)+1;

repeat a[ i, j ]:=10; GotoXY(i,j); write(#219);  i:= i+1 until ( i>=N) or ( i>i1);

repeat a[ i, j ]:=10; GotoXY(i,j); write(#219);  j:= j+1  until ( j>=M) or ( j>j1);

                      end;

    i:=random(N)+1;  j:=random(M)+1;  a[i,j]:=11;     {координаты цели}

     TextColor(14);     GotoXY(i, j);  write('Ц');

i:=random(N-2)+2; j:=random(M-2)+2; a[i,j]:=1; {координаты десантника}

      TextColor(5);     GotoXY(i, j);  write('Д'); delay(1000);

repeat

    for i1:= i-1 to i+1 do   for j1:= j-1 to j+1 do          {поиск цели}

     if  a[i1,j1]= 11 then begin   TextColor(14);   GotoXY(1,M+1);

                     Write('Цель обнаружена'); readln;  Halt  end;

    for k:=1 to 8 do begin    {цикл до 8-ми проверок вокруг текущей позиции}

        a[i,j]:=k;  GotoXY(i,j);  write(k);  {отмечаем текущую позицию}

       for i1:= i-1 to i+1 do   for j1:= j-1 to j+1 do {поиск выхода}

      if  a[i1,j1]< k then begin  i:=i1;  j:=j1;  GOTO Metka  end;

    end;

  TextColor(14);   GotoXY(1, M+1);  Write('ТУПИК'); readln;  Halt;

  Metka:               GotoXY(i, j);   Write('Д');      delay(10)

until keypressed;

END.

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz