Полагаю, что в тот момент, когда ваши жизни равны нулю, каждый раз, когда запускается ваше обновление l oop, выполняется условие и воспроизводится звук. Это нормально для сокрытия головы и еды, потому что когда они спрятаны Вы можете запускать метод скрытия снова и снова, и ничто не выглядит иначе. То же самое с текстом.
Например, этот сценарий похож на тот, который у вас есть:
turtle = {'lives': 10, 'show': True}
while True:
if turtle['lives'] == 0:
print('Turtle died')
turtle['show'] = False
if turtle['lives'] > 0:
turtle['lives'] -= 1
Это будет уменьшать жизнь черепахи каждый ход, пока они больше 0. В тот момент, когда они go опустятся до 0, сработает первый оператор if, и вы увидите, как «Черепаха умерла» печатается снова и снова каждый раз, когда запускается l oop. Точно так же, как вы продолжаете скрывать голову, не имеет значения, как часто вы устанавливаете turtle['show']
на False
, это фактически ничего не делает.
Чтобы это исправить, вы должны убедиться, что вы запустите свою рутину смерти только один раз Это примерный способ сделать это:
turtle = {'lives': 10, 'show': True, 'state': 'alive'}
while True:
if turtle['lives'] == 0 and turtle['state'] == 'alive':
turtle['state'] = 'dead'
print('Turtle died')
turtle['show'] = False
if turtle['lives'] > 0:
turtle['lives'] -= 1
Таким образом, вы гарантируете, что процедура смерти выполняется только один раз.