10分钟,再次改造弹弹球游戏,木辛老师带你领略不一样的音效声音

10分钟,再次改造弹弹球游戏,木辛老师带你领略不一样的音效声音

首页休闲益智弹弹球世界更新时间:2024-04-09

我们已经学习了如何为程序中增加音乐音效,今天呢,木辛老师带着大家将学到的知识应用到实际的项目里。

就以咱们之前做的弹弹球游戏为例吧

传送门:

请点击右上角“关注”按钮关注我们哟:跟着木辛老师学习Python编程知识,变身快乐的编程达人吧~

我们为这个弹弹球游戏增加一些音效吧。

每次球碰到球拍的时候要增加一个声音。因为我们之前使用了碰撞检测,当球碰到球拍的时候会让他反向,只需要在这个代码块的最后添加音效播放的逻辑就可以了:

增加碰撞时音效播放逻辑

当然了,我们在这个程序之前要增加music模块的初始化过程:

初始化music模块

还有加载声效逻辑。咱们这次把声音设置为40%,不至于太吵。

运行一下听听效果吧~

嗯嗯,我这里的效果还比较满意;小朋友,你们那边效果怎么样呀?

我们增加完了这个音效以后,还想再增加更多的声音,让我们一步一步的来实现吧。

我们将会在以下几个地方增加声音

  1. 球碰到两边的墙壁时
  2. 球碰到顶边而玩家得分时
  3. 玩家漏球了,球碰到了底边时
  4. 新的一条命开始时
  5. 游戏结束时

我们需要准备的是对应这些场景的声音,大家可以通过网络搜索一些音频文件,也可以自己通过麦克风配音获得。

这一些准备妥当以后,我们只需要增加新的代码就可以了:

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循环在运行,这个方法就一直有效。

解决办法大概有这么几种:

  1. 游戏结束时把球的速度设置为[0, 0]来阻止球继续移动
  2. 查看球是否在窗口底边一下,如果是,就停止播放hit_wall的声音
  3. 检查done变量,如果游戏结束了就不在播放hit_wall声音。

大家可以根据自己的情况,选择适当的方式实现一下。

嗯嗯,这次,我们的程序算是完全捯饬完了,应该也算是一个比较精致的小游戏了,大家也可以玩很久了!

经过这两次的学习,小朋友们对游戏编程中的音效和声音,是不是有了很深入的了解了呀!

我们在本节课的最后,复习一下之前学过的内容吧~

  1. 可以用哪几种类型的文件存储声音?
  2. 如何设置一个Pygame声音对象的音量?
  3. 如何设置背景音乐的音量?

小朋友们不要忘记关注我们哟 ,下期课程更精彩,请大家一起期待吧~

快乐编程,快乐成长,拜拜!

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved