Мужики, выручайте! Не до конца понимаю, как написать программу правильно. Нужно крутить вокруг центра окружности линию с помощью курсора.
Вот код
Uses Graph,Crt;
Const
Left=#75 ; Right=#77 ; Up=#72 ; Down=#80 ;
Var GD,GM: Integer;
Function Quoter(x,y: Integer): Integer;
Begin
If x<320 Then
If y<240 Then Quoter:=1
Else If y>240 Then Quoter:=3
Else Quoter:=-1
Else If y<240 Then Quoter:=2
Else If y>240 Then Quoter:=4
Else Quoter:=-3 ;
If x=320 Then If y<240 Then Quoter:=-2 Else Quoter:=-4 ;
End ;
Procedure DrawHunter;
Var x0,y0,x1,y1,r:Integer; c: Char; t: Real;
Begin
x0:=320 ; y0:=240 ;
x1:=520 ; y1:=240 ;
r:=200 ; t:=0 ;
Circle(x0,y0,200 );
Repeat
c:=ReadKey;
If c=#0 Then c:=ReadKey;
Case c Of
#27 :;
Up: Begin
SetColor(0 );
Line(x0,y0,x1,y1);
Case Quoter(x1,y1) Of
1 : Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
2 : Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
3 : Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
4 : Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
-1 :Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
-2 :;
-3 :Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
-4 :Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
End ;
t:=t-0 .01 ;
End ;
Down: Begin
SetColor(0 );
Line(x0,y0,x1,y1);
Case Quoter(x1,y1) Of
1 : Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
2 : Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
3 : Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
4 : Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
-1 :Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
-2 :Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
-3 :Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
-4 :;
End ;
t:=t-0 .01
End ;
Left: Begin
SetColor(0 );
Line(x0,y0,x1,y1);
Case Quoter(x1,y1) Of
1 : Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
2 : Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
3 : Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
4 : Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
-1 :;
-2 :Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
-3 :Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
-4 :Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
End ;
t:=t-0 .01
End ;
Right: Begin
SetColor(0 );
Line(x0,y0,x1,y1);
Case Quoter(x1,y1) Of
1 : Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
2 : Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
3 : Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
4 : Begin x1:=Round(x0-r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
-1 :Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
-2 :Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0+r*Sin(t)); End ;
-3 :;
-4 :Begin x1:=Round(x0+r*Cos(t)); y1:=Round(y0-r*Sin(t)); End ;
End ;
t:=t-0 .01
End ;
End ;
SetColor(White);
Line(x0,y0,x1,y1);
SetColor(Blue);
SetFillStyle(1 ,Blue);
PieSlice(320 ,240 ,0 ,360 ,10 );
SetColor(Green);
SetFillStyle(1 ,Green);
PieSlice(320 ,240 ,0 ,360 ,6 );
Until c=#27 ;
End ;
Begin
GD:=Detect;
InitGraph(GD,GM,'' );
DrawHunter;
End .
Получается бред.. Линия крутится как хочет=( Ошибка в использовании t?