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

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

GIF.gif

声音的力量

对于游戏,需要一个“射击”声音和一个“爆炸”声音。创建一个“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')

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

# Load all game sounds
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()

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

# Load all game sounds
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)))

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

    # check to see if a bullet hit a mob
    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)
# Game loop
running = True

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值