美文网首页
嘟嘟嘟——为程序加入声音吧 父与子的编程之旅 学习笔记(17)2

嘟嘟嘟——为程序加入声音吧 父与子的编程之旅 学习笔记(17)2

作者: HelloFloria | 来源:发表于2018-10-20 21:38 被阅读0次

    第十九章 播放声音

    (1)mixer——混音器

    mixer是Pygame专门处理声音的模块,用pygame.mixer调用。

    (2)播放声音

    方法一:将声音文件直接复制到保存程序的同一个文件夹中

    sound_file = "my_sound.wav"

    方法二:将声音文件的位置准确地告诉Python

    sound_file = "c:\Program Files\HelloWorld\sounds\my_sound.wav"

    (3)启动pygame.mixer

    使用mixer前,通常要对mixer模块本身进行格式化(initializate):

    pygame.mixer.init()

    然后我们观察需要插入的声音:

    1,假如它只是一段很短的声音片段(如splat这个音效),保存为.wav文件中,我们可以使用mixer中的Sound对象来处理:

    splat = pygame.mixer.Sound("splat.wav")

    2,假如它是一段比较长的音乐(如bg_music这段背景乐),保存为.mp3, .wma等格式中,我们就可以使用mixer中的music模块处理:

    pygame.mixer.music.load("bg_music.mp3")

    pggame.mixer.music.play() *注:播放一次后停止

    练习一:在Pygame中播放声音

    练习二:播放音乐

    练习三:调节音乐和声音的音量

    练习四:等待结束(get_busy方法检测)

    (4)重复播放音乐:

    在mixer.music.play方法中输入重复次数,任何一个负数都视为无限循环:

    pygame.mixer.music.play(3) # 循环三次

    pygame.mixer.music.play(-1) # 重复播放

    (5)为PyPong增加声音

    1,寻找需要加声音的部分,如碰撞时发出hit_paddle的声音。这时候我们需要先在主程序中利用mixer调用“hit_paddle.wav”的声音文件,然后再碰撞检测if循环中增加hit.play()语句。

    2,相同地,需要在球碰到两边墙、碰到顶边且得分、新开始一条生命、游戏结束时都加上声音的话,先在主程序中增加hit_wall, get_point, splat, new_life, bye等wav文件,再在相应的模块中增加,如在检测self.rect.left < 0这句循环的最后中增加播放hit_wall声音。

    3,这里需要注意:由于球掉下画面后,其实还是在不断地循环碰撞的动作,所以有可能出现游戏已经结束了,但碰撞声还是不断地出现的情况。这时候我们可以采用几种方法:

    1) 游戏结束时将球的速度设置为[0,0],阻止球的移动;

    2) 检查求是否在窗底边以下,若是,则不再播放hit_wall的声音;

    3) 检查done变量,若done = True,则不再播放hit_wall声音。

    问题有很多,方法也有很多,学习的过程就是不断升级打怪不是么~

    相关文章

      网友评论

          本文标题:嘟嘟嘟——为程序加入声音吧 父与子的编程之旅 学习笔记(17)2

          本文链接:https://www.haomeiwen.com/subject/rgvmzftx.html