def __init__(self, start_state: ShibumiGameState): super().__init__(start_state) self.start_state = start_state ui = self.ui = Ui_ShibumiDisplay() ui.setupUi(self) scene = QGraphicsScene() ui.game_display.setScene(scene) self.background_pixmap = self.assemble_board() self.background_item = scene.addPixmap(self.background_pixmap) self.white_scaled = self.white_pixmap = self.load_pixmap( 'ball-w-shadow-1.png') self.black_scaled = self.black_pixmap = self.load_pixmap( 'ball-b-shadow-1.png') self.red_scaled = self.red_pixmap = self.load_pixmap( 'ball-r-shadow-1.png') self.remove_pixmap = self.load_pixmap('ball-x-shadow-1.png') self.item_levels = [] self.hovered_piece: typing.Optional[GraphicsShibumiPieceItem] = None for height in range(self.start_state.size): item_level = [] for row in range(self.start_state.size - height): item_row = [] for column in range(self.start_state.size - height): item = GraphicsShibumiPieceItem(height, row, column, self) scene.addItem(item) item_row.append(item) item_level.append(item_row) self.item_levels.append(item_level) self.row_labels = [] self.column_labels = [] for i in range(self.start_state.size * 2 - 1): self.row_labels.append(scene.addSimpleText(str(i + 1))) self.column_labels.append(scene.addSimpleText(chr(i + 65))) self.ui.move_black.clicked.connect( lambda: self.on_move_type_selected(MoveType.BLACK)) self.ui.move_white.clicked.connect( lambda: self.on_move_type_selected(MoveType.WHITE)) self.ui.move_red.clicked.connect( lambda: self.on_move_type_selected(MoveType.RED)) self.ui.remove.clicked.connect( lambda: self.on_move_type_selected(MoveType.REMOVE)) self._selected_move_type = MoveType.BLACK self._visible_counts: typing.FrozenSet[PlayerCode] = frozenset() self._visible_move_types: typing.FrozenSet[MoveType] = frozenset() self.ui.black_count_pixmap.setText('') self.ui.white_count_pixmap.setText('') self.ui.red_count_pixmap.setText('') self.ui.move_black.setText('') self.ui.move_white.setText('') self.ui.move_red.setText('') self.ui.remove.setText('') self.ui.move_black.setIcon(self.black_pixmap) self.ui.move_white.setIcon(self.white_pixmap) self.ui.move_red.setIcon(self.red_pixmap) self.ui.remove.setIcon(self.remove_pixmap) self.ui.pass_button.setVisible(False) self.show_counts = False self.show_move_types = False self.debug_message = ''
def __init__(self, start_state: GridGameState): super().__init__(start_state) self.start_state: GridGameState = start_state self.spaces = [] # self.spaces[i][j] holds row i, column j self.column_dividers = [] self.row_dividers = [] self.column_labels = [] self.row_labels = [] self.text_x = self.text_y = 0 ui = self.ui = Ui_GridControls() ui.setupUi(self) scene = QGraphicsScene() ui.game_display.setScene(scene) scene.setBackgroundBrush(self.background_colour) self.player1_icon = self.create_icon(self.player1_colour) self.player2_icon = self.create_icon(self.player2_colour) ui.black_count_pixmap.setText('') ui.white_count_pixmap.setText('') ui.black_count.setText('') ui.white_count.setText('') for _ in range(start_state.board_height - 1): self.row_dividers.append(scene.addLine(0, 0, 1, 1)) for _ in range(start_state.board_width - 1): self.column_dividers.append(scene.addLine(0, 0, 1, 1)) for i in range(start_state.board_height): self.row_labels.append(scene.addSimpleText(f'{i + 1}')) for j in range(start_state.board_width): self.column_labels.append(scene.addSimpleText(chr(65 + j))) self.to_move = scene.addEllipse(0, 0, 1, 1, brush=self.get_player_brush( self.start_state.X_PLAYER)) self.to_move.setVisible(False) self.move_text = ui.move_text for i in range(self.start_state.board_height): row: typing.List[GraphicsPieceItem] = [] self.spaces.append(row) for j in range(self.start_state.board_width): piece = GraphicsPieceItem(i, j, self) scene.addItem(piece) piece.setBrush(self.background_colour) piece.setPen(self.background_colour) row.append(piece) self.debug_message = ''
def draw_text(expected: QPainter, x: int, y: int, text: str): window = expected.window() scene = QGraphicsScene(0, 0, window.width(), window.height()) text_item = scene.addSimpleText(text) font = expected.font() text_item.setFont(font) center_text_item(text_item, x, y) scene.render(expected)
def add_text(scene: QGraphicsScene, text: str, x: int, y: int, font_size: int): font = QFont(SplineDisplay.default_font) font.setPointSize(font_size) text_item = scene.addSimpleText(text, font) center_text_item(text_item, x, y)