#python #pygame
#python #pygame
Вопрос:
Я разрабатываю игру на pygame и распознавание голоса, в которой будут отображаться разные изображения, и пользователь должен произнести имя объекта, который они видят. Если они дадут правильный ответ, программа воспроизведет аудиофайл «хорошая работа» и перейдет к следующему изображению. В противном случае он будет воспроизводить «повторите попытку с неправильным ответом» и предоставит пользователю второй шанс ответить на тот же вопрос; это произойдет три раза. Моя проблема в том, что после последнего шанса будет воспроизведен аудиофайл «неправильный ответ, попробуйте еще раз», и вместо повторного перехода к следующему вопросу. Как я могу пропустить воспроизведение «повторите попытку с неправильным ответом» в последний раз, когда я выполняю цикл?
Спасибо.
for i in range(1,11):
if i== 1:
carImg = pygame.image.load(os.path.join(image_path,'tiger.jpg'))
gameDisplay.blit(carImg,(130,0))
pygame.display.update()
pygame.mixer.Sound.play(Tiger)
pygame.mixer.music.stop()
time.sleep(7)
for j in range(1,4):
r = sr.Recognizer()
with sr.Microphone() as source:
print ('Say Something!')
audio = r.listen(source)
try:
text = r.recognize_google(audio)
print(text)
except:
print('Did not get that try Again')
text=''
if text == 'tiger':
print('good job')
pygame.mixer.Sound.play(right)
pygame.mixer.music.stop()
break
else:
print('wrong try again')
pygame.mixer.Sound.play(wrong)
pygame.mixer.music.stop()
time.sleep(3)
time.sleep(4)
elif i== 2:
carImg = pygame.image.load(os.path.join(image_path,'monkey.jpg'))
gameDisplay.blit(carImg,(130,0))
pygame.display.update()
pygame.mixer.Sound.play(Monkey)
pygame.mixer.music.stop()
for a in range(1,4):
r = sr.Recognizer()
with sr.Microphone() as source:
print ('Say Something!')
audio = r.listen(source)
try:
text = r.recognize_google(audio)
print(text)
except:
print('Did not get that try Again')
text=''
if text == 'monkey':
print('good job')
pygame.mixer.Sound.play(right)
pygame.mixer.music.stop()
break
else:
print('wrong ya wad')
pygame.mixer.Sound.play(wrong)
pygame.mixer.music.stop()
time.sleep(3)
time.sleep(4)
Ответ №1:
Вы можете создать переменную с именем что-то вроде ‘guess_counter’, чтобы отслеживать, сколько раз они отвечали неправильно, и пока это число <3, (поскольку вы сказали, что у них будет 3 шанса), вы можете воспроизвести звуковой эффект для неправильного.
Как только вы перейдете к следующему изображению, вы можете сбросить эту переменную счетчика, чтобы отслеживать догадки для нового изображения.
for i in range(1,11):
if i== 1:
guess_counter = 0
carImg = pygame.image.load(os.path.join(image_path,'tiger.jpg'))
gameDisplay.blit(carImg,(130,0))
pygame.display.update()
pygame.mixer.Sound.play(Tiger)
pygame.mixer.music.stop()
time.sleep(7)
for j in range(1,4):
r = sr.Recognizer()
with sr.Microphone() as source:
print ('Say Something!')
audio = r.listen(source)
try:
text = r.recognize_google(audio)
print(text)
except:
print('Did not get that try Again')
text=''
if text == 'tiger':
print('good job')
pygame.mixer.Sound.play(right)
pygame.mixer.music.stop()
break
else:
if guess_counter < 3:
print('wrong try again')
pygame.mixer.Sound.play(wrong)
pygame.mixer.music.stop()
time.sleep(3)
guess_counter = 1
time.sleep(4)
elif i== 2:
guess_counter = 0
carImg = pygame.image.load(os.path.join(image_path,'monkey.jpg'))
gameDisplay.blit(carImg,(130,0))
pygame.display.update()
pygame.mixer.Sound.play(Monkey)
pygame.mixer.music.stop()
for a in range(1,4):
r = sr.Recognizer()
with sr.Microphone() as source:
print ('Say Something!')
audio = r.listen(source)
try:
text = r.recognize_google(audio)
print(text)
except:
print('Did not get that try Again')
text=''
if text == 'monkey':
print('good job')
pygame.mixer.Sound.play(right)
pygame.mixer.music.stop()
break
else:
if guess_counter < 3:
print('wrong ya wad')
pygame.mixer.Sound.play(wrong)
pygame.mixer.music.stop()
time.sleep(3)
guess_counter = 1
time.sleep(4)