Почему мои спрайты не обнаруживают друг друга после смены места появления? - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть игра, похожая на змею, где игроки должны отрезать другого игрока своим постоянно растущим хвостом. Моя проблема в том, что я изменил место, где они появляются, и теперь, когда игрок попадает в след других игроков, он больше не обнаруживает его. Однако он обнаруживает, когда игрок попадает на свой собственный след.

Это код, который проверяет наличие столкновений:

    def collision_check(self):
        for o in self.objects:
            if (o.rect, '1') in self.path or (o.rect, '2') in self.path or o.rect.collidelist(self.wall_rects) > -1:  # Collided with Players Path or walls

                # Stops Player hitting the path they just made
                if (time.time() - self.check_time) >= 0.1:
                    self.check_time = time.time()

                    if o.colour == P1_COLOUR:
                        self.player_score[1] += 1

                    else:
                        self.player_score[0] += 1

                    # New Game
                    self.new = True
                    new_p1, new_p2 = self.createPlayers()
                    self.objects = [new_p1, new_p2]
                    self.path = [(self.p1.rect, '1'), (self.p2.rect, '2')]
                    break

            else:  # Have not moved yet
                self.path.append((o.rect, '1')) if o.colour == P1_COLOUR else self.path.append((o.rect, '2'))

            for r in self.path:
                if self.new is True:  # If a new game is start
                    self.path = [] # Clears Path list
                    self.new = False
                    break

                if r[1] == '1':
                    pygame.draw.rect(self.screen, P1_COLOUR, r[0], 0)
                else:
                    pygame.draw.rect(self.screen, P2_COLOUR, r[0], 0)

            # If no collisions
            o.DRAW()
            o.MOVE()

Это оригинальный код, который делает объект игрока:

def createPlayers(self):
        new_p1 = Player(50, self.HEIGHT / 2, (2, 0), Player1_colour)
        new_p2 = Player(self.WIDTH - 50, self.HEIGHT / 2, (-2, 0), Player2_colour)
        return new_p1, new_p2

Это обновленный код, изменяющий места появления:

    def createPlayers(self):
        new_p1 = Player(50, self.HEIGHT / 4, (2, 0), P1_COLOUR)
        new_p2 = Player(self.WIDTH - 50, (self.HEIGHT / 4) * 3, (-2, 0), P2_COLOUR)
        return new_p1, new_p2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...