;: = False;. Refresh; (Sender, Shift, X, Y);;// Хід зроблений - перемкнутися гравця;;
End
Else Begin// Є можливість рубки - обов'язково!
TryMakeStrike (xP, yP);; (Moves); (Strikes); (Strickens); Begin// Шашка не все ще обрана;; TfmCheckers. TrySelectNewDraught (x, y: Integer);, Strikes, Strickens: TList;: TList; vcbChess. Board. GetDraught (x, y) = nil Then Exit; vcbChess. Board. GetDraught (x, y). Side <> PlayerSide Then Exit;
// Перевіримо обов'язкові рубки
StrikingDraughts: = vcbChess. Board. FindStrikingDraughts (PlayerSide); StrikingDraughts. Count> 0 ThenCheckPosition (x, y, StrikingDraughts) <0 Then (StrikingDraughts);;;; (StrikingDraughts);. X: = x;. Y: = y;: = True;
// Отрісуем можливі ходи з урахуванням зобов'язалівки рубки
vcbChess. Board. FindMoves (x, y, Moves, Strikes, Strickens); Strikes. Count = 0 Then. DrawMoves (Moves, nil). DrawMoves (nil, Strikes); (Moves); (Strikes); (Strickens);; TfmCheckers. TryMakeStrike (x, y: Integer);, Strikes, Strickens: TList;: PCellPosition; Not (IsDraughtChosen) Then Exit;. Board. FindMoves (DraughtPosition.X, DraughtPosition.Y, Moves, Strikes, Strickens);
// Чи можлива рубка в дану клітинку
If CheckPosition (x, y, Strikes)> = 0 Then// Рубка вірна! // Рубаємо
// Визначимо зрубану шашку
CP: = Strickens. Items [CheckPosition (x, y, Strikes)];. Board. DeleteDraught (CP ^. X, CP ^. Y);
// перескакувати. Board. MoveDraught (DraughtPosition.X, DraughtPosition.Y, x, y);. X: = x; DraughtPosition.Y: = y; (Moves); (Strikes); (Strickens);
// Визначимо: чи можливо продовження рубки
vcbChess. Board. FindMoves (DraughtPosition.X, DraughtPosition.Y, Moves, Strikes, Strickens); Strikes. Count> 0 Then: = True;// Встановимо режим рубкіBegin: = False;;// Закінчена рубка - перемкнемо гравця
End;
ClearMoves (Moves); (Strikes); (Strickens);. Refresh;; StrikeMode Then: = False; (DraughtPosition.X, DraughtPosition.Y);;;; TfmCheckers. SwitchCurrentPlayer; CurrentPlayer = sdWhite Then CurrentPlayer: = sdBlack Else CurrentPlayer: = sdWhite; LocalGame Then PlayerSide: = CurrentPlayer; CurrentPlayer = sdWhite Then stCurrentPlayer. Caption: = 'Білі' Else stCurrentPlayer. Caption: = 'Чорні'; PlayerSide = CurrentPlayer Then. Enabled: = True; Begin. Enabled: = False;;; TfmCheckers. CheckForWin: Integer;: = -1;
// Перевіримо перемогу за срубамvcbChess. Board. CountDraughts (sdWhite) = 0 Then: = sdBlack;; vcbChess. Board. CountDraughts (sdBlack) = 0 Then: = sdWhite;;
// Перевіримо перемогу за блокуванням
If Not ...