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

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

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

 
 Ответить  Открыть новую тему 
> Рисую флаг Китая, проблема с процедурой, отзовитесь
Mambakremen
сообщение 21.05.2011 14:52
Сообщение #1


Новичок
*

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

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


Флаг Китая
Изображение

Вот написал программу, появляется звезда на красном фоне чуть кривовато что-то с углом надо порешать, а маленькие звездочки вокруг большой звезды нужно строить процедурой, только никак не могу понять как сделать такую процедуру... Я нуб в этом деле, прошу помощи

Program China;
uses crt,graph;
const
n=10;
r1=40;
r2=15;
alfa=2*pi/n;
type
point=record
x,y:integer;
end;
var p:array[1..n] of point;
i:byte;
x0,y0,r:integer;
dr,md:integer;
begin
dr:=detect;
initgraph(dr,md,'c:\tp\bgi');
setbkcolor(white);
setviewport(100,100,100,100,clipoff);
setfillstyle(1,red);
bar(0,0,450,250);
x0:=80;
y0:=80;
for i:=1 to n do begin
if i mod 2 = 0 then r:=r2 else r:=r1;
p[i].x:=x0+round(r*cos((i-1)*alfa));
p[i].y:=y0+round(r*sin((i-1)*alfa));
end;
moveto(p[n].x,p[n].y);
for i:=1 to n do lineto(p[i].x,p[i].y);
setfillstyle(1,white);
floodfill(x0,y0,white);
readkey;
closegraph;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 21.05.2011 16:22
Сообщение #2


a.k.a. volvo877
*****

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

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


Как-то вот так:
procedure draw_star (px, py : integer;
angle, radius : integer);
const
size = 10;
var
pts : array[1 .. size] of PointType;
i : integer;
R : double;
begin
for i := 1 to 10 do
begin
if odd (i) then
R := Radius
else
R := Radius / 2.5;

// оптимизировать ничего не стал, чтоб было понятно, откуда что берется...
pts[i].X := px + trunc(R * cos((2*pi/10)*pred(i)+(angle*pi/180)));
pts[i].Y := py - trunc(R * sin((2*pi/10)*pred(i)+(angle*pi/180)));
end;
setfillstyle(solidfill, yellow);
fillpoly(size, pts);
end;


// Основная программа выглядит:
setfillstyle (solidfill, red);
bar (0, 0, 450, 250);
draw_star (80, 80, 18, R1);

draw_star (140, 45, -5, R2);
draw_star (160, 75, -2, R2);
draw_star (160, 105, +2, R2);
draw_star (140, 135, +5, R2);
Обязательно разберись с алгоритмом рисования звезды...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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