gamemode не изменяется (pygame)
Пишу небольшую игру с помощью библиотеки pygame. Есть кусок кода, когда начинаешь игру gamemode с menu меняется на play по нажатию левой кнопки мыши, как и нужно, но вот после, при попытке рестарта, когда gamemode стоит game over, ничего не происходит, хотя вроде бы должно. Подскажите, в чём проблема?
gamemode = "menu"
while run:
if gamemode == "play":
for i in pygame.event.get():
if i.type == pygame.QUIT:
run = False
if i.type == pygame.KEYDOWN:
if i.key == pygame.K_LEFT:
x_change = -player_speed
elif i.key == pygame.K_RIGHT:
x_change = +player_speed
if i.type == pygame.KEYUP:
if i.key == pygame.K_LEFT or i.key == pygame.K_RIGHT:
x_change = 0
if x + x_change < 0 or x + x_change >= WIDTH:
x_change = 0
x += x_change
bad_flame_y += bad_flame_speed
if bad_flame_y >= HEIGHT:
bad_flame_y = 0
bad_flame_x = random.randrange(0, WIDTH + 1, 100)
good_flame_y += good_flame_speed
if good_flame_y >= HEIGHT:
good_flame_y = 0
good_flame_x = random.randrange(0, WIDTH + 1, 100)
window.blit(bg, (0, 0))
add_player(x, y)
add_bad_flame(bad_flame_x, bad_flame_y)
add_good_flame(good_flame_x, good_flame_y)
player_rect = player.get_rect(midbottom=(x, y))
bad_flame_rect = flame_bad.get_rect(midbottom=(bad_flame_x, bad_flame_y))
good_flame_rect = flame_good.get_rect(midbottom=(good_flame_x, good_flame_y))
if player_rect.colliderect(bad_flame_rect):
lives -= 1
bad_flame_y = 0
bad_flame_x = random.randrange(0, WIDTH + 1, 100)
elif player_rect.colliderect(good_flame_rect):
score += 10
good_flame_y = 0
good_flame_x = random.randrange(0, WIDTH + 1, 100)
lives_and_score_text()
if lives <= 0:
time.sleep(2)
gamemode = "game over"
elif gamemode == "menu":
for i in pygame.event.get():
if i.type == pygame.QUIT:
run = False
if i.type == pygame.MOUSEBUTTONDOWN:
if i.button == 1:
gamemode = "play"
window.blit(bg, (0, 0))
menu_text()
elif gamemode == "game over":
for i in pygame.event.get():
if i.type == pygame.QUIT:
run = False
if i.type == pygame.MOUSEBUTTONDOWN:
if i.button == 1:
gamemode = "play"
window.blit(bg, (0, 0))
game_over()
pygame.display.update()
clock.tick(FPS)
Ответы (1 шт):
Автор решения: Владислав Новосёлов
→ Ссылка
Ночное время плохо влияет на моё мышление! Ответ оказался очевиден: нужно сбросить количество жизней и набранных очков перед рестартом игры, чтобы lives не равнялось нулю
elif GameMode == "game over":
for i in pygame.event.get():
if i.type == pygame.QUIT:
run = False
if i.type == pygame.KEYDOWN:
if i.key == pygame.K_r:
lives = 3
score = 0
GameMode = "play"