Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите с графикой
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Buka
Надо представить в виде мультфильма картину медленного захода солнца за линию горизонта с изменением освещения пейзажа.
есть текст как солнце заходит:
program fgh;
uses crt,graph;
var GrDr,GrMd,i,g,j:integer;  f:word;
const
cga=1;
begin
grdr:=detect;
initgraph(grdr,grmd,'c:\pascal\bgi');
setcolor(2);
   line(0,400,getmaxX ,400);
   g:=getbkcolor;
      i:=50;j:=50;
   while i<700 do
   begin
      setcolor(yellow);
      setfillstyle(1,yellow);
      fillellipse(i,j,40,40);
      delay(2000);
      setcolor(g);
      setfillstyle(1,g);
      fillellipse(i,j,40,40);
      i:=i+random(3);
      j:=j+random(2);
      end;

closegraph;
end.
readln;


а вот с фоном проблемы((

Тегами пользуйся в следующий раз (выделяешь код, и выбираешь в листбоксе CODE нужный язык программирования)
volvo
Цитата
есть текст как солнце заходит:
Ну, во-первых, оно ни разу не "заходит", а просто пересекает линию "горизонта". Чтоб заходило - надо сделать Вьюпорт без отображения графики за его границами, тогда солнце будет именно заходить, т.е., исчезать за линией горизонта...

Во-вторых: по какому признаку ты хочешь менять освещение? В зависимости от высоты солнца? А как должно меняться освещение? Может, просто менять цвет фона (скажем, когда солнце в зените - фон светло-синий, когда посередине между зенитом и горизонтом - фон просто синий, и когда солнце уже касается горизонта - фон становится черным)? Пойдет тебе такое? Если да, расскажу, как реализуется smile.gif
Lapp
Цитата(Buka @ 1.06.2009 19:15) *

Надо представить в виде мультфильма картину медленного захода солнца за линию горизонта с изменением освещения пейзажа.
...
а вот с фоном проблемы((
Стоп. А какой, собственно, пейзаж? "Бабы с граблями рядами ходят, сено шевелят"? Или "двух озер лазурные равнины, где парус рыбаря белеет иногда, за ними ряд холмов и нивы полсаты, вдали рассыпанные хаты, на влажных береагх бродящие стада.." Что ты имеешь в виду? Ты уж скажи поточнее, а то тебе нарисуют баб, а ты скажешь - хочу стада.. Или ваще Бэтмана, летящего на крыльях ночи.. Пейзажей же много бывает! Понимаешь мою идею?

Или я что-то упускаю?.. blink.gif
Buka
надо только чтоб цвет фона менялся smile.gif

Добавлено через 19 мин.
Цитата(volvo @ 1.06.2009 21:36) *

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

Во-вторых: по какому признаку ты хочешь менять освещение? В зависимости от высоты солнца? А как должно меняться освещение? Может, просто менять цвет фона (скажем, когда солнце в зените - фон светло-синий, когда посередине между зенитом и горизонтом - фон просто синий, и когда солнце уже касается горизонта - фон становится черным)? Пойдет тебе такое? Если да, расскажу, как реализуется smile.gif


Да да, так мне и надо))
volvo
Ну, тогда что-то в этом роде:
uses crt, graph;

var
  gd, gm: integer;
  x, y: integer;

begin
  initgraph(gd, gm, '');
  if graphresult <> grok then begin
    writeln('graphics error'); readln; halt(100);
  end;

  setcolor(green);
  line(0, getmaxy div 2 + 1, getmaxx, getmaxy div 2 + 1);
  setviewport(0, 0, getmaxx, getmaxy div 2, true);
  y := 0;
  while y < getmaxy div 2 do
  begin
    case y div (getmaxy div 6) of
      0: setbkcolor(lightblue);
      1: setbkcolor(blue);
      2: setbkcolor(black);
    end;
    clearviewport;

    setcolor(yellow);
    setfillstyle(solidfill, yellow);
    fillellipse(x, y, 40, 40);
    delay(30);
    y:=y+random(3);
    x:=x+random(2);
  end;
  readln;
end.
В FPC отработало, для Турбо-Паскаля могут быть 2 проблемы: 1) слишком маленькая задержка в Delay, поменяй на то, что больше подходит. 2) смена цвета фона будет распространяться на весь экран, а не только на Вьюпорт... Попробуй, если что не так - говори, будем думать, как исправлять, вместе smile.gif
Buka
Спасибо smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.