Итак, я обновил некоторый код, используя pygame.sprite и создав функцию для обработки всего рисунка. Если вы видите код ниже, я пытаюсь создать шутер, игрок стреляет пулями в направлении курсора и пытается поразить цели. Функция 'motion ()' предназначена для того, чтобы делать то, что говорится на жестяной банке, заставляя цели двигаться каждый раз, когда обновляется экран, увеличивая значение self.rect.x на 0,5. Я вызвал функцию внутри другой функции (refresh_window () '. Функция refresh_window ()' просто обрабатывает все рисование. Однако когда я запускаю игру, цели не двигаются. Я не получаю ошибок или чего-то еще, я догадался потому что self.rect.x в 'motion ()' не является глобальным, но когда я попытался сделать его глобальным, я получил сообщение об ошибке:
File "main.py", line 60
global item.rect.x
^
SyntaxError: invalid syntax
В любом случае, я пытаюсь увидеть проблему с код, так что если вы можете увидеть проблему, пожалуйста, укажите на это, это будет высоко ценится. Ура.
class Target(pygame.sprite.Sprite):
def __init__(self, width, height, offset, threshold):
pygame.sprite.Sprite.__init__(self, target_sprites)
self.image = pygame.Surface([width, height])
self.image = target_img
self.rect = self.image.get_rect()
self.rect.center = (self.rect.x + 50, self.rect.y + offset)
target_sprites = pygame.sprite.Group()
target_1 = Target(100, 100, 100, 0)
target_2 = Target(100, 100, 300, 1000)
target_3 = Target(100, 100, 200, 2000)
#Function to make targets move each time screen refreshes.
def movement():
global item.rect.x
for item in target_sprites:
item.rect.x += 0.5
return
#Creating a function which will deal with redrawing all sprites and updating the screen.
def refresh_window():
window.blit(bgr, (0,0))
player_sprites.draw(window)
target_sprites.draw(window)
movement()
pygame.display.update()