繁体   English   中英

循环中的 Pygame 混合器

[英]Pygame mixer in loop

我正在设计一个关于 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)

您可以创建一个名为“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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM