TURBO PASCAL |
Новости |
Практическое задание 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. |
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |