Форум «Всё о Паскале» _ Задачи _ Помогите с графикой
Автор: Buka 1.06.2009 22:15
Надо представить в виде мультфильма картину медленного захода солнца за линию горизонта с изменением освещения пейзажа. есть текст как солнце заходит:
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 1.06.2009 22:36
Цитата
есть текст как солнце заходит:
Ну, во-первых, оно ни разу не "заходит", а просто пересекает линию "горизонта". Чтоб заходило - надо сделать Вьюпорт без отображения графики за его границами, тогда солнце будет именно заходить, т.е., исчезать за линией горизонта...
Во-вторых: по какому признаку ты хочешь менять освещение? В зависимости от высоты солнца? А как должно меняться освещение? Может, просто менять цвет фона (скажем, когда солнце в зените - фон светло-синий, когда посередине между зенитом и горизонтом - фон просто синий, и когда солнце уже касается горизонта - фон становится черным)? Пойдет тебе такое? Если да, расскажу, как реализуется
Автор: Lapp 1.06.2009 22:40
Цитата(Buka @ 1.06.2009 19:15)
Надо представить в виде мультфильма картину медленного захода солнца за линию горизонта с изменением освещения пейзажа. ... а вот с фоном проблемы((
Стоп. А какой, собственно, пейзаж? "Бабы с граблями рядами ходят, сено шевелят"? Или "двух озер лазурные равнины, где парус рыбаря белеет иногда, за ними ряд холмов и нивы полсаты, вдали рассыпанные хаты, на влажных береагх бродящие стада.." Что ты имеешь в виду? Ты уж скажи поточнее, а то тебе нарисуют баб, а ты скажешь - хочу стада.. Или ваще Бэтмана, летящего на крыльях ночи.. Пейзажей же много бывает! Понимаешь мою идею?
Или я что-то упускаю?..
Автор: Buka 1.06.2009 22:55
надо только чтоб цвет фона менялся
Добавлено через 19 мин.
Цитата(volvo @ 1.06.2009 21:36)
Ну, во-первых, оно ни разу не "заходит", а просто пересекает линию "горизонта". Чтоб заходило - надо сделать Вьюпорт без отображения графики за его границами, тогда солнце будет именно заходить, т.е., исчезать за линией горизонта...
Во-вторых: по какому признаку ты хочешь менять освещение? В зависимости от высоты солнца? А как должно меняться освещение? Может, просто менять цвет фона (скажем, когда солнце в зените - фон светло-синий, когда посередине между зенитом и горизонтом - фон просто синий, и когда солнце уже касается горизонта - фон становится черным)? Пойдет тебе такое? Если да, расскажу, как реализуется
Да да, так мне и надо))
Автор: volvo 2.06.2009 0:17
Ну, тогда что-то в этом роде:
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;
В FPC отработало, для Турбо-Паскаля могут быть 2 проблемы: 1) слишком маленькая задержка в Delay, поменяй на то, что больше подходит. 2) смена цвета фона будет распространяться на весь экран, а не только на Вьюпорт... Попробуй, если что не так - говори, будем думать, как исправлять, вместе