hen (P); ^. X: = x + dX * dL; P ^. Y: = y + dY * dL ;. Add (P); Cells [y, x]. Draught. Kind = kdSimple Then MoveOver: = True;// Якщо це проста шашка, то закінчимо хід
Else// Шашка не може ходити в цьому напрямку - закінчимо хід
MoveOver: = True;
End
Else Begin// Якщо в клітці стоїть шашка, то перевіримо її
If Cells [y + dY * dL, x + dX * dL]. Draught. Side <> Cells [y, x]. Draught. Side Then// Якщо це чужа шашка, то перевіримо на зруб
Inc (dL);// переступимо через шашку
If ((Cells [y + dY * dL, x + dX * dL]. CellType <> ctNone) And (Cells [y + dY * dL, x + dX * dL]. Draught = nil)) Then// Чи можна вставати на цю клітку
Begin// Рубка вдалася
// Запам'ятаємо зрубану шашку
New (P); ^. X: = x + dX * (dL-1); P ^. Y: = y + dY * (dL-1);. Add (P);
// Запишемо рубку (P); ^. X: = x + dX * dL; P ^. Y: = y + dY * dL;. Add (P);;;: = True; ;//Досягнуто бордюр - завершимо хід: = True; MoveOver;;; TChessBoard. FindStrikingDraughts (Side: Integer): TList;, y: Integer;, Strikes, Strickens: TList;: PCellPosition;: = TList. Create; y: = 1 To 8 Dox: = 1 To 8 DoGetDraught (x, y) <> nil ThenGetDraught (x, y). Side = Side Then (x, y, Moves, Strikes, Strickens); Strikes. Count> 0 Then (CP); ^. X: = x; CP ^. Y: = y;. Add (CP);; (Moves); (Strikes); (Strickens);;; TChessBoard. CountDraughts (Side: Integer): Integer;, y: Integer;: = 0; y: = 1 To 8 Dox: = 1 To 8 DoGetDraught (x, y) <> nil ThenGetDraught (x, y). Side = Side Then Inc (Result);; TChessBoard. AbleToMove (Side: Integer): Boolean;, y: Integer;, Strikes, Strickens: TList;: = False; y: = 1 To 8 Dox: = 1 To 8 DoGetDraught (x, y) <> nil ThenGetDraught ( x, y). Side = Side Then (x, y, Moves, Strikes, Strickens); ((Moves. Count> 0) Or (Strikes. Count> 0)) Then Result: = True; (Moves); (Strikes ); (Strickens); Result Then Exit;;;. VChessBoard;, Classes, ExtCtrls,; = Class (TImage) DrawDraught (x, y: Integer; Side: Integer; Kind: Integer); DrawMove (x, y: Integer ); DrawStrike (x, y: Integer);: TChessBoard; Create (AOwner: TComponent); Override; Destroy; Override; Repaint; Override; GetCellRectByNumber (x, y: Integer): TRect; GetCellNumberByCoord (xCoord, yCoord: Integer; Var x, y: Integer); DrawMoves (Const Moves, Strikes: TList); DrawMovesByNumber (x, y: Integer);;; TVisualChessBoard. Create (AOwner: TComponent); Create (AOwner);: = TChessBoard. Create;
// Repaint;; TVisualChessBoard. Destroy;. Free; Destroy;; TVisualChessBoard. Repaint;, y: Integer; Repaint;
{Намалюємо клітини}. Brush. Style: = bsSolid; y: = 1 To 8 Dox: = 1 To 8 Do ((Odd (x) And Odd (y)) Or (Not (Odd (x)) And Not (Odd (y)))) Then . Brush. Color: = clBlack. Brush. Color: = clWhite;. FillRect (GetCellRec...