/// <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); } }
/// <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; }