Враги не будут видны go после того, как здоровье достигнет 0 - как исправить? - PullRequest
1 голос
/ 30 мая 2020

В моем основном l oop Добавляю здоровья врагу. Если я продолжу бить врага и его здоровье упадет до 0, враг должен исчезнуть (enemys1.visible = False).

Я запустил переменную visible для моего класса врага, но по какой-то причине враг не будет go невидимым и все еще появляется, когда его здоровье достигает 0.

Вот видео проблемы в моей игре.

for bullet in bullets:
  if bullet.rect.colliderect(enemys1.hitbox):
    bullets.pop(bullets.index(bullet))
    if enemys1.health > 0:
      enemys1.health -= 1
    else:
      enemys1.visible = False # if my health reaches 0 the enemy should disappear but it doesnt
      print('hit')

мой класс врага:

class enemys:
    def __init__(self,x,y,height,width,end):
        self.x = x
        self.y =y
        self.esright = [pygame.image.load("esright1.png"),
        pygame.image.load("esright1.png"),
        pygame.image.load("esright2.png"),
        pygame.image.load("esright3.png"),
        pygame.image.load("esright4.png"),
        pygame.image.load("esright5.png"),
        pygame.image.load("esright6.png"),
        pygame.image.load("esright7.png"),
        pygame.image.load("esright8.png"),
        pygame.image.load("esright9.png"),
        pygame.image.load("esright10.png"),
        pygame.image.load("esright11.png"),
        pygame.image.load("esright12.png"),
        pygame.image.load("esright13.png"),
        pygame.image.load("esright14.png"),
        pygame.image.load("esright15.png"),
        pygame.image.load("esright16.png"),
        pygame.image.load("esright17.png"),
                          ]
        self.esleft = [pygame.image.load("esleft1.png"),
        pygame.image.load("esleft1.png"),
        pygame.image.load("esleft2.png"),
        pygame.image.load("esleft3.png"),
        pygame.image.load("esleft4.png"),
        pygame.image.load("esleft5.png"),
        pygame.image.load("esleft6.png"),
        pygame.image.load("esleft7.png"),
        pygame.image.load("esleft8.png"),
        pygame.image.load("esleft9.png"),
        pygame.image.load("esleft10.png"),
        pygame.image.load("esleft11.png"),
        pygame.image.load("esleft12.png"),
        pygame.image.load("esleft13.png"),
        pygame.image.load("esleft14.png"),
        pygame.image.load("esleft15.png"),
        pygame.image.load("esleft16.png"),
        pygame.image.load("esleft17.png"),
                          ]
        self.esright = [pygame.transform.scale(image,(image.get_width()//3,image.get_height()//3)) for image in self.esright]
        self.esleft = [pygame.transform.scale(image,(image.get_width()//3,image.get_height()//3)) for image in self.esleft]
        self.height = height
        self.width = width
        self.anim_index = 0
        self.distance = 80
        self.speed = 8
        self.vel = 3
        self.path = [x,end]
        self.Walking_index = 0
        self.hitbox = (self.x + 17, self.y + 2, 31, 57)
        self.rect = pygame.Rect(x,y,height,width)
        # enemys health
        self.health = 10
        self.visible = True

    # this makes the enemy move right and left
    def draw(self,window):
        self.move()
        if self.Walking_index + 1 >= 33:
            self.Walking_index = 0
        if self.vel > 0:
            window.blit(self.esright[self.Walking_index//3], (self.x,self.y))
            self.Walking_index += 1
        else:
            window.blit(self.esleft[self.Walking_index//3], (self.x,self.y))
            self.Walking_index += 1

# this moves the enemy left and right
    def move(self):
        if self.visible:
            if self.vel > 0:
               if self.x + self.vel < self.path[1]:
                   self.x += self.vel
               else:
                   self.vel = self.vel * -1
                   self.Walking_index = 0
            else:
               if self.x - self.vel >  self.path[0]:
                   self.x += self.vel
               else:
                   self.vel = self.vel * -1
                   self.Walking_index = 0
                # the hit box for the enemy the health
            pygame.draw.rect(window, (255,0,0), (self.hitbox[0], self.hitbox[1] - 20, 70, 10)) # NEW
            pygame.draw.rect(window, (0,255,0), (self.hitbox[0], self.hitbox[1] - 20, 70 - (5 * (10 - self.health)), 10))
            self.hitbox = (self.x + 47, self.y + 31, 50, 72)


# THIS PART MAKES  the enemy not scroll with the player
    def scroll(self,sx, sy):
        self.x += sx
        self.y += sy
        self.path[0] += sx
        self.path[1] += sx

1 Ответ

1 голос
/ 30 мая 2020
    for bullet in bullets: # never mind I fixed it
    if bullet.rect.colliderect(enemys1.hitbox):
        bullets.pop(bullets.index(bullet))
        if enemys1.health > 0:
            enemys1.health -= 1
        else:
            for one in range(len(enemying)-1,-1,-1):
                    del enemying[one]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...