Pygame,我想让它播放声音

时间:2019-05-03 17:19:51

标签: python pygame

如何进行这项工作。我希望矩形越过屏幕中心后播放音频。

import pygame
from pygame import*

pygame.init()
mixer.init()

win=pygame.display.set_mode((600,00))
pygame.display.set_caption("bla")

x=20
y=20

width=10
height=10

run=True
while run:
    pygame.time.delay(10)

    for event in pygame.event.get():
        if event == pygame.QUIT:
            run= False


    keys = pygame.key.get_pressed()

    if keys [pygame.K_LEFT] :
        x-=4
    if keys [pygame.K_RIGHT]:
        x+=4
    if keys [pygame.K_UP]:
        y-=4
    if keys [pygame.K_DOWN]:
        y+=4

    if 350 < x < 450 and 350 < y < 450:
        mixer.music.load('music.wav')
        mixer.music.play(0)




    win.fill((0,0,0))
    pygame.draw.circle(win,(255,0,0),(300,300),(10))
    pygame.draw.rect(win,(255,0,0),(x,y,width,height))
    pygame.display.update()

我希望矩形越过窗口中心时会播放声音。但是相反,什么也没发生

1 个答案:

答案 0 :(得分:0)

首先,您有一个错字:

win=pygame.display.set_mode((600,00))
#                                ^^^^

我想应该是:

win=pygame.display.set_mode((600,600))

要测试您的代码,可以添加一个灰色矩形区域以显示光标应在何处开始播放音乐,从而确定必须将光标放在何处。

win.fill((0,0,0))
pygame.draw.rect(win, (100, 100, 100), (350, 350, 100, 100)) #this is the rectagle where the music starts
pygame.draw.circle(win,(255,0,0),(300,300),(10))
pygame.draw.rect(win,(255,0,0),(x,y,width,height))
pygame.display.update()

实际上并不是真正位于屏幕的中心,因此也许您需要调整坐标。将x和y缩小100,以使其在600x600屏幕上居中。

还请注意,直到光标停留在该区域之前,您将听不到任何声音,因为实际上您是在每次迭代时开始播放音乐。每次迭代时都会倒带音乐。
但是,当您离开该区域时,它将开始。要使它在您进入广场时开始播放,请检查音乐是否已经在播放,并仅在什么都没有播放时才开始播放:

if 350 < x < 450 and 350 < y < 450:
    if not mixer.music.get_busy():
        mixer.music.load('music.wav')
        mixer.music.play(0)

pygame.mixer.music.get_busy()检查音乐是否正在播放。