我需要帮助在 Replit(Pygame) 上播放声音
Posted
技术标签:
【中文标题】我需要帮助在 Replit(Pygame) 上播放声音【英文标题】:I need help playing sound on Replit(Pygame) 【发布时间】:2021-12-01 04:04:03 【问题描述】:所以我正在 Pygame 上制作游戏,并且我观看了有关如何使用 Pygame 获得声音的教程,但由于某种原因,无论我做什么,它都无法播放。我在 Replit,我曾尝试使用 Replit 库,但我也遇到了问题。我想知道我是不是写错了什么,或者它只是Replit还是它是什么。另外,如果您对循环有任何提示,以及如何在特定时间播放音乐,那就太好了。下面的代码只是一个尝试弄清楚如何制作菜单的代码,我打算在选择颜色时播放音乐。我刚刚尝试删除
pygame.init()
但是当我这样做时,一大堆东西就不再工作了,比如字体,它还说混音器没有初始化。
import pygame
import random
import time
pygame.init()
font = pygame.font.SysFont("arial", 15, True)
compwin = pygame.display.set_mode((512,512))
pygame.display.set_caption("attack")
clock = pygame.time.Clock()
music = pygame.mixer.music.load("space music.wav")
pygame.mixer.music.play(-1)
x1 = 128
y1 = 256
x2 = 256
y2 = 256
x3 = 384
y3 = 256
x4 = 251
y4 = 251
def picked():
while run:
pygame.time.delay(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run == False
if white.colliderect(red):
compwin.fill((255,0,0))
if white.colliderect(green):
compwin.fill((0,255,0))
if white.colliderect(blue):
compwin.fill((0,0,255))
pygame.display.update()
run = True
while run:
pygame.time.delay(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_1]:
x4 = x1 - 5
y4 = y1 - 5
elif keys[pygame.K_2]:
x4 = x2 - 5
y4 = y2 - 5
elif keys[pygame.K_3]:
x4 = x3 - 5
y4 = y3 - 5
compwin.fill((0,0,0))
white = pygame.draw.rect(compwin,(255,255,255), (x4,y4,42,42) )
blue = pygame.draw.rect(compwin,(0,0,255), (x2,y2,32,32) )
green = pygame.draw.rect(compwin,(0,255,0), (x3,y3,32,32) )
red = pygame.draw.rect(compwin,(255,0,0), (x1,y1,32,32) )
keys = pygame.key.get_pressed()
if keys[pygame.K_RETURN]:
picked()
pygame.display.update()
pygame.quit()
【问题讨论】:
【参考方案1】:您无法在repl
上播放pygame
中的音乐(据我所知),因为repl
在虚拟机上运行。显然,这个功能是有计划的,会及时添加。现在,我会说在不同的 IDE 上运行您的代码,这应该可以工作。
你也应该看看这个:https://docs.replit.com/misc/playing-audio-replit#playing-audio-on-replit
对于循环音频,您需要传递 -1
: pygame.mixer.music.play(loops = -1)
【讨论】:
以上是关于我需要帮助在 Replit(Pygame) 上播放声音的主要内容,如果未能解决你的问题,请参考以下文章
如何在 replit 中使用 PIL.ImageFont.truetype 加载字体文件