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()
我希望当矩形穿过窗口中心时会播放声音。但是什么都没有发生
解决方案
首先,你有一个错字:
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()检查音乐是否正在播放。
推荐阅读
- html - 内容不够溢出时如何粘底?
- excel - 在 Excel 中查找今天和特定日期之间的月数
- python - 在 For 循环中更新字典中的变量
- javascript - webcomponents 中允许的页面上的非唯一 ID
- swift - 如何通过 UIButton 从 DetailViewController 将数据发送到 TableViewController?
- android - 打开蓝牙启动 MediaBrowserServiceCompat
- azure - 如何在 Azure 容器实例中设置 cloud_RoleName?
- d3.js - d3将文本悬停到剪贴路径
- python - 如何从用户代理标题中删除方括号?
- google-play - Google play 无法识别电子邮件地址(内部测试)