Simba Code:
Function FCSS( CT: TPointArray; CutOff, Rad: Integer; SP, EP: Tpoint; T: Boolean): TPointArray;
Var
TPA: TPointArray;
ATPA: T2DPointArray;
Begin
TPA := HDYS( CT, SP, EP, T);
If Length( TPA) < 1 Then
Exit;
ATPA := TPAToATPA( TPA, Rad);
SortATPASize( ATPA, True);
If CutOff > 0 Then
SetArrayLength( ATPA, CutOff);
Result := ATPAToTPA( ATPA);
End;
Var
LD: Boolean;
Function WZNI: Integer;
Begin
If Length( HDYS( DeAuth( 1), Point( MSX1, MSY1), Point( MSX2, 35), True)) > 260 Then
Result := 1;
If Length( HDYS( DeAuth( 1), Point( 415, 30), Point( 500, 90), True)) > 200 Then
Begin
If Length( HDYS( DeAuth( 5), Point( MMX1, MMY1), Point( MMX2, MMY2), True)) < 1500 Then
Result := 2
Else
Result := 3;
End;
End;
Function DN: TPoint;
Begin
Result := PtToCoord( PolToPt( 90, 5, False, Point( MiddleTPA( FCSS( DeAuth( 2), 0, 5, CSP, CEP, False)).X, MiddleTPA( FCSS( DeAuth( 9), 0, 5, CSP, CEP, False)).Y)), MMCC);
Writeln( CoordToStr( Result));
End;
Function DZNI: TPoint;
Label
Retry,
JDQ;
Var
SC: TPoint;
TTPA: TPointArray;
Begin
If Not WZNI = 1 Then
Exit;
Retry:
Flag;
TTPA := FCSS( DeAuth( 2), 0, 5, CSP, CEP, False);
If LD Then
SC := Point( 215, 0 - Random( 30))
Else
SC := Point( 135, 5 + Random( 30));
SortTPAEx( TTPA, PolToPt( SC.X, 75, False, MMCC));
Result:= PolToPt( 90, SC.Y, False, TTPA[ 0]);
If PtToHyp( Result, MMCC) < 20 Then
GOTO JDQ;
MMM( ToMM( PolToPt( 0, RandomRange( -5, 5), False, PolToPt( 90, SC.Y, False, TTPA[ 0]))), 1);
Case Random( 2) of
0: Wait( PtToHyp( Result, MMCC) * Random( 50));
End;
Case Random( 2) Of
0: MakeCompass( PtToPol( 0, False, Result, MMCC));
End;
//Case Random( 2) of
// 0: Wait( PtToHyp( Result, MMCC) * Random( 20));
//End;
GOTO Retry;
JDQ:
Exit;
End;