def show_instruction_screen(screen: pygame.Surface, font: pygame.font, game_logic: GameLogic): lines = list() if game_logic.is_angel_turn(): lines.append("You are an angel") lines.append("You need to get away from devil") lines.append( f"You can move {game_logic.get_angel_n()} from current position") lines.append("Click on any blue square to run away") else: lines.append("You are a devil") lines.append("You need to catch an angel") lines.append("Click on any blue square to trap an angel") lines.append("Press enter to get play the game") lines.append("If you don't want to see instruction again,Press i") for line, rect in center(screen.get_width(), lines, font): screen.blit(line, rect)
def show_playing_screen(screen: pygame.Surface, cell_size: tuple, angel_icon, devil_icon, game_logic: GameLogic): """ Show the playing screen Return (new game logic which is changed,whether a move is made) """ move_made = False board_size = game_logic.get_board().get_size() board_width = board_size[0] board_height = board_size[1] #width/column index for column_index in range(board_width): #height/row index for row_index in range(board_height): if not (column_index < board_width and row_index < board_height): continue rect = get_rect(row_index, column_index, cell_size) #If the position is angel position if game_logic.get_board().get_position( row_index, column_index) == ANGLE_SPACE: screen.blit(angel_icon, rect) #If the position is devil position elif game_logic.get_board().get_position( row_index, column_index) == BLOCK_SPACE: screen.blit(devil_icon, rect) else: pygame.draw.rect(screen, BLACK, rect) positions = list() is_angel_turn = game_logic.is_angel_turn() avaliable_moves = set() if is_angel_turn: avaliable_moves = game_logic.get_avaliable_angel_moves() else: avaliable_moves = game_logic.get_avaliable_devil_moves() for (i, j) in avaliable_moves: rect = get_rect(i, j, cell_size) pygame.draw.rect(screen, BLUE, rect) positions.append(Position(i, j, rect)) left_clicked, _, _ = pygame.mouse.get_pressed() #if left clicked if left_clicked == 1: mouse = pygame.mouse.get_pos() for position in positions: #if the avaliable position is clicked if position.rect.collidepoint(mouse): move_made = True #if it is an angel turn,move the angel if is_angel_turn: game_logic.angel_move(position.row_index, position.column_index) else: game_logic.devil_move(position.row_index, position.column_index) return game_logic, move_made