我需要帮助在 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) 上播放声音的主要内容,如果未能解决你的问题,请参考以下文章

两个不同的音频文件在左声道和右声道播放与pygame

pygame / python中的文本输入框[重复]

如何在 replit 中使用 PIL.ImageFont.truetype 加载字体文件

在 pygame Windows 中播放声音的问题

无法设置未定义的属性“区域设置”,不能在 replit 中工作,但在我的电脑上

如何在pygame中从特定时间开始播放音频文件