如何进行这项工作。我希望矩形越过屏幕中心后播放音频。
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()
我希望矩形越过窗口中心时会播放声音。但是相反,什么也没发生
答案 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()检查音乐是否正在播放。