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

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

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

 
 Ответить  Открыть новую тему 
> Анимация(((, наверняка одминам это как 2 пальца об асфальт))
yakudza_m
сообщение 17.01.2009 0:02
Сообщение #1


Новичок
*

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

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


доброго времени суток!!
привет вам из далекой (или не далекой) Беларуси!
у меня проблема: нужно написать на зачет по информатике 2 графические задачи((((

помогите чем сможете...

1. сектор вращается против часовой стрелки и меняет цвета (7 цветов). внутренний угол 30 градусов

2. фигура, состоящая из 2-х кругов с диаметрами D=40 и d=18, движется по горизонтальной поверхности длиной L=180. При достижении стенок на концах поверхности направление движения фигуры меняется...

помогите пожалуйста, не то у меня отберут стипендию(((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 17.01.2009 7:23
Сообщение #2


Гуру
*****

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

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


1. вращение диска - похожая задача.

2. Супер бильярд - похожая задача.

Сообщение отредактировано: Ozzя - 17.01.2009 7:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
yakudza_m
сообщение 17.01.2009 15:56
Сообщение #3


Новичок
*

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

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


круто!!

а как сделать так чтоб сектор менял цвет??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.01.2009 16:47
Сообщение #4


Гость






Цитата
а как сделать так чтоб сектор менял цвет??
Когда-то я делал программу "Поле чудес", так вот чуть-чуть подкорректированный код вращения барабана. По-моему, то, что тебе нужно...
uses crt,graph;

var
gm, gd, x, y: Integer;
ac: ArcCoordsType;

const
numSectors = 12;
EverySector = 360 div numSectors;

Colors: array[1 .. numSectors] of integer =
(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

var
pass, p, T: Integer;

begin
gd := Detect;
InitGraph(gd, gm, '');
if GraphResult <> grOk then begin
WriteLn('Error'); Halt(100)
end;

x := 200; y := 200;
Ellipse(x, y, 0, 360, 103, 103);

repeat

for p := 1 to numSectors do begin
SetColor(DarkGray);
Ellipse(x, y,
Pred(p) * EverySector, p * EverySector, 100, 100);

GetArcCoords(ac);
with ac do begin
Line(x, y, xStart, yStart);
Line(x, y, xEnd, yEnd);

SetFillStyle(SolidFill, colors[p]);

if colors[p] > 0 then begin
inc(colors[p]); if colors[p] > LightGray then colors[p] := 1;
end;

FloodFill( (xStart+xEnd) div 2,
(yStart+yEnd) div 2, DarkGray);
end;
end;
T := colors[numSectors];
move(colors[1], colors[2], pred(numSectors)*sizeof(integer));
Colors[1] := T;

delay(25000);

until keypressed;

ReadLn;
CloseGraph
end.
 К началу страницы 
+ Ответить 
yakudza_m
сообщение 17.01.2009 17:35
Сообщение #5


Новичок
*

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

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


клёво!!
но у меня почему-то рисует только 1 сектор синим, а остальные чёрным...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.01.2009 18:21
Сообщение #6


Гость






Цитата
у меня почему-то рисует только 1 сектор синим, а остальные чёрным...
И что потом происходит? Должно начаться вращение цветного сектора с одновременной сменой его цвета. Я проверял у себя, все нормально работает. Чем компилируешь, уточни. Это будет работать только с использованием Турбо Паскаля.
 К началу страницы 
+ Ответить 
yakudza_m
сообщение 17.01.2009 19:49
Сообщение #7


Новичок
*

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

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


у меня Free Pascal IDE ...я посмотрел, всё работает, но только оч медленно...как бы мне поменять время задержки???

я еще посмотрел у вас на форуме прогу для любого графика, и хочу спросить, где бы мне вставить функцию SETLINESTYLE и чтоб на картинке были видны координаты на осях?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 17.01.2009 23:11
Сообщение #8


поиск
****

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

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


delay(время в милисекундах);
1000 = 1 сек


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.01.2009 23:13
Сообщение #9


Гость






Цитата
у меня Free Pascal IDE
Ах, вот оно что... В FreePascal-е очень медленная реализация FloodFill, это не дает программе выполняться так же быстро, как в Турбо Паскале. Все, что могу предложить - это вот такой вот трюк:
uses crt,graph;

var
gm, gd, x, y: Integer;
ac: ArcCoordsType;

const
numSectors = 12;
EverySector = 360 div numSectors;

Colors: array[1 .. numSectors] of integer =
(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

var
pass, p, T: Integer;

begin
gd := d4bit; // уменьшаем число цветов
gm := m640x480; // и размер до обычных размеров VGA

InitGraph(gd, gm, '');
if GraphResult <> grOk then begin
WriteLn('Error'); Halt(100)
end;

x := 200; y := 200;
repeat
setfillstyle(solidfill, black); // затираем прежнее изображение
bar(x - 100, y - 100, x + 100, y + 100);

SetColor(White);
Ellipse(x, y, 0, 360, 103, 103);

for p := 1 to numSectors do begin
SetColor(DarkGray);
Ellipse(x, y,
Pred(p) * EverySector, p * EverySector, 100, 100);

GetArcCoords(ac);
with ac do begin
Line(x, y, xStart, yStart);
Line(x, y, xEnd, yEnd);

if colors[p] > 0 then begin
SetFillStyle(SolidFill, colors[p]); // и рисуем новый цветной сектор
inc(colors[p]); if colors[p] > LightGray then colors[p] := 1;
FloodFill( (xStart+xEnd) div 2,
(yStart+yEnd) div 2, DarkGray);
end;
end;
delay(50);
end;
T := colors[numSectors];
move(colors[1], colors[2], pred(numSectors)*sizeof(integer));
Colors[1] := T;

delay(15);

until keypressed;

ReadLn;
CloseGraph
end.
За счет того, что FloodFill вызывается один раз вместо 12-ти, получается 12-ти кратное ускорение. Но все равно, видно процесс заливки...
 К началу страницы 
+ Ответить 
yakudza_m
сообщение 18.01.2009 0:13
Сообщение #10


Новичок
*

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

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


аааааа, жжош, вольво!!!! СПАСИБО БОЛЬШОЕ!!!

прога как ломанулась!!!

а у тя есть какие-нибудь советы по поводу второй проги??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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