我们已经学习了如何为程序中增加音乐音效,今天呢,木辛老师带着大家将学到的知识应用到实际的项目里。
就以咱们之前做的弹弹球游戏为例吧
传送门:
请点击右上角“关注”按钮关注我们哟:跟着木辛老师学习Python编程知识,变身快乐的编程达人吧~
我们为这个弹弹球游戏增加一些音效吧。
每次球碰到球拍的时候要增加一个声音。因为我们之前使用了碰撞检测,当球碰到球拍的时候会让他反向,只需要在这个代码块的最后添加音效播放的逻辑就可以了:
增加碰撞时音效播放逻辑
当然了,我们在这个程序之前要增加music模块的初始化过程:
初始化music模块
还有加载声效逻辑。咱们这次把声音设置为40%,不至于太吵。
运行一下听听效果吧~
嗯嗯,我这里的效果还比较满意;小朋友,你们那边效果怎么样呀?
我们增加完了这个音效以后,还想再增加更多的声音,让我们一步一步的来实现吧。
我们将会在以下几个地方增加声音
我们需要准备的是对应这些场景的声音,大家可以通过网络搜索一些音频文件,也可以自己通过麦克风配音获得。
这一些准备妥当以后,我们只需要增加新的代码就可以了:
hit_wall = pygame.mixer.Sound(“hit_wall.wav") hit_wall.set_volume(0.4) get_point = pygame.mixer.Sound(“get_point.wav") get_point.set_volume(0.2) new_life = pygame.mixer.Sound(“new_life.wav”) new_life.set_volume(0.5) bye = pygame.mixer.Sound(“game_over.wav”) bye.set_volume(0.6)
在这的代码里,我们设置了不同的音量,只是为了试试哪个音量听起来更合适。当然了,你可以按照自己的喜好来设置。但是一定记住,所有的音频文件都有复制到当前代码的位置哟!
下一步就是在发生事件时的响应代码中增加play()方法。
只要碰到窗口左右两边就发出hit_wall的声音:这个事件在球的move()方法中检测,我们还要让球的x速度反向(使球在两边”反弹“)。
增加碰撞时音效播放逻辑
同理,我们在检测到球碰到窗口顶边的时候,播放get_point的音效。在这里,仍然需要将球反弹,并为玩家 1分。
增加碰撞时音效播放逻辑
其他事件逻辑,按照这两个例子修改即可,这里我们给小朋友们留下动手实验题目,请大家私信我们你们的做法哟!
做到这里,我们的程序添加音效的时候已经差不多了~
哎呀!好像我们落了一件事。
播放bye声音和gong声音的代码放到了主while循环中,Pygame窗口关闭前他们是不会停止的(笑哭),所以只要while循环还在运行,声音就会反复播放!这应该怎么修改呢?
嗯······
我们想了一下,可以这么修改。在谈谈球游戏里,我们有一个done变量是用来控制游戏什么时候结束的,通过这个变量,我们就可以控制播放bye声音和gong声音了~嗯嗯,小小的自我表扬一下!
增加碰撞时音效播放逻辑
好了,咱们的程序修改完了,小朋友们试一下看看效果如何吧!
“嘣,嘣,嘣”
咦??? 游戏结束了,但是好像还有小球撞击的声音呢?这是怎么回事呀?
嗯······
这个问题可能需要稍微考虑一下。
我们修改的代码里,通过done变量来通知我们游戏什么时候结束,利用这一点,我们能够知道什么时候播放bye声音,什么时候显示最后的分数消息。
但是大家有没有想过,这时候小球在干吗?
尽管小球这个时候已经到达了窗口的底边,但是他还在不停地移动呀!
球继续的向下走,在碰撞的道路上越走越远,没有什么可以阻止它了。
虽然我们看不到它,但是仍然能够听到声音!
球只要在运动,当它的x值变得足够大或者足够小的时候,它就会碰撞左右两边!这种情况发生在move()方法中,只要while循环在运行,这个方法就一直有效。
解决办法大概有这么几种:
大家可以根据自己的情况,选择适当的方式实现一下。
嗯嗯,这次,我们的程序算是完全捯饬完了,应该也算是一个比较精致的小游戏了,大家也可以玩很久了!
经过这两次的学习,小朋友们对游戏编程中的音效和声音,是不是有了很深入的了解了呀!
我们在本节课的最后,复习一下之前学过的内容吧~
小朋友们不要忘记关注我们哟 ,下期课程更精彩,请大家一起期待吧~
快乐编程,快乐成长,拜拜!
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved