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

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

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

Автор: trew 26.11.2008 16:35

помогите переделать написану мной программу. чтобы я мог ввести радиус и 5угольник менялся с нем

program z2;
uses crt, graph;
var dr,mode,i,n,r:integer;
begin
randomize;
dr:=detect; mode:=0;
initgraph(dr,mode,'c:\tp\bgi');
circle(300,240,50);
moveto(300,190);
lineto(350,230);
lineto(225,283);
lineto(275,283);
lineto(250,230);
lineto(300,190);
r:=0;
n:=2;
for i:=0 to 70 do
begin
delay(45000);
if i=r then
if n=1 then begin
cleardevice;
circle(300,240,50);
setfillstyle(1,random(r+1));
floodfill(290,192,white);
moveto(300,190);
lineto(350,230);
lineto(325,283);
lineto(275,283);
lineto(250,230);
lineto(300,190);
setfillstyle(1,random®);
floodfill(300,240,white);
n:=2;r:=r+10;
end
else
if n=2 then begin
cleardevice;
circle(300,240,50);
setfillstyle(1,random®);
floodfill(290,192,white);
moveto(300,290);
lineto(255,260);
lineto(270,200);
lineto(330,200);
lineto(345,260);
lineto(300,290);
setfillstyle(1,random®);
floodfill(300,240,white);
n:=1;
r:=r+10;
end;
end;
readln;
closegraph;
end.

.




Автор: Ozzя 26.11.2008 17:11

Цитата
5угольник менялся с нем

менялся с кем? и Как менялся?

Автор: trew 26.11.2008 17:56

десь в задаче радиус не надо вводить. а надо сделать чтобы мог. когда введу то 5угольник тоже должен изменится

Автор: volvo 26.11.2008 19:55

Если б ты еще задание привел, то было бы вообще прекрасно... Тебе что, надо в разноцветном круге крутить разноцветный пятиугольник? Тогда смотри в сторону DrawPoly/FillPoly, и не надо жестко задавать точки, достаточно их высчитывать перед отрисовкой. Вот набросок, добавишь закрашивание круга:

program z2;

uses crt, graph;

const
points = 5;
var
T: pointtype;
pts: array[1 .. points + 1] of pointtype;
centerx, centery, C, i, j, R: integer;
angle, start_angle: real;

gd, gm: integer;

begin
r := 100; { <--- Можешь и вводить }

randomize;
gd := detect;
initgraph(gd, gm, '');

centerx := getmaxx div 2; centery := getmaxy div 2;

for i := 1 to 5 do begin
cleardevice;
setcolor(white);
circle(centerx, centery, R);
{ <--- Здесь надо закрасить круг нужным цветом }

if odd(i) then start_angle := 54 else start_angle := 18;
for j := 1 to points do begin
angle := (start_angle + pred(j) * (360 div points)) * (Pi / 180);
pts[j].X := centerx + trunc(R * cos(angle));
pts[j].Y := centery + trunc(R * sin(angle));
end;
pts[points + 1] := pts[1];

C := random(16);
setfillstyle(solidfill, C);
fillpoly(points + 1, pts);

delay(1000);
end;
readln;
closegraph;
end.
(проверялось в Турбо Паскале. В 32-битных работает не совсем корректно, так что просьба обладателей FPC сразу не кидаться камнями, этот код - именно для Турбо)

Автор: trew 1.12.2008 23:06

почемуто не крутит и вообще просто круг рисует

Автор: volvo 1.12.2008 23:12

Я не знаю, почему у тебя не крутит, и рисует только круг. У меня отрабатывает как я написал. Попробуй увеличить задержку (до 25000, скажем), может ты просто не видишь процесса вращения. Но пятиугольник обязан был отрисоваться в любом случае.

Автор: trew 8.12.2008 0:47

не рисует

Автор: Lapp 8.12.2008 15:18

Цитата(trew @ 7.12.2008 20:47) *
не рисует
В следующем посте, по-видимому, будет просто "не" smile.gif

trew, ты давай немного больше информации по проблеме, если хочешь получить ответ. Мне кажется, это в твоих интересах. И так народ в этой теме гадает, что тебе нужно, по твоим крайне невразумительным фразам..