示例#1
0
        /// <summary>
        /// Checks if a jump is safe
        /// </summary>
        /// <param name="oldcol"></param>
        /// <param name="oldrow"></param>
        /// <param name="type"></param>
        /// <param name="mode"></param>
        /// <returns></returns>
        public bool CheckingJumps(int oldcol, int oldrow, SquareValues type, CheckNo mode)
        {
            switch (mode)
            {
            case CheckNo.RightUp:
                try
                {
                    a = Board.Squares[oldcol + 2, oldrow - 2];
                    b = Board.Squares[oldcol + 1, oldrow - 1];
                    Board.Squares[oldcol + 2, oldrow - 2] = type;
                    Board.Squares[oldcol + 1, oldrow - 1] = SquareValues.Empty;
                    if (!Board.CanBeJumped(oldcol + 2, oldrow - 2) || Board.CanJump(type, oldcol + 2, oldrow - 2) != 0)
                    {
                        Board.Squares[oldcol + 2, oldrow - 2] = a;
                        Board.Squares[oldcol + 1, oldrow - 1] = b;
                        return(true);
                    }
                    else
                    {
                        Board.Squares[oldcol + 2, oldrow - 2] = a;
                        Board.Squares[oldcol + 1, oldrow - 1] = b;
                        return(false);
                    }
                }
                catch (Exception)
                {
                    try
                    {
                        Board.Squares[oldcol + 2, oldrow - 2] = a;
                        Board.Squares[oldcol + 1, oldrow - 1] = b;
                        return(false);
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }

            case CheckNo.LeftUp:
                try
                {
                    a = Board.Squares[oldcol - 2, oldrow - 2];
                    b = Board.Squares[oldcol - 1, oldrow - 1];
                    Board.Squares[oldcol - 2, oldrow - 2] = type;
                    Board.Squares[oldcol - 1, oldrow - 1] = SquareValues.Empty;
                    if (!Board.CanBeJumped(oldcol - 2, oldrow - 2) || Board.CanJump(type, oldcol - 2, oldrow - 2) != 0)
                    {
                        Board.Squares[oldcol - 2, oldrow - 2] = a;
                        Board.Squares[oldcol - 1, oldrow - 1] = b;
                        return(true);
                    }
                    else
                    {
                        Board.Squares[oldcol - 2, oldrow - 2] = a;
                        Board.Squares[oldcol - 1, oldrow - 1] = b;
                        return(false);
                    }
                }
                catch (Exception)
                {
                    try
                    {
                        Board.Squares[oldcol - 2, oldrow - 2] = a;
                        Board.Squares[oldcol - 1, oldrow - 1] = b;
                        return(false);
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }

            case CheckNo.RightDown:
                try
                {
                    a = Board.Squares[oldcol + 2, oldrow + 2];
                    b = Board.Squares[oldcol + 1, oldrow + 1];
                    Board.Squares[oldcol + 2, oldrow + 2] = type;
                    Board.Squares[oldcol + 1, oldrow + 1] = SquareValues.Empty;
                    if (!Board.CanBeJumped(oldcol + 2, oldrow + 2) || Board.CanJump(type, oldcol + 2, oldrow + 2) != 0)
                    {
                        Board.Squares[oldcol + 2, oldrow + 2] = a;
                        Board.Squares[oldcol + 1, oldrow + 1] = b;
                        return(true);
                    }
                    else
                    {
                        Board.Squares[oldcol + 2, oldrow + 2] = a;
                        Board.Squares[oldcol + 1, oldrow + 1] = b;
                        return(false);
                    }
                }
                catch (Exception)
                {
                    try
                    {
                        Board.Squares[oldcol + 2, oldrow + 2] = a;
                        Board.Squares[oldcol + 1, oldrow + 1] = b;
                        return(false);
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }

            case CheckNo.LeftDown:
                try
                {
                    a = Board.Squares[oldcol - 2, oldrow + 2];
                    b = Board.Squares[oldcol - 1, oldrow + 1];
                    Board.Squares[oldcol - 2, oldrow + 2] = type;
                    Board.Squares[oldcol - 1, oldrow + 1] = SquareValues.Empty;
                    if (!Board.CanBeJumped(oldcol - 2, oldrow + 2) || Board.CanJump(type, oldcol - 2, oldrow + 2) != 0)
                    {
                        Board.Squares[oldcol - 2, oldrow + 2] = a;
                        Board.Squares[oldcol - 1, oldrow + 1] = b;
                        return(true);;
                    }
                    else
                    {
                        Board.Squares[oldcol - 2, oldrow + 2] = a;
                        Board.Squares[oldcol - 1, oldrow + 1] = b;
                        return(false);
                    }
                }
                catch (Exception)
                {
                    try
                    {
                        Board.Squares[oldcol - 2, oldrow + 2] = a;
                        Board.Squares[oldcol - 1, oldrow + 1] = b;
                        return(false);
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }

            default:
                return(false);
            }
        }
示例#2
0
        /// <summary>
        /// Checks if a jump is safe
        /// </summary>
        /// <param name="oldcol"></param>
        /// <param name="oldrow"></param>
        /// <param name="mode"></param>
        private void CheckingJumps(int oldcol, int oldrow, SquareValues type, CheckNo mode)
        {
            switch (mode)
            {
            case CheckNo.RightUp:
                try
                {
                    a = Board.Squares[oldcol + 2, oldrow - 2];
                    b = Board.Squares[oldcol + 1, oldrow - 1];
                    Board.Squares[oldcol + 2, oldrow - 2] = type;
                    Board.Squares[oldcol + 1, oldrow - 1] = SquareValues.Empty;
                    if (!Board.CanBeJumped(oldcol + 2, oldrow - 2) || Board.CanJump(type, oldcol + 2, oldrow - 2) != 0)
                    {
                        Board.Squares[oldcol + 2, oldrow - 2] = a;
                        Board.Squares[oldcol + 1, oldrow - 1] = b;
                        Jumper(oldcol, oldrow);
                    }
                    else
                    {
                        Board.Squares[oldcol + 2, oldrow - 2] = a;
                        Board.Squares[oldcol + 1, oldrow - 1] = b;
                    }
                }
                catch (Exception)
                {
                    try
                    {
                        Board.Squares[oldcol + 2, oldrow - 2] = a;
                        Board.Squares[oldcol + 1, oldrow - 1] = b;
                    }
                    catch (Exception)
                    {
                        return;
                    }
                    return;
                }

                break;

            case CheckNo.LeftUp:
                try
                {
                    a = Board.Squares[oldcol - 2, oldrow - 2];
                    b = Board.Squares[oldcol - 1, oldrow - 1];
                    Board.Squares[oldcol - 2, oldrow - 2] = type;
                    Board.Squares[oldcol - 1, oldrow - 1] = SquareValues.Empty;
                    if (!Board.CanBeJumped(oldcol - 2, oldrow - 2) || Board.CanJump(type, oldcol - 2, oldrow - 2) != 0)
                    {
                        Board.Squares[oldcol - 2, oldrow - 2] = a;
                        Board.Squares[oldcol - 1, oldrow - 1] = b;
                        Jumper(oldcol, oldrow);
                    }
                    else
                    {
                        Board.Squares[oldcol - 2, oldrow - 2] = a;
                        Board.Squares[oldcol - 1, oldrow - 1] = b;
                    }
                }
                catch (Exception)
                {
                    try
                    {
                        Board.Squares[oldcol - 2, oldrow - 2] = a;
                        Board.Squares[oldcol - 1, oldrow - 1] = b;
                    }
                    catch (Exception)
                    {
                        return;
                    }
                    return;
                }

                break;

            case CheckNo.RightDown:
                try
                {
                    a = Board.Squares[oldcol + 2, oldrow + 2];
                    b = Board.Squares[oldcol + 1, oldrow + 1];
                    Board.Squares[oldcol + 2, oldrow + 2] = type;
                    Board.Squares[oldcol + 1, oldrow + 1] = SquareValues.Empty;
                    if (!Board.CanBeJumped(oldcol + 2, oldrow + 2) || Board.CanJump(type, oldcol + 2, oldrow + 2) != 0)
                    {
                        Board.Squares[oldcol + 2, oldrow + 2] = a;
                        Board.Squares[oldcol + 1, oldrow + 1] = b;
                        Jumper(oldcol, oldrow);
                    }
                    else
                    {
                        Board.Squares[oldcol + 2, oldrow + 2] = a;
                        Board.Squares[oldcol + 1, oldrow + 1] = b;
                    }
                }
                catch (Exception)
                {
                    try
                    {
                        Board.Squares[oldcol + 2, oldrow + 2] = a;
                        Board.Squares[oldcol + 1, oldrow + 1] = b;
                    }
                    catch (Exception)
                    {
                        return;
                    }
                    return;
                }

                break;

            case CheckNo.LeftDown:
                try
                {
                    a = Board.Squares[oldcol - 2, oldrow + 2];
                    b = Board.Squares[oldcol - 1, oldrow + 1];
                    Board.Squares[oldcol - 2, oldrow + 2] = type;
                    Board.Squares[oldcol - 1, oldrow + 1] = SquareValues.Empty;
                    if (!Board.CanBeJumped(oldcol - 2, oldrow + 2) || Board.CanJump(type, oldcol - 2, oldrow + 2) != 0)
                    {
                        Board.Squares[oldcol - 2, oldrow + 2] = a;
                        Board.Squares[oldcol - 1, oldrow + 1] = b;
                        Jumper(oldcol, oldrow);
                    }
                    else
                    {
                        Board.Squares[oldcol - 2, oldrow + 2] = a;
                        Board.Squares[oldcol - 1, oldrow + 1] = b;
                    }
                }
                catch (Exception)
                {
                    try
                    {
                        Board.Squares[oldcol - 2, oldrow + 2] = a;
                        Board.Squares[oldcol - 1, oldrow + 1] = b;
                    }
                    catch (Exception)
                    {
                        return;
                    }
                    return;
                }
                break;
            }
        }