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

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

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

> Простая задача, Графика
Almaz
сообщение 2.07.2009 16:37
Сообщение #1





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

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


Вообщем задача состоит в следующем по условию дано:
uses graph;
var
grDriver:integer;
grMode:integer;
ErrCode:integer;
res:integer;
begin
grDriver:=detect;
Initgraph(grDriver, grMode,'С:tp\bgi');
ErrCode:=Graphresult;
if ErrCode=grOk then
begin
{основные действия}
end;
CloseGraph;
end.

Необходимо нарисовать пятиконечную звезду-такая как была у красной армии-что-тотипо такого smile.gif
там заданы грудусы-можно делать и не по градусам а по координатам.Буду очень признателе если поможете-так как я в паскале не оч и с графикой никогда в нем на работал(((Зареннее благодарюПрикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
Archon
сообщение 2.07.2009 17:53
Сообщение #2


Профи
****

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

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


Главное - расчитать точки.
program SovietStar;

uses
crt, graph;

procedure DrawStar(x, y, InnerRadius, OuterRadius: Integer);
var
Points: array[0..9] of PointType;
i: Integer;
begin
{ Вычисление координат внешних вершин звезды: }
for i := 0 to 4 do begin
Points[i * 2].x := Round(Sin(Pi * 0.4*i) * InnerRadius) + x;
Points[i * 2].y := Round(Cos(Pi * 0.4*i) * InnerRadius) + y;
end;
{ Вычисление координат внутренних вершин звезды: }
for i := 0 to 4 do begin
Points[i * 2 + 1].x := Round(Sin(Pi * (0.4*i + 0.2)) * OuterRadius) + x;
Points[i * 2 + 1].y := Round(Cos(Pi * (0.4*i + 0.2)) * OuterRadius) + y;
end;
{ Рисуем звезду: }
SetColor(Red);
for i := 0 to 9 do
Line(Points[i].x, Points[i].y, Points[(i+1) mod 10].x, Points[(i+1) mod 10].y);
{ Навороты: }
for i := 0 to 9 do
Line(x, y, Points[i].x, Points[i].y);
SetFillStyle(SolidFill, Red);
for i := 0 to 4 do begin
FloodFill(Round(Sin(Pi * (0.4*i + 0.1)) * InnerRadius / 2) + x,
Round(Cos(Pi * (0.4*i + 0.1)) * InnerRadius / 2) + y, Red);
end;
SetFillStyle(SolidFill, LightRed);
for i := 0 to 4 do begin
FloodFill(Round(Sin(Pi * (0.4*i + 0.3)) * InnerRadius / 2) + x,
Round(Cos(Pi * (0.4*i + 0.3)) * InnerRadius / 2) + y, Red);
end;
end;

var
gd, gm: Integer;
begin
gd := Detect;
InitGraph(gd, gm, '');

DrawStar(GetMaxX div 2, GetMaxY div 2, GetMaxY div 5, GetMaxY div 2 - 20);

ReadKey;
CloseGraph;
end.
Навороты можно убрать.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Almaz
сообщение 2.07.2009 18:01
Сообщение #3





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

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


ОГромное спасибо!!!!!!Ты даже не представляешь как выручил!!!дай бог тебе здоровья)) good.gif good.gif good.gif осталось только навороты убрать))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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