private PossibleMove CheckPath(int x, int y, int xoff, int yoff, BoardClass Board) { int xcur = x, ycur = y; var gaplen = 0; for (int steps = 0; steps < 100; steps++) { xcur += xoff; ycur += yoff; if (!Board.InBounds(xcur, ycur)) { return(null); } var valid = Board.IsWalkable(xcur, ycur); if (Board.Tiles[xcur, ycur].Type != CardType.Empty) { if (gaplen > 0 && valid) { return new PossibleMove() { FromX = x, FromY = y, ToX = xcur, ToY = ycur, ScoreValue = Board.Tiles[xcur, ycur].ScoreValue, Card = this, Destination = Board.Tiles[xcur, ycur] } } ; return(null); } gaplen++; } return(null); }