Pygame:播放声音和音效


🚴大家好!我是近视的脚踏实地,虽然近视,但是脚踏实地,这一篇来学习游戏中的播放音乐和音效,然后继续完善未完成的小游戏

(一)概念

首先几乎没有什么游戏是一声不吭的,多重的感官体验更能刺激玩家的神经,没有声音的游戏就好比 不蘸番茄的薯条,忘记带枪的战士!

尽管如此,Pygame 对于声音的处理并不是太理想,我说的是如果你想用 Pygame 做一个炫酷的音乐播放器那可能会让你失望,因为Pygame对于声音格式的支持十分有限,不过对于游戏开发来说,这完全是足够的,我们需要的我们自己转换就可以了。

一般游戏来说,声音主要分为两种,一种是背景音乐,一种是音效。

背景音乐就是时刻伴随着游戏存在的,往往就是重复播放的一首曲子或者歌曲;

音效就是在某种条件下被触发产生的,比如飞机相撞会发出爆炸的声音

Pygame 支持的声音格式十分有限,一般情况下我们使用 .ogg 的格式来做背景音乐,用无压缩的 .wvb 来作为音效。

如果是拿到了一个 .mp3 格式,可以使用格式工厂这类的软件把它转为**.ogg** 或者 .wvb 格式,

还需要注意的是music 模块虽然写了支持 .mp3 格式,但是它对 .mp3 格式的支持十分有限,经常你会在网上找到一段很好的 .mp3 的曲子,但是载入之后压根没有声音。你把它转为 .ogg 格式就可以很好的支持了。

(二)播放声音和音效

1️⃣播放音效

—pygame.mixer.Sound()

播放音效我们使用 mixer 模块,在使用之前需要先生成一个Sound对象 ,对这个Sound对象进行控制,Sound 对象 的 play() 方法就是播放音效。

—Sound对象的方法

方法

含义

play()

播放音效

stop()

停止播放

fadeout()

淡出

set_volume()

设置音量

get_volume()

获取音量

get_num_channels()

计算该音效播放了多少次

get_length()

获得该音效的长度

get_raw()

将该音效以二进制格式的字符串返回

2️⃣播放背景音乐

—pygame.mixer.music

播放背景音乐我们使用 music 模块,music 模块和 mixer 模块是紧密关联的,所以我们用 .mixer.music 他是在mixer里边的

—music模块方法

方法

含义

load()

载入音乐

play()

播放音乐

rewind()

重新播放

stop()

停止播放

pause()

暂停播放

unpause()

恢复播放

fadeout()

淡出

set_volume()

设置音量

get_volume()

获取音量

get_busy()

检测音乐流是否正在播放

set_pos()

设置开始播放的位置

get_pos()

获取已经播放的时间

queue()

将音乐文件放入待播放列表中

set_endevent()

在音乐播放完毕时发送事件

get_endevent()

获取音乐播放完毕时发送的事件类型

(三)小试牛刀

在这里插入图片描述
下面先来写个例子练练手,要求是打开程序就会自动播放背景音乐bg_music.ogg,然后当你在窗口中点击鼠标左键,就会播放 winner.wav 音效,当点击鼠标右键,就会播放 loser.wav 音效;点击空格键就暂停背景音乐,再次点击就继续播放。

import pygame
import sys
from pygame.locals import *

pygame.init()

pygame.mixer.init()

pygame.mixer.music.load("bg_music.ogg")
pygame.mixer.music.set_volume(0.2)
pygame.mixer.music.play()

winner_sound = pygame.mixer.Sound("winner.wav")
winner_sound.set_volume(0.2)

loser_sound = pygame.mixer.Sound("loser.wav")
loser_sound.set_volume(0.2)

bg_size = width,height = 300,200
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("Music Monster Demo")

pause = False


pause_image = pygame.image.load("pause.png").convert_alpha
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值