Ваш код был немного сложным для меня - я довольно плохо знаком с программированием. Однако у меня есть несколько предложений, которые могут немного помочь.
Во-первых, вы, кажется, жестко закодировали координаты ваших пуль (то есть bullet1
, bullet2
, bX1
, bY1
и т. Д.). Поскольку вы, похоже, не можете запустить более 5 пуль, я предполагаю, что вы не сбрасываете координаты x и y ваших пуль, а также связанные с ними переменные в ноль после того, как они исчезнут с экрана или что-то в этом роде.
Кроме того, попробуйте реализовать свои маркеры как класс и поместить все свои маркеры в список, чтобы их было больше 5. Таким образом, вы можете аккуратно инкапсулировать все данные, необходимые для одной маркировки, чтобы вы могли делать такие вещи, как bullet1.x = 3
или bullets_array[1].y = 3
вместо bX1 = 3
.
(кстати, я вижу, что вы начали изучать Python совсем недавно. Я настоятельно рекомендую вам узнать о списках, объектах и объектно-ориентированном программировании (часто сокращенно ООП). И словарях. Они станут вашими новыми лучшими друзьями. ООП может поначалу будет немного трудно ухватиться (по крайней мере, это было для меня), но оно того стоит.)
Например,
# snip initialization, etc.
class Bullet():
def __init__(self, surface, x_coord, y_coord):
self.surface = surface
self.x = x_coord
self.y = y_coord
return
def update(self, y_amount=5):
self.y += y_amount
self.surface.set_at((self.x, self.y),(255,255,255))
return
bullets_array = []
# snip
while quit == false: # Inside the main loop...
for event in pygame.event.get():
#snip
if event.type == pygame.KEYDOWN and event.key == pygame.K_z:
bullets_array.append(background, player_x, player_y)
#snip
for bullet in bullets_array:
bullet.update()
# ...and check if the bullet is off the screen.
# If so, remove it from the array.
Если вы хотите что-то более сложное, попробуйте использовать классы Sprite и Group в Pygame.
http://pygame.org/docs/ref/sprite.html
По сути, вместо того, чтобы создавать класс Bullet
самостоятельно, вы основываете его на pygame.sprite.Sprite
, реализуете все необходимые методы, а затем добавляете его в группу (pygame.sprite.Group
). Этот путь, вероятно, будет более гибким.