Водород писал(а):Не знаю но всё равно спосибо но в нашей школле мы и подавно такого не изучали если я это вставлю в своё проект то меня сразу впалят((((Алексей а ты можешь написать что то полегче на уровне 10 класса))))
Простите, Водород, а что конкретно Вы не изучали?
1. DrawPoly? Ну, как говорится: "Читающий Хелпы, да прочтёт!"

. Однако если по каким-либо (видимо, религиозным) причинам Вам запрещают ЭТО использовать, то приведу реализацию из ФПС:
- Код: Выделить всё
procedure DrawPoly(numpoints : word;var polypoints);
type
ppointtype = ^pointtype; // зачем здесь вот это не знаю. Видимо, великое колдунство.
pt = array[0..16000] of pointtype;
var
i : longint;
begin
if numpoints < 2 then
begin
_GraphResult := grError;
exit;
end;
for i:=0 to numpoints-2 do
line(pt(polypoints)[i].x,
pt(polypoints)[i].y,
pt(polypoints)[i+1].x,
pt(polypoints)[i+1].y);
end;
2. Прикол вида:
- Код: Выделить всё
type
pt = array[0..16000] of pointtype;
...
pt(polypoints)[i].x...
- называется, ЕМНИП, "приведение типов". Суть прикола: программист говорит машине "А знаешь, этот PolyPoints на самом деле длиннюююююююющий массив с координатами вершин. Да, не похож... А ты поверь!". После чего тупой компьютер начинает обращаться с этим PolyPoints как с массивом. Все бурно радуются. Пока не происходит выход за границы диапазона. Но это уже совсем другая история.
3. Наконец, "афинское преобразование" на плоскости. В школе, вроде, действительно не проходят. Однако, человеком, знакомым с тригонометрией, выводится легко.
4. Если же у Вас стрелка хранится в памяти как картинка, то посмотрите в примерах по Лазарусу, как советует Виталити.
Если хотите, вот черной вариант:
- Код: Выделить всё
Program fdgfaf;
uses graph, crt, SysUtils;
var
c : char;
T : TSystemTime;
gd, gm, r, x, y,i,j : integer;
H, PrH, PrM, PrS : integer;
MinutA, SecundA, HourA, Arrow: array [0..4] of pointtype;
const
Grd : double=pi/180;
Procedure RotateAround(x,y:integer; angle:real; NumPoints:integer; var PolyPoints, OutPoints);
type
pt = array[0..16000] of PointType;
var
i:integer;
tx, ty:integer;
sn, cs:real;
begin
if NumPoints<2 then exit;
sn:=sin(angle*Grd);
cs:=cos(angle*Grd);
for i:=0 to NumPoints-1 do begin
tx:=pt(PolyPoints)[i].x-x;
ty:=pt(PolyPoints)[i].y-y;
pt(OutPoints)[i].x:=x+round(tx*cs-ty*sn);
pt(OutPoints)[i].y:=y+round(tx*sn+ty*cs);
end;
end;
BEGIN
// описываем стрелки
SecundA[0].X:=300;
SecundA[0].Y:=250;
SecundA[1].X:=300;
SecundA[1].Y:=95;
SecundA[2].X:=305;
SecundA[2].Y:=120;
SecundA[4].X:=295;
SecundA[4].Y:=120;
SecundA[3].X:=300;
SecundA[3].Y:=95;
MinutA[0].X:=300;
MinutA[0].Y:=250;
MinutA[1].X:=300;
MinutA[1].Y:=95+20;
MinutA[2].X:=305;
MinutA[2].Y:=120+20;
MinutA[4].X:=295;
MinutA[4].Y:=120+20;
MinutA[3].X:=300;
MinutA[3].Y:=95+20;
HourA[0].X:=300;
HourA[0].Y:=250;
HourA[1].X:=300;
HourA[1].Y:=95+40;
HourA[2].X:=305;
HourA[2].Y:=120+40;
HourA[3].X:=295;
HourA[3].Y:=120+40;
HourA[4].X:=300;
HourA[4].Y:=95+40;
gd:=vga;
gm:=2;
InitGraph(gd,gm,'');
r:=174;
SetColor(15);
SetFillStyle(1,12);
Circle(300,250,200);
Circle(300,250,180);
FloodFill(110,250,15);
SetColor(15);
SetFillStyle(1,10);
Circle(300,250,174);
FloodFill(126,250,15);
SetColor(15);
SetFillStyle(1,15);
FloodFill(299,249,15);
SetFillStyle(1,12);
Bar(150,247,170,253);
Bar(435,247,455,253);
Bar(297,389,303,409);
Bar(297,95,303,115);
GetLocalTime(T);
PrS:=T.Second;
PrM:=T.Minute;
PrH:=T.Hour;
SetColor(1);
RotateAround(300,250,30*T.Hour,5, HourA, Arrow);
DrawPoly(5, Arrow);
SetColor(2);
RotateAround(300,250,6*T.Minute,5, MinutA, Arrow);
DrawPoly(5, Arrow);
SetColor(3);
RotateAround(300,250,6*T.Second,5, SecundA, Arrow);
DrawPoly(5, Arrow);
//SetWriteMode(XorPut);
repeat
GetLocalTime(T); //Љ®¬ ¤ бзЁвлў Ґв ўаҐ¬п б Є®¬ЇмвҐа .
if PrS<>T.Second
then
begin
// SetColor(0);
SetFillStyle(1,15);
Bar(345,240,400,255);
SetfillStyle(1,12);
// OutTextXY(350,247,Format('%.2d.%.2d.%.4d',[T.Day, T.Month, T.Year]));
SetFillStyle(1,15);
Bar(265,365,370,390);
SetFillStyle(1,12);
SetColor(0);
// OutTextXY(270,370,Format('%.2d:%.2d:%.2d',[T.Hour, T.Minute, T.Second]));
SetColor(15);
RotateAround(300,250,30*PrH,5,HourA,Arrow);
DrawPoly(5, Arrow);
RotateAround(300,250,6*PrM,5,MinutA,Arrow);
DrawPoly(5, Arrow);
RotateAround(300,250,6*PrS,5,SecundA,Arrow);
DrawPoly(5, Arrow);
SetColor(0);
OutTextXY(350,247,Format('%.2d.%.2d.%.4d',[T.Day, T.Month, T.Year]));
OutTextXY(270,370,Format('%.2d:%.2d:%.2d',[T.Hour, T.Minute, T.Second]));
Bar(297,95,303,115);
Bar(435,247,455,253);
Bar(297,389,303,409);
Bar(150,247,170,253);
SetColor(1);
if T.Hour<>PrH then PrH:=T.Hour;
RotateAround(300,250,30*PrH,5, HourA,Arrow);
DrawPoly(5, Arrow);
SetColor(2);
if T.Minute<>PrM then PrM:=T.Minute;
RotateAround(300,250,6*PrM,5, MinutA,Arrow);
DrawPoly(5, Arrow);
SetColor(3);
PrS:=T.Second;
RotateAround(300,250,6*PrS,5, SecundA,Arrow);
DrawPoly(5, Arrow);
end;
if keypressed
then c:=readkey;
until c=#27;
ReadLn;
CloseGraph;
END.