首页 » 父与子的编程之旅:与小卡特一起学Python » 父与子的编程之旅:与小卡特一起学Python全文在线阅读

《父与子的编程之旅:与小卡特一起学Python》19.8 为 PyPong 添加音乐

关灯直达底部

还有一件事要做,就是添加音乐。需要加载音乐文件,设置音量,然后开始播放。我们希望玩游戏期间音乐一直在重复,所以会使用特殊值 -1,如下:

pygame.mixer.music.load("bg_music.mp3")pygame.mixer.music.set_volume(0.3)pygame.mixer.music.play(-1)  

这个代码可以放在主 while 循环前面的任意位置。它会开始播放音乐。现在只需要在最后让音乐停下来,有一个很好的办法来做到这一点。pygame.mixer.music 有一个 fadeout 方法,会让音乐淡出(逐渐减弱直到消失),而不是戛然而止。只需要告诉它淡出需要多长时间,例如:

pygame.mixer.music.fadeout(2000)  

这里设置为 2000 毫秒,也就是 2 秒。这一行可以与 done = True 设置放在同一个位置。(这个设置在前在后都无关紧要。)

现在程序已经增加了音效和音乐。试试看听起来怎么样!也许你想看看如何把所有这些内容整合在一起,下面给出这个程序的最后版本,也就是代码清单 19-5。一定要确保 wackyball.bmp 和所有声音文件与程序在同一个文件夹中。

代码清单 19-5 有声音和音乐的 PyPong

这个代码太长了!(大约 100 行,还要加上一些空行。)这个程序完全可以写得短一些,不过那样一来,读代码和理解起来都会更困难。其实这几章我们一直都在构建这个程序,每章补充一点内容,所以你并不需要一次键入所有这些代码。

如果你是按顺序读这本书,现在应该已经了解程序的各个部分分别做什么,也应该知道这些部分如何整合到一起。不过万一你需要这个程序的完整代码,也可以在 /examples 文件夹(如果已经安装本书的安装程序的话)和网站上找到这个程序的代码清单。

在下一章,我们将建立一个不同类型的图形程序:一个有按钮、菜单的程序,也就是一个 GUI。

你学到了什么

在这一章,你学到了以下内容。

  • 如何向程序添加声音。

  • 如何播放声音片段(通常是 .wav 文件)。

  • 如何播放音乐文件(通常是 .mp3 文件)。

  • 如何知道一个声音已经播放完毕。

  • 如何控制音效和音乐的音量。

  • 如何让音乐重复,使它反复播放。

  • 如何让音乐淡出。

测试题

1. 可以用哪几种类型的文件存储声音?

2. 哪个 Pygame 模块用来播放音乐?

3. 如何设置一个 Pygame 声音对象的音量?

4. 如何设置背景音乐的音量?

5. 如何让音乐淡出?

动手试一试

试着向第 1 章中的猜数游戏添加声音。尽管这个游戏是文本模式的,但与这一章中的例子一样,仍然需要增加一个 Pygame 窗口。/examples/sounds 文件夹(和网站上)有一些声音可供你使用:

  • Ahoy.wav

  • TooLow.wav

  • TooHigh.wav

  • WhatsYerGuess.wav

  • AvastGotIt.wav

  • NoMore.wav

或者,你也可以录制自己的声音,这可能很有意思。可以使用一个录音工具,比如 Windows 中的 Sound Recorder,或者可以从 audacity.sourceforge.net/ 下载一个免费程序 Audacity(很多操作系统上都提供了这个工具)。