Linux中國

添加聲音到你的 Python 遊戲

在 Python 3 中使用 Pygame 模塊來創建電腦遊戲的系列文章仍在進行中,這是第十三部分。先前的文章是:

  1. 通過構建一個簡單的擲骰子遊戲去學習怎麼用 Python 編程
  2. 使用 Python 和 Pygame 模塊構建一個遊戲框架
  3. 如何在你的 Python 遊戲中添加一個玩家
  4. 用 Pygame 使你的遊戲角色移動起來
  5. 如何向你的 Python 遊戲中添加一個敵人
  6. 在 Pygame 遊戲中放置平台
  7. 在你的 Python 遊戲中模擬引力
  8. 為你的 Python 平台類遊戲添加跳躍功能
  9. 使你的 Python 遊戲玩家能夠向前和向後跑
  10. 在你的 Python 平台類遊戲中放一些獎勵
  11. 添加計分到你的 Python 遊戲
  12. 在你的 Python 遊戲中加入投擲機制

Pygame 提供了一種簡單的方法來集成聲音到你的 Python 電腦遊戲中。Pygame 的 mixer 模塊 可以依據命令播放一個或多個聲音,並且你也可以將這些聲音混合在一起,例如,你能夠在聽到你的英雄收集獎勵或跳過敵人聲音的同時播放背景音樂。

集成 mixer 模塊到一個已存在的遊戲中是很容易的,因此,與其給你代碼示例來向你展示放置它們的位置,不如在這篇文章解釋在你的應用程序中獲得聲音所需的四個步驟。

啟動 mixer

首先,在你代碼的設置部分,啟動 mixer 進程。你的代碼已經啟動 Pygame 和 Pygame 字體,因此將它們歸類到一起是一個很好的主意:

pygame.init()
pygame.font.init()
pygame.mixer.init() # add this line

定義聲音

接下來,你必需定義你想要使用的聲音。這樣就要求你的計算機上有聲音文件,就像使用字體就要求你有字體文件,使用圖像就要求你有圖像文件一樣。

你還必需把這些聲音與你的遊戲捆綁在一起,以便任何玩你遊戲的人都有這些聲音文件。

為將一個聲音與你的遊戲捆綁在一起,首先在你的遊戲目錄中創建一個新的目錄,就像你為你圖像和字體創建的目錄一樣。稱它為 sound:

s = 'sound'

儘管在互聯網上有很多聲音文件,下載這些聲音文件並將其與你的遊戲一起分發並不一定是合法的。這看起來是很奇怪的,因為這麼多來自著名電腦遊戲的聲音是流行文化的一部分,但法律就是這樣運作的。如果你想與你的遊戲一起分發一個聲音文件,你必需找到一個開源或共創許可的聲音文件,它們准許與遊戲一起提供聲音。

這裡有一些專門提供自由和合法的聲音文件的網站,包括:

一些聲音文件只要你給予作曲家或聲音設計師一個致謝就可以自由使用。在與你的遊戲捆綁前,仔細閱讀使用條件!音樂家和聲音設計師在聲音上的工作就像你在代碼上的工作一樣努力,因此即使他們不要求,給予他們致謝也是極好的。

給予你的聲音源文件一些致謝,在一個名為 CREDIT 的文本文件中列出你使用的聲音,並在你的遊戲文件夾中放置該文本文件。

你也可以嘗試製作你自己的音樂。優秀的 LMMS 音頻工作站易於使用,並帶有很多有趣的聲音。它在所有主要的平台上都可以使用,也可以導出為 Ogg Vorbis(OGG)音頻格式。

添加聲音到 Pygame

當你找到你喜歡的一個聲音文件時,下載它。如果它是一個 ZIP 或 TAR 文件,提取它並將其移動到你遊戲目錄中的 sound 文件夾中。

如果聲音文件的名字帶有空格或特殊字元,重新命名它。文件名稱是完全隨意的,它的名稱越簡單,你就越容易輸入到你的代碼中。

大多數的電腦遊戲使用 OGG 格式聲音文件,因為這種格式可以佔有較小空間而提供高質量的聲音。當你下載一個聲音文件時,它可能是一個 MP3、WAVE、FLAC 或者其它的音頻格式。為保持你的文件的較高兼容性和降低下載文件大小,使用一個像 fre:ac 或 Miro 這樣的工具來轉換這些的文件格式為 Ogg 格式。

例如,假設你已經下載一個稱為 ouch.ogg 的聲音文件。

在你代碼的設置部分中,創建一個變數,代表你想使用的聲音文件:

ouch = pygame.mixer.Sound(os.path.join(s, 'ouch.ogg'))

觸發一個聲音

為使用一個聲音,你所要做的就是在你想觸發它的時候調用這個變數。例如,當你的玩家擊中一名敵人時,觸發 OUCH 聲音效果:

for enemy in enemy_hit_list:
    pygame.mixer.Sound.play(ouch)
    score -= 1

你可以為各種動作創建聲音,例如,跳躍、收集獎勵、投擲、碰撞,以及其他任何你能想像到的動作。

添加背景音樂

如果你有想在你的遊戲的背景中播放的音樂或令人激動的音效,你可以使用 Pygame 中的 mixer 模塊中的 music 函數。在你的設置部分中,載入音樂文件:

music = pygame.mixer.music.load(os.path.join(s, 'music.ogg'))

然後,開始音樂:

pygame.mixer.music.play(-1)

-1 值告訴 Pygame 無限循環音樂文件。你可以將其設置為從 0 到更高的值之間的任意數值,以定義音樂在停止前循環多少次。

享受音效

音樂和聲音可以為你的遊戲添加很多韻味。嘗試添加一些聲音到你的 Pygame 工程!

via: https://opensource.com/article/20/9/add-sound-python-game

作者:Seth Kenlon 選題:lujun9972 譯者:robsean 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理。

    More in:Linux中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...