from logic.pieces.bishop import Bishop from logic.pieces.king import King from logic.pieces.knight import Knight from logic.pieces.queen import Queen from logic.pieces.rook import Rook from logic.pieces.pawn import Pawn from logic.pieces.piece import Piece from logic.position import Position class Board: def __init__(self) -> None: self._white: dict[Position, Piece] = {} self._black: dict[Position, Piece] = {} for x in range(8): pos_w_pawn = Position(x, 1) pos_b_pawn = Position(x, 6) self._white[pos_w_pawn] = Pawn(pos_w_pawn, Piece.WHITE) self._black[pos_b_pawn] = Pawn(pos_b_pawn, Piece.BLACK) pos_w_piece = Position(x, 0) pos_b_piece = Position(x, 7) piece = None if x == 0 or x == 7: piece = Rook elif x == 1 or x == 6: piece = Knight elif x == 2 or x == 5: piece = Bishop elif x == 3: piece = Queen elif x == 4: piece = King assert piece != None, f"Didn't know which piece to assign for {x = }" self._white[pos_w_piece] = piece(pos_w_piece, Piece.WHITE) self._black[pos_b_piece] = piece(pos_b_piece, Piece.BLACK) def piece_at(self, x: int, y: int) -> Piece | None: pos = Position(x, y) white_piece = self._white.get(pos, None) black_piece = self._black.get(pos, None) assert white_piece == None or black_piece == None, f"There are two pieces at the same position {pos}, this shouldn't happen!" if white_piece != None: return white_piece return black_piece def create_board(): return Board()