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