項(xiàng)目詳細(xì)介紹
在這個(gè)系列中,將制作一個(gè)雷霆戰(zhàn)機(jī)游戲。

GIF.gif
聲音的力量
對(duì)于游戲,需要一個(gè)“射擊”聲音和一個(gè)“爆炸”聲音。創(chuàng)建一個(gè)“snd”文件夾(就像為圖像所做的那樣)并將WAV文件放在那里。
請(qǐng)注意,有兩種爆炸聲。這樣,可以在它們之間隨機(jī)選擇,讓流星爆炸中有一點(diǎn)變化。
最后,需要一些背景音樂。
為游戲添加聲音
將聲音添加到游戲中。需要指定聲音文件夾的位置:
# Frozen Jam by tgfcoder <https://twitter.com/tgfcoder> licensed under CC-BY-3
# Art from Kenney.nl
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,希望每當(dāng)玩家發(fā)射子彈時(shí)都會(huì)播放聲音,所以將其添加到shoot()方法中:
def shoot(self):
bullet = Bullet(self.rect.centerx, self.rect.top)
all_sprites.add(bullet)
bullets.add(bullet)
shoot_sound.play()
接下來,添加爆炸聲。將加載它們并將它們放在一個(gè)列表中:
# 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)))
為了讓爆炸發(fā)揮作用,每當(dāng)摧毀流星時(shí),都會(huì)隨機(jī)選擇其中一個(gè)播放:
# 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)
音樂
最后要做的是添加一些背景音樂,這將為游戲帶來很多個(gè)性和情感。
首先,加載音樂:
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)
這個(gè)音樂文件恰好相當(dāng)響亮,不希望它壓倒其他聲音,所以也將音量設(shè)置為最大音量的40%。
要播放音樂,您只需選擇歌曲應(yīng)該在代碼中的哪個(gè)位置開始播放,在情況下就是在游戲循環(huán)開始之前:
score = 0
pygame.mixer.music.play(loops=-1)
# Game loop
running = True
該loops參數(shù)是指定你想要的歌曲重復(fù)播放的次數(shù)。通過設(shè)置loops到-1,把它無限重復(fù)。
在下一課中,將為玩家添加一些盾牌,這樣就不會(huì)那么容易死亡。