У меня есть игра, похожая на змею, где игроки должны отрезать другого игрока своим постоянно растущим хвостом. Моя проблема в том, что я изменил место, где они появляются, и теперь, когда игрок попадает в след других игроков, он больше не обнаруживает его. Однако он обнаруживает, когда игрок попадает на свой собственный след.
Это код, который проверяет наличие столкновений:
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