Как создать линии в Pygame и сделать так, чтобы персонаж получал положение (600, 600), когда они касались его? - PullRequest
1 голос
/ 30 марта 2020

Я пытаюсь сделать так, чтобы, когда игрок, созданный с помощью pygame.draw.rect, пытался пройти сквозь стены1 без выполнения первого вызова, он отправлялся в координаты (600, 600), AKA где они начали с. Прямо сейчас, когда я запускаю код ниже, это делают только углы wall1. Спасибо!

        walls1 = pygame.draw.lines(win, (100, 100, 100), False, [(screen_width - 100, screen_height),
                                                        (screen_width - 100, screen_height - 100),
                                                        (screen_width, screen_height - 100)], 5)
        wall_dimentions = [(screen_width - 100, screen_height),
                           (screen_width - 100, screen_height - 100),
                           (screen_width, screen_height - 100)]
        for b in range(100):
            wall_dimentions.append((screen_width - b, screen_height))
            wall_dimentions.append((screen_width, screen_height - b))
        print(wall_dimentions)
        for i in range(len(wall_dimentions)):
            if isOver(player, wall_dimentions[i]):
                player_pos_x = 600
                player_pos_y = 600

isOver:

# checks if one object is over another object in a GUI
def isOver(self, pos):
    if pos[0] > self.x and pos[0] < self.x + self.width:
        if pos[1] > self.y and pos[1] < self.y + self.height:
        return True

1 Ответ

1 голос
/ 30 марта 2020

Хорошо, так что я разобрался, как сделать так, чтобы пользователь физически не мог пройти через барьер (wall1), что на самом деле лучше, чем я изначально планировал.

Вот код:

walls1 = pygame.draw.lines(win, (100, 100, 100), False, [(screen_width - 100, screen_height),
                                                        (screen_width - 100, screen_height - 100),
                                                        (screen_width, screen_height - 100)], 5)
        wall_dimensions = [(screen_width - 100, screen_height),
                           (screen_width - 100, screen_height - 100),
                           (screen_width, screen_height - 100)]
        for b in range(100):
            wall_dimensions.append((screen_width - 100, screen_height - b))
            wall_dimensions.append((screen_width - 100, screen_height - b))
            wall_dimensions.append((screen_width - b, screen_height - 100))
            wall_dimensions.append((screen_width - b, screen_height - 100))
        for i in range(len(wall_dimensions)):
            if isOver(player, wall_dimensions[i]):
                what_dimension = wall_dimensions[i]
                player_pos_x = what_dimension[0]
                player_pos_y = what_dimension[1]
                print(what_dimension)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...