Итак, я делаю платформерную игру в Pygame и сталкиваюсь с проблемой врагов. Видите ли, мои враги должны двигаться на платформе, и у меня настроен таймер, поэтому, как только таймер включится, враг оборачивается. Тем не менее, у меня также есть функция паузы в моей игре, и игра приостановлена, пока враги не двигаются, таймер поворота врагов все еще работает. Затем происходит то, что противник оборачивается, когда этого не должно быть, и тогда кажется, что противник в воздухе. Я хочу, чтобы таймер сделал паузу, пока игра приостановлена. Вот мой код: Код врага:
class enemy(pg.sprite.Sprite):
def __init__(self,x,y,end,speed):
pg.sprite.Sprite.__init__(self)
self.image = pg.image.load("enemy.png")
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.alive = True
self.health = 3
self.end = end
self.speed = speed
self.timer = pg.time.get_ticks()
def update(self):
self.rect.x += self.speed
now = pg.time.get_ticks()
if now - self.timer >= self.end:
self.timer = now
self.speed *= -1
if self.health == 0:
self.kill()
Вот код паузы:
def pause_screen(self):
self.paused = True
while self.paused:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
if event.type == pg.KEYDOWN:
if event.key == pg.K_p:
self.paused = False
elif event.key == pg.K_q:
pg.quit()
self.screen.fill(WHITE)
self.draw_text(str('PAUSED'),70,BLACK,400,200)
self.draw_text(str('Press p to unpause'),50,BLACK,400,300)
self.draw_text(str('Press q to quit game'),50,BLACK,400,400)
pg.display.flip()
self.clock.tick(5)
Вот как я вызываю своих врагов:
for ene in self.enemy_list:
e = enemy(*ene)
self.all_enemy.add(e)
self.all_sprites.add(e)
Вот мой если вам это нужно, запустите класс
self.playing = True
while self.playing:
self.clock.tick(FPS)
self.events()
self.update()
self.draw()
self.load_level()
Также класс врага не входит в основную игру l oop, как класс паузы.