Как добавить изображение в игровой элемент - PullRequest
0 голосов
/ 11 апреля 2019

Я делаю "простую" игру типа Galaga . Я новичок, так что я собираю это воедино из уже работающих версий. Моя проблема в том, что я не могу заставить инопланетянина / врага перейти на взорванное изображение при попадании пули / ракеты вместо того, чтобы просто показать счет. Точный вопрос у меня заключается в следующем. как мне сделать мой код ...

  1. При попадании в инопланетянина / тайну (уже работает)
  2. показать счет, (уже работает)
  3. переключиться на уничтоженное изображение инопланетянина / тайны на секунду 4.и исчезают.

Я пытался добавить операторы if и версии этого кода других людей, но не могу заставить его работать.

class Mystery(sprite.Sprite):
    def __init__(self):
        sprite.Sprite.__init__(self)
        self.image = IMAGES['mystery']
        self.image = transform.scale(self.image, (56, 56))
        self.rect = self.image.get_rect(topleft=(-80, 45))
        self.row = 5
        self.moveTime = 25000
        self.direction = 1
        self.timer = time.get_ticks()
        self.mysteryEntered = mixer.Sound(SOUND_PATH + 'mysteryentered.wav')
        self.mysteryEntered.set_volume(0.3)
        self.playSound = True

    def update(self, keys, currentTime, *args):
        resetTimer = False
        passed = currentTime - self.timer
        if passed > self.moveTime:
            if (self.rect.x < 0 or self.rect.x > 800) and self.playSound:
                self.mysteryEntered.play()
                self.playSound = False
            if self.rect.x < 840 and self.direction == 1:
                self.mysteryEntered.fadeout(4000)
                self.rect.x += 2
                game.screen.blit(self.image, self.rect)
            if self.rect.x > -100 and self.direction == -1:
                self.mysteryEntered.fadeout(4000)
                self.rect.x -= 2
                game.screen.blit(self.image, self.rect)

        if self.rect.x > 830:
            self.playSound = True
            self.direction = -1
            resetTimer = True
        if self.rect.x < -90:
            self.playSound = True
            self.direction = 1
            resetTimer = True
        if passed > self.moveTime and resetTimer:
            self.timer = currentTime

class MysteryExplosion(sprite.Sprite):

    def __init__(self, mystery, score, *groups):
         super(MysteryExplosion, self).__init__(*groups)
         self.text = Text(FONT, 20, str(score), WHITE,
                         mystery.rect.x + 20, mystery.rect.y + 6)
         self.timer = time.get_ticks()

    def update(self, current_time, *args):
         passed = current_time - self.timer
         if passed <= 200 or 400 < passed <= 600:
            self.text.draw(game.screen)
         elif 600 < passed:
            self.kill()

Моя конечная цель: Тайна исчезает при попадании и отображает explo.png в течение 1 секунды, затем счет и изображение полностью исчезают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...