【问题标题】:Playing midi on Pygame在 Pygame 上玩 midi
【发布时间】:2013-05-30 13:35:48
【问题描述】:

好的,这就是我得到的:

import pygame
import sys

from pygame.locals import *

bif="bg.jpg"
mif="pkmn.png"
sif="bubble.png"
song_1="testaudio.mid"

pygame.init()

FPS = 30  # FPS
FPSCLOCK = pygame.time.Clock()  # FPS

screen = pygame.display.set_mode ((600,375),0,32)

intro=pygame.mixer.Sound(song_1)
intro.play()

background = pygame.image.load(bif).convert()

pygame.mouse.set_visible(0)

char = pygame.image.load(mif).convert_alpha()
x = screen.get_width()/2 - char.get_width()/2
y = screen.get_height() - char.get_height()

bubble = pygame.image.load(sif).convert_alpha()
shoot_y = 0

move_speed = 15  # FPS

while True:

    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    pressed = pygame.key.get_pressed()
    if pressed[K_LEFT]:
        x -= move_speed
    if pressed[K_RIGHT]:
        x += move_speed
    if pressed[K_UP]:
        y -= move_speed
    if pressed[K_DOWN]:
        y += move_speed

    if event.type==KEYDOWN:
        if event.key==K_SPACE:
            shoot_y = y
            shoot_x = x

    screen.blit(background,(0,0))

    if shoot_y > 0:
        screen.blit(bubble,(shoot_x, shoot_y))
        shoot_y -= 10


    screen.blit(char,(x,y))

    pygame.display.update()
    FPSCLOCK.tick(FPS)  # FPS

所以我创建了一些 midi 文件,但是我不断收到“无法打开文件 'testaudio.mid”,我尝试了很多,但我真的很困惑,我是 pygame 的新手,但不知道这个,我到处找,但仍然无法让它工作,即使在同一个网站上,但仍然无法弄清楚。

我真的希望有人可以通过修改我的代码或向我展示一些更清晰示例的方法来帮助我,因为我一直无法理解我找到的那个。

谢谢(:

【问题讨论】:

  • 你的音频文件和python文件在同一个目录吗?

标签: pygame midi


【解决方案1】:

以下代码将播放当前目录下的music.mid

import pygame
pygame.init()

pygame.mixer.music.load("music.mid")
pygame.mixer.music.play()

【讨论】:

    【解决方案2】:

    如果你有一个简单的程序在播放指令后退出,音乐播放 将停止。

    你应该添加以下两行:

    while pygame.mixer.music.get_busy():
        pygame.time.wait(1000)
    

    防止程序在音乐播放完毕之前退出。

    【讨论】:

      【解决方案3】:

      根据上面的答案,您可以使用

      找到 midi 文件的长度,而不是等待 1000
      length = pygame.time.get_ticks()
      

      然后将等待时间设置为length

      【讨论】:

      • 我想你在谈论我的答案,目前低于你的答案,而不是高于你的答案。我检查了文档,pygame.time.get_tics() 只获取自 pygame 启动以来经过的滴答数,而不是 midi 文件的长度。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多