加入收藏 | 设为首页 |

ope体育投注-Python小讲堂第20课:无声的游戏编程多无聊呀,让我们加上声响吧

海外新闻 时间: 浏览:286 次

开发精巧的游戏,除了精巧的交互规划、可玩性和平衡性,本来游戏的音乐音效也是十分重要的啊!

请点击右上角“重视”按钮重视咱们,跟着木辛教师浅显易懂的做出一款经典游戏吧!

经过前几次课程的学习,咱们现已学到了关于图形、动画精灵、磕碰、动画和工作的常识,而且经过咱们现已学习到的常识制作了第一个游戏:弹弹球

传送门:Python小讲堂之贪玩的木辛教师:做一个弹弹球游戏吧

在今日的课程里,咱们将会增加一个新的内容:声响。

为了让程序愈加的风趣,愈加的好玩,视频游戏和许多其他的程序都会参加许多声响。

声响既能够作为输入,也能够作为输出。作为输入,需求一个麦克风或许其他音源连接到核算机,程序会把声响记录下来,或许做其他的处理。

可是呢,声响作为输出更常见。

mixer

有些内容或许会比较复杂,比方图形,声响也是如此。

由于不同ope体育投注-Python小讲堂第20课:无声的游戏编程多无聊呀,让我们加上声响吧的核算机播映声响的硬件和软件不同;为了让问题更简略一些,咱们计划请Pygame帮助。

Pygame中有一个处理声响的模块:pygame.mixer。在实在国际中,取不同的声响并把它们混合在一同叫做“混音器(mixer)”,在Pygame中的模块也正是如此。

程序发生声响有两种根本办法

  1. 能够生成或许组成声响,便是指制作不同的音高和音量的声波来从头创立声响
  2. 能够播映一段录制好的声响,能够是CD上的音乐,也能够是MP3声响文件

播映声响

播映声响时,要从硬盘(或许互联网)得到一个声响文件,把它转换成能够在核算机的扬声器或许耳机上听到的声响。核算机上能够运用多种不同类型的声响文件,比方:

  1. 波形文件:以.wav结束的文件
  2. MP3文件:以.mp3结束的文件
  3. WMA(Windows媒体音频)文件:以.wma结束的文件
  4. Ogg文件:以.ogg结束的文件

在咱们的比方里,首要是以.wav和.mp3文件为主,并将这些音频文件放置到程序目录的sounds子文件夹下。

Python会在这儿查找文件,所以能够在程序中直接运用这个文件的名,比方:

sound_file = "./sounds/my_sound.wav"

当然了,假如声响文件没有复制到程序地点的同一个目录下,就需求将文件的完好途径告知Python,比方

sound_file = "/PycharmProjects/PygameDemo/sounds/my_sound.wav"

发动 pygame.mixer

播映声响之前,咱们需求先初始化 pygame.mixer。咱们还记得初始化是什么意思嘛?指的是开端时让某个东西做好预备。

让pygame.mixer做好预备,只需求在初始化Pygame之后增加一行代码:

pygame.mixer.init()

所以,完好的程序最初能够这么写:

import pygame
pygame.init()
pygame.mixer.init()

现在咱们现已做好了播映声响的预备。这些程序首要运用了两种类型的声响。第一种是音效或许声响片段。这些声响往往很短,一般保持在.wav文件中。

关于这种类型的声响,pygame.mixer会运用一个Sound目标,比方说像这样:

gong = pygame.mixer.Sound("gong.wav")
gong.play()

另一种运用的声响是音乐。音乐大多存储在.mp3、.wma或许.ogg文件中。要播映这些音乐,Pygame会运用mixer中的music模块。

pygame.mixer.music.load(“bg_music.mp3")
pggame.mixer.music.play()

这样歌曲会播映一次,然后中止。

咱们的比方能够这么写:

播映音效声响

运转一下这个程序试试作用吧(咱们能够自己找找可用的wav文件,只需能作声即可,没有特别要求)

现在咱们试着改一下程序,运用mixer.music模块播映一些音乐:

播映音乐声响

小朋友们有没有注意到,咱们暂时先将音效播映的代码注释掉了,运用的是咱们之前讲到的注释的内容

传送门:Python小讲堂 第十一课之 为了咱们之间的交流 增加注释吧

好了,修正后的代码运转一下试试作用吧。

哦!声响好大呀!咱们有必要把核算机的音量调小一些才行,不然咱们会被这么大的声响震聋的!

操控音量

能够运用音量操控开关来操控核算机上的声响音量。

在Windows体系上,这是运用体系托盘里的小扬声器图表完结的。这个设置会操控核算机上一切声响的音量。

不过除此之外,咱们还能够操控Pygame发送到核算机声卡的音量。

让咱们经过比方来看作用吧

修正操控音量

要设置音乐的音量,需求运用

pygame.mixer.music.set_volume(0.30)

而声响目标是pong,所以咱们运用

gong.set_volume(0.50)

音量是一个介于0到1的浮点数;比方:0.50便是最大音量的50%,也便是一半。

咱们处理了声响音量的问题之后,还有一个问题需求咱们处理。

咱们现在的比方是,只需程序开端运转,布景音乐和音效就一同开端作业了,或许咱们需求操控一下,让他们依照咱们期望的办法作业呢?

那好,就让咱们测验一下吧~

不过呢,在咱们测验之前,需求先了解下布景音乐作业机制:布景音乐是指玩游戏时在布景播映的音乐。

所以一旦开端播映布景歌曲,Pygamope体育投注-Python小讲堂第20课:无声的游戏编程多无聊呀,让我们加上声响吧e有必要做好预备来做其他的工作,比方移动动画精灵,或许查看鼠标或许键盘工作。

可是,假如咱们想知道歌曲什么时候结束enter该怎么办呢?

咱们或许期望等这首歌曲播映结束之后会告诉咱们一下。

为此,Pygame供给了一种办法:你能够问询mixer.music模块ope体育投注-Python小讲堂第20课:无声的游戏编程多无聊呀,让我们加上声响吧是否还在忙于播映一首歌。假如忙,则阐明歌曲还没播映结束;假如不忙,阐明歌曲现已结束了。

好了,咱们看看比方吧

判别音效播映结束

嗯是不是很简略呀!咱们只需求在while循环里面,经过

pygame.mixer.music.get_busy()

检测当时模块是否繁忙,假如这个函数回来True,则阐明当时模块很忙;假如不忙的话,就会回来False。那么就会履行这个代码块的下一个句子,播映音效并在等候1秒后退出程序。

不过有时候,咱们的游戏时刻或许比较长,咱们的布景音乐在播映完一遍后,就不会再有声响了,这样咱们正好的游戏又回到了幽静的年代,这可怎么办呢?

Pygame为咱们供给了一个机制,能够满意咱们的这个需求,music模块可做到让音乐重复播映必定的次数,比方

pygame.mixer.music.play(3)

这样,歌曲就会接连播映3遍。假如传入一个特别值:-1的话,这会让歌曲永久重复下去,直到咱们关闭程序停止。

小朋友们今日是不是又学到了许多常识呀!跟着咱们课程的持续,小朋友们编程的水平也在逐日进步。

在不知不觉中,咱们都深深的爱ope体育投注-Python小讲堂第20课:无声的游戏编程多无聊呀,让我们加上声响吧上了编程,也在学习中逐步让咱们的程序有了美好的声响,咱们觉得这是不是十分有意义呀!

好了,今日的课程就到这儿吧,咱们下期再会!

小朋友们不要忘掉重视咱们哟 ,下期课程更精彩,请咱们一同等待吧~

高兴编程,高兴生长,拜拜!