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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2015, 18:49   #1
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
Лампочка Анимация в Pascal ABC - закат солнца. (Очень нужна помощь, доделать программу)

Помогите, пожалуйста, доделать программу. программу взяла отсюда же, немного доработала, но дальше не получается. Солнце опускается вниз(перерисовка) и останавливается посередине. Дальше нужно копированием сделать так, чтобы оно шло вправо до конца. Буду очень благодарна, так как нет возможности сейчас самой долго разбираться.
Вот код:
Код:
program abc;
 
uses
  graphABC,PointRect;
 
var
  y, x1, y1 , pic, i, j, k: integer;
  re:Rect;
 
begin
  setwindowsize(900, 600);
 
  lockdrawing;
  y1 := 0;
  x1 := 450;
  for i := 1 to 25 do
 
 
  begin
    clearwindow;
    if y1 >= 400 then
    begin
      setpencolor(clBlack);
      setbrushcolor(clBlack);
      rectangle(0, 0, 900, 200);
      setpencolor(clBlack);
      setbrushcolor(clBlack);
      rectangle(0, 200, 900, 400);
    end else
    if y1 >= 300 then
    begin
      setpencolor(rgb(39, 33, 61));
      setbrushcolor(rgb(39, 33, 61));
      rectangle(0, 0, 900, 200);
      setpencolor(rgb(39, 33, 61));
      setbrushcolor(rgb(39, 33, 61));
      rectangle(0, 200, 900, 400);
    end else
    if y1 >= 200 then
    begin
      setpencolor(rgb(48, 43, 98));
      setbrushcolor(rgb(48, 43, 98));
      rectangle(0, 0, 900, 200);
      setpencolor(rgb(48, 43, 98));
      setbrushcolor(rgb(48, 43, 98));
      rectangle(0, 200, 900, 400);
    end else
    if y1 >= 100 then
    begin
      setpencolor(rgb(57, 49, 133));
      setbrushcolor(rgb(57, 49, 133));
      rectangle(0, 0, 900, 200);
      setpencolor(rgb(57, 49, 133));
      setbrushcolor(rgb(57, 49, 133));
      rectangle(0, 200, 900, 400);
    end else
    begin
      setpencolor(clAqua);
      setbrushcolor(clAqua);
      rectangle(0, 0, 900, 200);
      setpencolor(clAqua);
      setbrushcolor(clAqua);
      rectangle(0, 200, 900, 400);
    end;
    setpencolor(clyellow);
    setbrushcolor(clyellow);
    y1 := y1 + 8;
    circle(x1, y1, 50);
 
    setpencolor(clTeal);
    setbrushcolor(clTeal);
    rectangle(0, 400, 900, 600);
 
    if y1 <= 450 then
    begin
      y := 420; k := 20;
      for j := 1 to 15 do
      begin
        setpencolor(clYellow);
        setbrushcolor(Random(16777215));                       ;
        Ellipse(440 - k, y, 465 + k, y + 10);
        y := y + 20;
        if j mod 2 = 0 then k := k - 5 else
          k := k + random(20);
        sleep(20);
      end;
    end else
    begin
      setpencolor(clTeal);
      setbrushcolor(clTeal);
      rectangle(0, 400, 900, 600);
    end;
    sleep(10);
    redraw;
  end;
 
end.
Господин Никто вне форума Ответить с цитированием
Старый 27.05.2015, 22:06   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Дальше нужно копированием сделать так, чтобы оно шло вправо до конца.
поясните, что означает "копированием"?
и объясните - когда оно должно двигаться вправо? (дошло сверху вниз до середины, потом начало строго по горизонтали двигаться вправо до правой границы экрана?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.05.2015, 23:31   #3
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию

ну, как я понимаю, это вот такой функцией:

pic:=createPictureFromRect(re);
for i:=0 to 120 do
begin
DrawPicture(pic, i, 105);
sleep(1);
end;
end;


да, именно так. до середины экрана(это уже сделано), а потом строго вправо до правой границы. преподаватель вот так придумал)
паскаль знаю плохо, сколько ни пробовала-не выходит.
Господин Никто вне форума Ответить с цитированием
Старый 28.05.2015, 11:01   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Господин Никто, а Вы знаете, что солнышко останавливается не потому, что так задумано в программе, а из-за ошибки.
кто-то, видимо, правил код, но не очень удачно.

исправьте строчку:
Цитата:
Код:
 x1 := 450;
  for i := 1 to 25 do
на
Код:
  x1 := 450;
  for i := 1 to 60 do
увидите код так, как его задумывал программист изначально.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.05.2015, 11:20   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а вот и код для движения вправо:

Код:
    redraw;
  end;


  re.Left := x1 - 55;
  re.Top := y1 - 55;
  re.Right := x1 + 55;
  re.Bottom := y1 + 55;

  pic:=createPictureFromRect(re);
  i:=0;
  while i<=(900+50-x1) do
  begin
      DrawPicture(pic, i+x1-50, y1-50);
      redraw;
      sleep(40);
      i:=i+5
  end;

end.
сереньким выделил те операторы, которые у Вас уже есть.
Код вставляете перед финальным END. программы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.05.2015, 13:11   #6
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию

спасибо вам большое! вы меня очень выручили)
а код правила я,пыталась что-то сделать))
держите виртуальную шоколадку)
Господин Никто вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь с задачами! (Pascal ABC) Александр_ТГМТ Помощь студентам 4 02.12.2014 17:33
Доделать программу. Графика / Pascal ABC Nickolay0512 Паскаль, Turbo Pascal, PascalABC.NET 0 14.05.2014 13:39
Помогите написать программу в C++.Очень нужна помощь!!! Edvanton Помощь студентам 0 06.01.2014 16:23
Очень нужна таблица кодов символов/кнопок в Pascal ABC (псевдографика) CnpuHTep Помощь студентам 30 15.05.2012 23:20
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24