Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2008, 23:25   #1
lastbronetrain
Новичок
Джуниор
 
Регистрация: 22.12.2008
Сообщений: 1
Восклицание Модуль Graph - Составить программу вывода в верхнюю часть экрана изображения двух "туч".

Вот задача:
Составить программу вывода в верхнюю часть экрана изображения двух "туч". При нажатии клавиши "Ввод" "тучи" начинают двигаться навстречу друг другу. В момент их касания начинает идти "дождь" только из перекрывающейся области, которая сначала увеличивается, а затем уменьшается по мере движения "туч".
У меня есть две процедуры: одна делает две тучи:
procedure tuchi;
begin
gd:=0; gm:=0;
initgraph(gd,gm,'');
tucha1:=1; tucha2:=500;
readln;
repeat
delay(1000);
setcolor(black);
circle(tucha1,23,18);
circle(tucha1+36,23,18);
circle(tucha1+36+36,23,18);
circle(tucha1+36+36+36,23,18);

circle(tucha2,23,18);
circle(tucha2+36,23,18);
circle(tucha2+36+36,23,18);
circle(tucha2+36+36+36,23,18);

if tucha1=1 then way1:=2
else if tucha1=500 then way1:=1;
if tucha2=1 then way2:=2
else if tucha2=500 then way2:=1;
if way1=2 then tucha1:=tucha1+1 else tucha1:=tucha1-1;
if way2=2 then tucha2:=tucha2+1 else tucha2:=tucha2-1;

setcolor(lightgray);
circle(tucha1,23,17);
circle(tucha1+36,23,17);
circle(tucha1+36+36,23,17);
circle(tucha1+36+36+36,23,17);

circle(tucha2,23,17);
circle(tucha2+36,23,17);
circle(tucha2+36+36,23,17);
circle(tucha2+36+36+36,23,17);
until keypressed;
end;


А другая дождь:
procedure InitDrop(x1,y1: integer);
begin
putpixel(x1,y1+40,cyan);
end;

procedure KillDrop(x1,y1: integer);
begin
putpixel(x1,y1+39,black);
end;

procedure rain(power: real);
var parameters: array [1..1000,1..2] of integer;
i: integer;
j: word;
temp: real;

procedure fill;
begin
end;
begin
temp:=power;
for i:=1 to trunc(power) do
begin
xd:=random(50)+250;
parameters[i,1]:=xd;
yd:=random(480);
parameters[i,2]:=yd;
end;

for j:=1 to 65280 do
begin
temp:=temp-c;
power:=temp;
KillDrop(parameters[trunc(power+1),1],parameters[trunc(power+1),2]+j);
for i:=1 to trunc(power) do
begin
InitDrop(parameters[i,1],parameters[i,2]+j);
delay(1);
KillDrop(parameters[i,1],parameters[i,2]+j);
fill;
if parameters[i,2]+j = 480 then parameters[i,2]:=1-j;
end;
end;
end;
Помогите пожалуйста доработать. Уже две недели мучаюсь ничего не получается. Спасибо!
lastbronetrain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Модуль Graph Викдон Паскаль, Turbo Pascal, PascalABC.NET 6 12.11.2008 10:54
модуль Graph odi_noki Паскаль, Turbo Pascal, PascalABC.NET 2 25.09.2008 12:20
Модуль Graph ShnapS Паскаль, Turbo Pascal, PascalABC.NET 6 28.05.2008 00:44
Модуль Graph LEX.darnica Помощь студентам 13 27.11.2007 19:15