Помощь - Поиск - Пользователи - Календарь
Полная версия: Графика
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Kaliban
Народ, помогите с графикой.
Задание такое:

Подготовив несколько заготовок полотнища флага, добиться эффекта его движения (флаг реет). Цвет флага изменять. Задействовать модуль graph.

Нужно все обязательно сделать с помощью модуля.
С самим флагом и заменой цвета проблем не возникло.
Нужно добиться движения, используя sinx и cosx плюс (предположительно) операторы, которые закомментены в конце.

код прилагается
program gr;
uses graph,crt;

var
x,y,c,mo,dr: integer;
begin
dr:= detect;
initgraph(dr,mo,'');

 randomize;
 setbkcolor(black);
 setfillstyle(1,white);
 rectangle(220,170,450,220);
 bar(220,170,450,220);

 setbkcolor(black);
 setfillstyle(1,blue);
 rectangle(220,220,450,270);
 bar(220,220,450,270);

 setbkcolor(black);
 setfillstyle(1,red);
 rectangle(220,270,450,320);
 bar(220,270,450,320);

 readln;
 repeat;
 x:=random(getmaxcolor)+10;
 setcolor(x); setfillstyle(1,x);
 rectangle(220,170,450,220);
 bar(220,170,450,220);
 delay(65000);delay(65000);delay(65000);delay(65000);

 y:=random(getmaxcolor)+10;
 setcolor(y); setfillstyle(1,y);
 rectangle(220,220,450,270);
 bar(220,220,450,270);
 delay(65000);delay(65000);delay(65000);delay(65000);

 c:=random(getmaxcolor)+10;
 setcolor(c); setfillstyle(1,c);
 rectangle(220,270,450,320);
 bar(220,270,450,320);
 delay(65000);delay(65000);delay(65000);delay(65000);

until keypressed;

cleardevice;

{ b:=imagesize(); getmem(); getimage();

cleardevice;

begin
 putimage();
 inc();
 end;   }

readln;
end.
мисс_граффити
посмотри здесь:
http://www.sources.ru/pascal/demo/sinmap.htm

оно?
Kaliban
походу оно, только всеравно не получается это у себя сделать...
Kaliban
там формулы есть нужные, но юзать надо именно те операторы что в конце кода закомментены.
Kaliban
как сделать так, чтобы цвет менялся рандомно не только при старте проги, но во время движения?

program gr;
uses graph,crt;
var
x,y,c,j,i,mo,dr,size: integer;
p,p1: pointer;

begin
dr:= detect;
initgraph(dr,mo,'');

repeat;
randomize;
readln;
x:=random(getmaxcolor)+15;
setcolor(x); setfillstyle(1,x);
delay(65000);delay(65000);delay(65000);

for j:=0 to 100 do begin
 x:=250;y:=303;
for i:=0 to 1 do begin
     Arc(x, j+150, 45, 135, 40);
     Arc(y, j+90, 225, 315, 40);
    x:=x+106;
    y:=y+106;
end;
end;

Size := ImageSize(221, 100, 439, 250);
GetMem(P, Size);
GetImage(221, 100, 439, 250, P^);
ClearDevice;
   for j:=0 to 100 do begin
    x:=250;y:=303;
    for i:=0 to 1 do begin
    Arc(y, j+150, 45, 135, 40);
    Arc(x, j+90, 224, 315, 40);
    x:=x+106;
    y:=y+106;
   end;
   end;
   Size := ImageSize(221, 100, 439, 250);
   GetMem(P1, Size);
   GetImage(221, 100, 439, 250, P1^);
   ClearDevice;
  while not keypressed do begin
  PutImage(221, 100, P^, XorPut);
  delay(65000);
  PutImage(221, 100, P^, XorPut);
  PutImage(221, 100, P1^, XorPut);
  delay(65000);
  PutImage(221, 100, P1^, XorPut);
end;

CloseGraph;
until keypressed;

readln;
end.
Ozzя
Твоим способом - никак.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.