Exemplo n.º 1
0
        private void CheckForCheckMate()
        {
            for (int i = 0; i < kingPieces.Length; i++)
            {
                if (kingPieces[i].OnWhiteTeam != isWhitesTurn)
                {
                    List <Point> movementAreas    = kingPieces[i].Piece_Clicked();
                    Point        originalLocation = new Point(kingPieces[i].Row, kingPieces[i].Column);
                    //int moveCounter = 0;
                    bool inCheck = false;

                    if (isWhitesTurn)
                    {
                        for (int j = 0; j < whitePieces.Length; j++)
                        {
                            if (!inCheck)
                            {
                                List <Point> pieceMoves = whitePieces[j].Piece_Clicked();
                                foreach (Point value in pieceMoves)
                                {
                                    Point arrayLocation = Piece.ConvertMovesToLocations(value, new Point(whitePieces[i].X, whitePieces[i].Y));
                                    if (arrayLocation == new Point(kingPieces[i].Row, kingPieces[i].Column))
                                    {
                                        inCheck = true;
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                    else
                    {
                        for (int j = 0; j < blackPieces.Length; j++)
                        {
                            if (!inCheck)
                            {
                                List <Point> pieceMoves = blackPieces[j].Piece_Clicked();
                                foreach (Point value in pieceMoves)
                                {
                                    Point arrayLocation = Piece.ConvertMovesToLocations(value, new Point(blackPieces[i].X, blackPieces[i].Y));
                                    if (arrayLocation == new Point(kingPieces[i].Row, kingPieces[i].Column))
                                    {
                                        inCheck = true;
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                break;
                            }
                        }
                    }

                    //if (inCheck)
                    //{
                    //    foreach (Point move in movementAreas)
                    //    {
                    //        // Changes the piece's location temporarily to add to the possible moves
                    //        tiles[kingPieces[i].Row, kingPieces[i].Column].PieceOnTile = null;
                    //        kingPieces[i].X += move.X;
                    //        kingPieces[i].Y += move.Y;
                    //        tiles[kingPieces[i].Row, kingPieces[i].Column].PieceOnTile = kingPieces[i];

                    //        if (isWhitesTurn)
                    //        {
                    //            for (int j = 0; j < whitePieces.Length; j++)
                    //            {
                    //                List<Point> pieceMoves = whitePieces[j].Piece_Clicked();
                    //                foreach (Point value in pieceMoves)
                    //                {
                    //                    if (value == move)
                    //                    {
                    //                        ++moveCounter;
                    //                        break;
                    //                    }
                    //                }
                    //            }
                    //        }

                    //        // Sets the pieces location back to it's original location
                    //        tiles[kingPieces[i].Row, kingPieces[i].Column].PieceOnTile = null;
                    //        kingPieces[i].Row = originalLocation.X;
                    //        kingPieces[i].Column = originalLocation.Y;
                    //        tiles[kingPieces[i].Row, kingPieces[i].Column].PieceOnTile = kingPieces[i];
                    //    }
                    //}
                }
            }
        }