Esempio n. 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);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Jumps over a Piece Whenever it can
        /// </summary>
        private void BotPlayer2()
        {
            for (int oldrow = 0; oldrow < Board.Size; oldrow++)
            {
                for (int oldcol = 0; oldcol < Board.Size; oldcol++)
                {
                    if (!Board.IsEmptySquare(oldcol, oldrow) && !Board.NotYourPiece(Type, oldcol, oldrow))
                    {
                        var realtype = Board.Squares[oldcol, oldrow];
                        switch (Board.CanJump(realtype, oldcol, oldrow))
                        {
                        case 0:
                            continue;

                        case 1:
                            Board.MovePiece(realtype, oldcol, oldrow, oldcol + 2, oldrow - 2);
                            return;

                        case 2:
                            Board.MovePiece(realtype, oldcol, oldrow, oldcol - 2, oldrow - 2);
                            return;

                        case 3:
                            Board.MovePiece(realtype, oldcol, oldrow, oldcol + 2, oldrow + 2);
                            return;

                        case 4:
                            Board.MovePiece(realtype, oldcol, oldrow, oldcol - 2, oldrow + 2);
                            return;

                        default:
                            return;
                        }
                    }
                }
            }
            for (int oldrow = 0; oldrow < Board.Size; oldrow++)
            {
                for (int oldcol = 0; oldcol < Board.Size; oldcol++)
                {
                    if (!Board.IsEmptySquare(oldcol, oldrow) && !Board.NotYourPiece(Type, oldcol, oldrow))
                    {
                        var realtype = Board.Squares[oldcol, oldrow];
                        for (int newrow = 0; newrow < Board.Size; newrow++)
                        {
                            for (int newcol = 0; newcol < Board.Size; newcol++)
                            {
                                if (Board.IsEmptySquare(newcol, newrow) && Board.IsValidMove(realtype, oldcol, oldrow, newcol, newrow))
                                {
                                    try
                                    {
                                        pos.Add(oldcol, oldrow);
                                        pos.Add(newcol, newrow);
                                        OldPosition = pos.First();
                                        NewPosition = pos.Last();
                                        pos.Clear();
                                        BotPositions.Add(OldPosition, NewPosition);
                                    }
                                    catch (Exception)
                                    {
                                        List <KeyValuePair <int, int> > Options = new List <KeyValuePair <int, int> >();
                                        Options.Add(BotPositions[OldPosition]);
                                        Options.Add(NewPosition);
                                        BotPositions.Remove(OldPosition);
                                        BotPositions.Add(OldPosition, Options[rnd.Next(2)]);
                                    }
                                    //Board.MovePiece(realtype, oldcol, oldrow, newcol, newrow);
                                    //return;
                                }
                            }
                        }
                    }
                }
            }
            var a         = RandomValues(BotPositions);
            var oldCol    = a.Key;
            var oldRow    = a.Value;
            var NewPlaces = BotPositions[a];
            var newCol    = NewPlaces.Key;
            var newRow    = NewPlaces.Value;

            Board.MovePiece(Board.Squares[oldCol, oldRow], oldCol, oldRow, newCol, newRow);
            BotPositions.Clear();
            return;
        }