Я добавил жизни в свою игру, и она работала нормально, используя только текст. Однако теперь, когда я изменил его на изображения, он не работает. Изображения (сердца x3) отображаются, но не уменьшаются, когда игрок сталкивается с монстром. ОБНОВЛЕНИЕ: полная игра l oop теперь включена!
class Player(object):
def __init__(self, pos):
self.rect = pygame.Rect(pos[0], pos[1]+32, 32, 32)
self.image = playerImg
self.lives = 3
def life_dis(screen,x,y,lives,img):
for i in range(lives):
img_rect = img.get_rect()
img_rect.x = x+37*i
img_rect.y = y
screen.blit(img, img_rect)
def game_loop():
global walls, players, monsters, finishes, currentLevel
level = 1 #Starting level
running = True
while running:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
pygame.quit()
quit()
screen.fill(blue)
level_dis(level)
#Move the player if an arrow key is pressed
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
player.move(-2, 0)
if key[pygame.K_RIGHT]:
player.move(2, 0)
if key[pygame.K_UP]:
player.move(0, -2)
if key[pygame.K_DOWN]:
player.move(0, 2)
#Move monster
for monster in monsters:
monster.move()
#Moving to next level/win
for player in players:
for finish in finishes:
if player.rect.colliderect(finish.rect):
if currentLevel < Highest_level:
currentLevel +=1
level +=1
walls, players, monsters, finishes = load_level(currentLevel)
else:
win()
level = 1
#lives = 3
#Getting caught by the monster
for player in players:
for monster in monsters:
if player.rect.colliderect(monster.rect):
load_current_level()
player.lives -=1
if player.lives == 0:
game_over()
level = 1
#lives = 3
#Draw the scene
screen.blit(background, (0,32))
for wall in walls:
#pygame.draw.rect(screen, green, wall.rect)
screen.blit(wall.image, wall.rect)
for player in players:
#pygame.draw.rect(screen, orange, player.rect)
screen.blit(player.image, player.rect)
for monster in monsters:
#pygame.draw.rect(screen, bright_green, monster.rect)
screen.blit(monster.image, monster.rect)
for finish in finishes:
#pygame.draw.rect(screen, red, finish.rect)
screen.blit(finish.image, finish.rect)
life_dis(screen,500,0,player.lives,lifeImg)
pygame.display.update()
Это фрагменты моего кода, показывающие, как я настроил «жизни». Я, вероятно, не объявил что-то или не в нужном месте! Я не думаю, что это обновление дисплея, так как игра должна закончиться, как только монстр получит вас 3 раза, но это не так. Заранее благодарен за любую помощь, и я могу предоставить весь код, если требуется.