Помощь - Поиск - Пользователи - Календарь
Полная версия: Простая задача
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Almaz
Вообщем задача состоит в следующем по условию дано:
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
там заданы грудусы-можно делать и не по градусам а по координатам.Буду очень признателе если поможете-так как я в паскале не оч и с графикой никогда в нем на работал(((Зареннее благодарюНажмите для просмотра прикрепленного файла
Archon
Главное - расчитать точки.
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.
Навороты можно убрать.
Almaz
ОГромное спасибо!!!!!!Ты даже не представляешь как выручил!!!дай бог тебе здоровья)) good.gif good.gif good.gif осталось только навороты убрать))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.