Помощь - Поиск - Пользователи - Календарь
Полная версия: Графика
Форум «Всё о Паскале» > 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©; 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я
Твоим способом - никак.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.