![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
yakudza_m |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
доброго времени суток!!
привет вам из далекой (или не далекой) Беларуси! у меня проблема: нужно написать на зачет по информатике 2 графические задачи(((( помогите чем сможете... 1. сектор вращается против часовой стрелки и меняет цвета (7 цветов). внутренний угол 30 градусов 2. фигура, состоящая из 2-х кругов с диаметрами D=40 и d=18, движется по горизонтальной поверхности длиной L=180. При достижении стенок на концах поверхности направление движения фигуры меняется... помогите пожалуйста, не то у меня отберут стипендию((( |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
1. вращение диска - похожая задача.
2. Супер бильярд - похожая задача. Сообщение отредактировано: Ozzя - |
yakudza_m |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
круто!!
а как сделать так чтоб сектор менял цвет?? |
volvo |
![]()
Сообщение
#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 |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
клёво!!
но у меня почему-то рисует только 1 сектор синим, а остальные чёрным... |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата у меня почему-то рисует только 1 сектор синим, а остальные чёрным... И что потом происходит? Должно начаться вращение цветного сектора с одновременной сменой его цвета. Я проверял у себя, все нормально работает. Чем компилируешь, уточни. Это будет работать только с использованием Турбо Паскаля. |
yakudza_m |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
у меня Free Pascal IDE ...я посмотрел, всё работает, но только оч медленно...как бы мне поменять время задержки???
я еще посмотрел у вас на форуме прогу для любого графика, и хочу спросить, где бы мне вставить функцию SETLINESTYLE и чтоб на картинке были видны координаты на осях? |
renesko1 |
![]()
Сообщение
#8
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 347 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
delay(время в милисекундах);
1000 = 1 сек -------------------- typedef void Śūnyatā ;
|
volvo |
![]()
Сообщение
#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 |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
аааааа, жжош, вольво!!!! СПАСИБО БОЛЬШОЕ!!!
прога как ломанулась!!! а у тя есть какие-нибудь советы по поводу второй проги?? |
![]() ![]() |
![]() |
Текстовая версия | 21.04.2025 3:47 |