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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2013, 16:34   #1
Nickolay0512
Пользователь
 
Регистрация: 26.10.2013
Сообщений: 54
По умолчанию Анимация. Программа должна рисовать снеговика и снежинки на фоне окна. (Pascal ABC)

Программа должна рисовать снеговика и снежинки на фоне окна. Но снежинки закрашивают снеговика. Помогите сделать так, чтобы снеговик был на фоне падающих снежинок.
Текст моей программы:
Код:
uses crt,graphABC;
Var gd,gm:integer; x,y:array[1..500] of integer;
    i,j,k,n:integer;
begin
randomize;
   clrscr;
{рисуем снеговика}
clearwindow(clblue);
circle (270,330,90);
circle (270,180,60);
circle (270,90,30);
Line (217,150,150,210);
Line (150,390,150,30);
Line (150,90,120,30);
Line (150,90,180,30);
Line (150,90,135,30);
Line (150,90,165,30);
Line (322,150,390,210);
Line (270,95,270,105);
Circle (255,85,7);
Circle (285,85,7);
{рисуем снежинки}
hidecursor;
setpencolor(clWhite);
setbrushcolor(clWhite);
for i:=1 to 500 do
 begin
  x[i]:=random(windowwidth);
  y[i]:=random(windowheight);
  circle(x[i],y[i],2);
 end;
k:=0;n:=0;
repeat
k:=k+1;
delay(100);
setpencolor(clwhite);
setbrushcolor(clwhite);
for i:=1 to 500 do
circle(x[i],y[i],2);
for i:=1 to 500 do
 begin
  if y[i]>windowheight-n-10 then y[i]:=1
  else y[i]:=y[i]+3;
  if x[i]<0 then x[i]:=windowwidth
  else x[i]:=x[i]-1;
 end;
setpencolor(clWhite);
setbrushcolor(clWhite);
for i:=1 to 500 do
circle(x[i],y[i],2);
if k mod 20=0 then
 begin
  n:=n+1;
  line(0,windowheight-n,windowwidth,windowheight-n);
 end;
until keypressed;
end.

Последний раз редактировалось Stilet; 08.12.2013 в 17:09.
Nickolay0512 вне форума Ответить с цитированием
Старый 08.12.2013, 22:36   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Можно перерисовывать снеговика (медленно)
Можно копировать его образ в память и затем восстанавливать.
Чтобы избежать мерцания, используйте redraw
Пример есть в help. Называется блокировка рисования и анимациябез мерцания
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 21.05.2014, 17:23   #3
Кирилл Журавский
Новичок
Джуниор
 
Регистрация: 21.05.2014
Сообщений: 1
По умолчанию

сделай снеговика разрушителем с помощью модуля ABCObjects
Кирилл Журавский вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация pascal abc Blatota Фриланс 14 05.11.2022 10:28
Pascal ABC (анимация) Richo Помощь студентам 3 13.07.2012 07:37
Анимация - движение стрелы на фоне рисунка Nastepka Помощь студентам 2 01.07.2012 11:33
Программа должна оставить всего две строки! [Pascal ABC] Mirt Помощь студентам 1 07.12.2010 08:00
Как работать с TCanvas - на PaintBox1 программа должна рисовать полигон Михаил Юрьевич Общие вопросы Delphi 16 04.01.2008 15:31