Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Графика

Автор: Kaliban 20.05.2007 20:37

Народ, помогите с графикой.
Задание такое:

Подготовив несколько заготовок полотнища флага, добиться эффекта его движения (флаг реет). Цвет флага изменять. Задействовать модуль 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.

Автор: мисс_граффити 20.05.2007 20:44

посмотри здесь:
http://www.sources.ru/pascal/demo/sinmap.htm

оно?

Автор: Kaliban 20.05.2007 23:07

походу оно, только всеравно не получается это у себя сделать...

Автор: Kaliban 21.05.2007 0:45

там формулы есть нужные, но юзать надо именно те операторы что в конце кода закомментены.

Автор: Kaliban 24.05.2007 0:24

как сделать так, чтобы цвет менялся рандомно не только при старте проги, но во время движения?

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я 24.05.2007 9:49

Твоим способом - никак.