Menu
CoddyTech

音を読み込む

CoddyのPygameジャーニー「サウンドとゲームの手応え」セクションの一部。レッスン 1/23。

pygame では pygame.mixer.Sound を使って短いサウンドを再生します。サウンドファイルのパスを渡すと、Sound オブジェクトが得られます。

jump_sound = pygame.mixer.Sound("assets/sounds/jump.ogg")

pygame.init() はミキサーを起動するので、その後に Sound を作成します。各 Sound はループの前に一度だけ作成します。読み込みではディスクからファイルを読み取ります。ループ内で読み込むと、1 秒間に 60 回読み取ることになります。

再生するタイミングが来たら、play() を呼び出します。

jump_sound.play()

play() はサウンドの再生を開始し、すぐに戻ります。サウンドが聞こえている間もゲームは動き続け、同じ Sound を再生が終わる前にもう一度再生できます。

assets/sounds/ フォルダーには、使用できるサウンドが入っています。jump、coin、powerup、laser、explosion、hit など、すべて .ogg ファイルです。ゲームの横にある Assets タブを開くと、サウンドを聞くことができます。

challenge icon

チャレンジ

簡単

緑色の四角形は、スペースキーを押すとジャンプします。音を鳴らすようにしましょう。

  1. ループの前に、assets/sounds/jump.ogg を jump_sound に読み込みます。
  2. ジャンプが始まる箇所で、speed_y = -14 の隣に jump_sound.play() を呼び出します。

自分で試してみよう

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Jump")
clock = pygame.time.Clock()

player = pygame.Rect(220, 280, 40, 40)
speed_y = 0

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE and player.bottom == 320:
                speed_y = -14

    speed_y += 1
    player.y += speed_y
    if player.bottom > 320:
        player.bottom = 320
        speed_y = 0

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 80, 100), (0, 320, 480, 40))
    pygame.draw.rect(screen, (90, 200, 120), player)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

サウンドとゲームの手応えのすべてのレッスン

自分で練習してみよう: Pygameプレイグラウンド