public override bool[,] AvailableMovs() { bool[,] mat = new bool[board.lines, board.columns]; Position pos = new Position(0, 0); pos.DefineValues(myPosition.line - 1, myPosition.column); while (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; if (board.GetPiece(pos) != null && board.GetPiece(pos).color != color) { break; } pos.line--; } pos.DefineValues(myPosition.line + 1, myPosition.column); while (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; if (board.GetPiece(pos) != null && board.GetPiece(pos).color != color) { break; } pos.line++; } pos.DefineValues(myPosition.line, myPosition.column - 1); while (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; if (board.GetPiece(pos) != null && board.GetPiece(pos).color != color) { break; } pos.column--; } pos.DefineValues(myPosition.line, myPosition.column + 1); while (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; if (board.GetPiece(pos) != null && board.GetPiece(pos).color != color) { break; } pos.column++; } return(mat); }
public override bool[,] AvailableMovs() { bool[,] mat = new bool[board.lines, board.columns]; Position pos = new Position(0, 0); pos.DefineValues(myPosition.line - 1, myPosition.column); if (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; } pos.DefineValues(myPosition.line - 1, myPosition.column - 1); if (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; } pos.DefineValues(myPosition.line, myPosition.column - 1); if (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; } pos.DefineValues(myPosition.line + 1, myPosition.column - 1); if (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; } pos.DefineValues(myPosition.line + 1, myPosition.column); if (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; } pos.DefineValues(myPosition.line + 1, myPosition.column + 1); if (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; } pos.DefineValues(myPosition.line, myPosition.column + 1); if (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; } pos.DefineValues(myPosition.line - 1, myPosition.column + 1); if (board.ValidPos(pos) && CanMove(pos)) { mat[pos.line, pos.column] = true; } //#CASTLES if (movCount == 0 && !game.Check) { //Small Position posR = new Position(myPosition.line, myPosition.column + 3); if (CheckRookForRock(posR)) { Position p1 = new Position(myPosition.line, myPosition.column + 1); Position p2 = new Position(myPosition.line, myPosition.column + 2); if (board.GetPiece(p1) == null && board.GetPiece(p2) == null) { mat[myPosition.line, myPosition.column + 2] = true; } } //Big posR = new Position(myPosition.line, myPosition.column - 4); if (CheckRookForRock(posR)) { Position p1 = new Position(myPosition.line, myPosition.column - 1); Position p2 = new Position(myPosition.line, myPosition.column - 2); Position p3 = new Position(myPosition.line, myPosition.column - 3); if (board.GetPiece(p1) == null && board.GetPiece(p2) == null && board.GetPiece(p3) == null) { mat[myPosition.line, myPosition.column - 2] = true; } } } return(mat); }