private void ChessBoard_ChessBoardClicked(object sender, EventArgs e) { ChessBoardClickedEventArgs args = (ChessBoardClickedEventArgs)e; Position position = args.Position; // Jeżeli nic nie zaznaczone to wybieramy bierke do zaznaczenia if (Dragged == null) { if (BlackPieces.Exists(p => p.Position.Equals(position))) { Dragged = BlackPieces.Find(p => p.Position.Equals(position)); } else if (WhitePieces.Exists(p => p.Position.Equals(position))) { Dragged = WhitePieces.Find(p => p.Position.Equals(position)); } } // Wykonanie ruchu else { try { // Sprawdzenie czy mozna wykonac ruch if (Dragged.Color == PieceColor.White) { if (!Dragged.AllowMove(position, WhitePieces, BlackPieces)) { return; } } else { if (!Dragged.AllowMove(position, BlackPieces, WhitePieces)) { return; } } if (BlackPieces.Exists(p => p.Position.Equals(position))) { BlackPieces.Remove(BlackPieces.Find(p => p.Position.Equals(position))); WhitePieces.Remove(WhitePieces.Find(p => p.Position.Equals(Dragged.Position))); Dragged.Position = position; WhitePieces.Add(Dragged); } else if (WhitePieces.Exists(p => p.Position.Equals(position))) { BlackPieces.Remove(BlackPieces.Find(p => p.Position.Equals(Dragged.Position))); WhitePieces.Remove(WhitePieces.Find(p => p.Position.Equals(position))); Dragged.Position = position; BlackPieces.Add(Dragged); } else { if (Dragged.Color == Models.PieceColor.White) { WhitePieces.Find(x => x.Position.Equals(Dragged.Position)).Position = position; } else { BlackPieces.Find(x => x.Position.Equals(Dragged.Position)).Position = position; } } } finally { ChessBoard.GenerateBoardPieces(WhitePieces, BlackPieces); Dragged = null; } } }