Exemplo n.º 1
0
        public bool CheckDirections(Piece piecetocheck)
        {
            piecetocheck.Jumps.Clear();
            piecetocheck.Moves.Clear();
            if (piecetocheck.Color == 'R' || piecetocheck.Type == 'K')
            {
                foreach (int[] jump in JumpDirections)
                {
                    try
                    {
                        if (piecetocheck.Compare(GameBoard[jump[0] + piecetocheck.Row, jump[1] + piecetocheck.ColInt], piecetocheck))
                        {
                            if (GameBoard[2 * jump[0] + piecetocheck.Row, 2 * jump[1] + piecetocheck.ColInt] == null)
                            {
                                GameBoard[piecetocheck.Row, piecetocheck.ColInt].Jumps.Add
                                    (new int[] { 2 * jump[0] + piecetocheck.Row, 2 * jump[1] + piecetocheck.ColInt });
                                return(true);
                            }
                        }
                    }
                    catch (IndexOutOfRangeException)
                    {
                    }

                    try
                    {
                        if (GameBoard[jump[0] + piecetocheck.Row, jump[1] + piecetocheck.ColInt] == null)
                        {
                            GameBoard[piecetocheck.Row, piecetocheck.ColInt].Moves.Add
                                (new int[] { jump[0] + piecetocheck.Row, jump[1] + piecetocheck.ColInt });
                        }
                    }
                    catch (IndexOutOfRangeException)
                    {
                    }
                }
            }

            if (piecetocheck.Color == 'B' || piecetocheck.Type == 'K')
            {
                foreach (int[] jump in JumpDirections)
                {
                    try
                    {
                        if (piecetocheck.Compare(GameBoard[-1 * jump[0] + piecetocheck.Row, jump[1] + piecetocheck.ColInt], piecetocheck))
                        {
                            if (GameBoard[-2 * jump[0] + piecetocheck.Row, 2 * jump[1] + piecetocheck.ColInt] == null)
                            {
                                GameBoard[piecetocheck.Row, piecetocheck.ColInt].Jumps.Add
                                    (new int[] { -2 * jump[0] + piecetocheck.Row, 2 * jump[1] + piecetocheck.ColInt });
                                return(true);
                            }
                        }
                    }
                    catch (IndexOutOfRangeException)
                    {
                    }

                    try
                    {
                        if (GameBoard[-1 * jump[0] + piecetocheck.Row, jump[1] + piecetocheck.ColInt] == null)
                        {
                            GameBoard[piecetocheck.Row, piecetocheck.ColInt].Moves.Add
                                (new int[] { -1 * jump[0] + piecetocheck.Row, jump[1] + piecetocheck.ColInt });
                        }
                    }
                    catch (IndexOutOfRangeException)
                    {
                    }
                }
            }
            return(false);
        }