Автор работы: Пользователь скрыл имя, 25 Марта 2011 в 23:10, реферат
Работу над проектом разобьем на три этапа:
I.Нарисуем волны (в виде пикселей синего цвета) и поверхность земли (в виде зеленого прямоугольника с желтыми участками более легкой породы).
II.Заставим волны двигаться (докатываться до береговой линии).
III.Заставим волны размывать берег, уничтожая (унося в море) по одному пикселю береговой породы.
Проект
9. Броуновское
(хаотичное) движение точки (пикселя), оставляющей
след (траекторию).
Можно обойтись без case z of , если задать смещение точки так:
dx:= random(3) – 1;
dy:= random(3) – 1;
Очевидно будет выбрано одно из восьми направлений, т.к. выпадает случайно -1, 0, 1.
Координаты
зададим в процедуре FormCreate , двигать точку
будем в процедуре Timer1Timer.
Проект
10. Броуновское
(хаотичное) движение N точек (пикселей),
оставляющих след (траекторию).
Координаты точек (пикселей) и цвет задаем случайным образом (random) и сохраняем их в массивах:
x[k], y[k] координаты
k – ой точки, c[k] цвет k – ой точки.
При этом массивы надо объявить глобальные (перед Implementation):
Const N = 100;
Var x, y, с: array[1 . . N] of integer;
и присвоить (в процедуре FormCreate):
for k:=1 to N do begin
x[k];= random(536);
y[k]:= random(348);
c[k]:= random(random(random(1000000))
canvas.Pixels[x[k], y[k]]:= c[k];
end;
В итоге можно получить такую картинку:
Проект 11. Снег.
Необходимо
использовать массив координат, один цвет
и пять направлений движения снежинок:
x[k], y[k] координаты k – ой точки.
В процедуре FormCreate зададим значения этих координат случайным образом:
randomize;
timer1.Enabled:=true;
for k:=1 to n do
begin
x[k]:=random(500)+20;
y[k]:=random(70)+50;
end;
В процедуре FormPaint нарисуем снежинки и поверхность земли:
canvas.Pen.Color:=claqua;
canvas.Brush.Color:=claqua;
canvas.Rectangle(0,320,535,
for k:=1 to n do
canvas.Pixels[x[k],y[k]]:=
В процедуре обработки таймера находим новые значения координат:
x1:=x[k]+dx;
y1:=y[k]+dy;
Рисуем снежинку по новым координатам (x1,y1) и стираем ее по старым координатам (x[k],y[k]):
canvas.Pixels[x1,y1]:=clred;
canvas.Pixels[x[k],y[k]]:=
Если снежинка долетает до поверхности – взамен нее выпускаем новую.
x[k]:=random(500)+20;
y[k]:=50;
Не забудем изменить (присвоить) текущие значения координат на новые:
x[k]:=x1;
y[k]:=y1;
Дополнительно: Снег должен накапливаться в сугробы:
Заставим снежинки накапливаться в сугробы (снежный покров).
Для этого будем предварительно проверять цвет пикселя в той точке, в которую собираемся переместить снежинку, т.е. в точке с новыми координатами (x1,y1).
Если впереди препятствие определенного цвета (поверхность земли, а затем и упавший снег), то снежинка останавливается. При этом она меняет свой цвет, что позволяет летящим снежинкам прилипать к уже упавшим, образуя, таким образом, сугроб (снежный покров):
if canvas.pixels[x1,y1]<>claqua then
begin
canvas.Pixels[x1,y1]:=clred;
canvas.Pixels[x[k],y[k]]:=
x[k]:=x1;y[k]:=y1;
end
else
begin
canvas.pixels[x[k],y[k]]:=
x[k]:=random(500)+20;
y[k]:=50;
end;
Проект 12. Дымоход.
Нарисовать две
наклонные линии
стенок трубы (наклонные для скорости
засорения трубы). Запустить снизу частички
сажи и ждать
когда засорится труба.
Проект 13. Электролиз.
Нарисовать
в центре формы шар
(катод).
Запустить с четырех сторон ионы (частички) и ждать когда они налипнут на шар.
Для того, чтобы частички летели с разных сторон необходимо задать четыре пары массивов координат:
x[k], y[k] координаты k – ой точки, летящей слева.
x1[k], y1[k] координаты k – ой точки, летящей сверху.
x2[k], y2[k] координаты k – ой точки, летящей справа.
x3[k],
y3[k] координаты
k – ой точки, летящей снизу.
Проект 14. Берег.
Программа моделирует
морские волны,
которые размывают берег, изменяя рельеф
береговой линии, в
зависимости от твердости
породы.
Работу над проектом разобьем на три этапа:
В итоге мы можем получить картинки следующего вида:
И через
некоторое время: