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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 09:04   #1
mistertvister
Константин
Пользователь
 
Аватар для mistertvister
 
Регистрация: 11.10.2009
Сообщений: 47
Счастье Паскаль

Напишите программу "дождь"-на экране появляеться (случайным образом)
появляеться 50 точек и они движуться сверху вниз. В тот момент, когда одна из точек достигает нижней границы экрана, точка появляеться в верхней части.


Покажите алгоритм пожалуйста.
mistertvister вне форума Ответить с цитированием
Старый 29.11.2009, 09:11   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
В тот момент, когда одна из точек достигает нижней границы экрана, точка появляеться в верхней части.
вот и алгоритм
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 29.11.2009, 09:16   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

mistertvister, алгоритм, говорите...
я бы завёл массивчик на 50 элементов. в нём хранил координаты капелек (x,y).
при запуске заполняем его случайным образом.
вывел эти капельки на экран
каждый цикл обработки стираем капельку, наращиваем вертикальную координату, проверяем, не достигли ли нижней границы, если достигли - формируем новую координату сверху (x - случайное), если нижней границы не достигли - рисуем капельку по полученным новым координатам. примерно так:
Код:
var Arr: array[1..50] of TDrop;
...
  for i:=1 to 50 do begin 
     стереть_каплю_(Arr[i]);
     Arr[i].y := Arr[i].y + 1; {шаг движения капли может быть и больше единицы}
     if  Arr[i].y>= НижняяГраница then GenerateNewDrop(Arr[i]);
     ОтобразитьКаплю(Arr[i])
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.11.2009, 09:22   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

ну вот вам алгоритм для одной капельки
Цитата:
1. Рисуешь точку: PutPixel(x, y, c); c - это цвет, от 0 до 15.
2. Сохраняешь где-нибудь координаты (x_old := x, y_old := y)
3.1 х= х - step*tan (PI *АЛЬФА / 180)
3.2 y=y+step, если угол АЛЬФА <90 градусов, y=y-step если угол АЛЬФА > 90 градусов
3.3 учтите, что если угол АЛЬФА > 90 градусов, то тангенс будет отрицательным и капли будут падать вверх
4. Рисуешь новую точку с новыми x, y.
5. Предыдущую точку перерисовываешь цветом фона: PutPixel(x_old, y_old, 0);
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, Борланд Паскаль-в чем разница??? Vremya-Dengy Паскаль, Turbo Pascal, PascalABC.NET 13 31.05.2011 18:23
паскаль PR0Z0N Помощь студентам 3 04.06.2009 23:19
Паскаль Freia Помощь студентам 7 12.01.2009 20:42
Паскаль Jondeer Помощь студентам 8 29.10.2007 19:38