python及pygame雷霆战机游戏项目实战08 声音和音乐

在这个系列中,将制作一个雷霆战机游戏。

python及pygame雷霆战机游戏项目实战08 声音和音乐

; 声音的力量

对于游戏,需要一个”射击”声音和一个”爆炸”声音。创建一个”snd”文件夹(就像为图像所做的那样)并将WAV文件放在那里。

为游戏添加声音

将声音添加到游戏中。需要指定声音文件夹的位置:


import pygame
import random
from os import path

img_dir = path.join(path.dirname(__file__), 'image')
snd_dir = path.join(path.dirname(__file__), 'snd')

接下来,需要加载声音文件。


shoot_sound = pygame.mixer.Sound(path.join(snd_dir, 'pew.wav'))

将声音加载并分配给变量 shoot_sound,希望每当玩家发射子弹时都会播放声音,所以将其添加到 shoot()方法中:

    def shoot(self):
        bullet = Bullet(self.rect.centerx, self.rect.top)
        all_sprites.add(bullet)
        bullets.add(bullet)
        shoot_sound.play()

接下来,添加爆炸声。将加载它们并将它们放在一个列表中:


shoot_sound = pygame.mixer.Sound(path.join(snd_dir, 'pew.wav'))
expl_sounds = []
for snd in ['expl3.wav', 'expl6.wav']:
    expl_sounds.append(pygame.mixer.Sound(path.join(snd_dir, snd)))

为了让爆炸发挥作用,每当摧毁流星时,都会随机选择其中一个播放:


    hits = pygame.sprite.groupcollide(mobs, bullets, True, True)
    for hit in hits:
        score += 50 - hit.radius
        random.choice(expl_sounds).play()
        m = Mob()
        all_sprites.add(m)
        mobs.add(m)

音乐

最后要做的是添加一些背景音乐,这将为游戏带来很多个性和情感。

首先,加载音乐:

expl_sounds = []
for snd in ['expl3.wav', 'expl6.wav']:
    expl_sounds.append(pygame.mixer.Sound(path.join(snd_dir, snd)))
pygame.mixer.music.load(path.join(snd_dir, 'tgfcoder-FrozenJam-SeamlessLoop.ogg'))
pygame.mixer.music.set_volume(0.4)

这个音乐文件恰好相当响亮,不希望它压倒其他声音,所以也将音量设置为最大音量的40%。

要播放音乐,您只需选择歌曲应该在代码中的哪个位置开始播放,在情况下就是在游戏循环开始之前:

score = 0
pygame.mixer.music.play(loops=-1)

running = True

loops参数是指定你想要的歌曲重复播放的次数。通过设置 loops-1,把它无限重复。

在下一课中,将为玩家添加一些盾牌,这样就不会那么容易死亡。

Original: https://blog.csdn.net/douyh/article/details/121340137
Author: 豆约翰
Title: python及pygame雷霆战机游戏项目实战08 声音和音乐

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/783994/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球