IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Графика, эффект развевающегося флага
Kaliban
сообщение 20.05.2007 16:37
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


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

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


Сообщение отредактировано: Kaliban - 20.05.2007 16:38
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 20.05.2007 16:44
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


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

оно?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kaliban
сообщение 20.05.2007 19:07
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


походу оно, только всеравно не получается это у себя сделать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kaliban
сообщение 20.05.2007 20:45
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


там формулы есть нужные, но юзать надо именно те операторы что в конце кода закомментены.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kaliban
сообщение 23.05.2007 20:24
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


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

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 24.05.2007 5:49
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Твоим способом - никак.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 13:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"