發(fā)布時間:2024-02-26 16:48:12 瀏覽量:107次
我們已經(jīng)學(xué)習(xí)了如何為程序中增加音樂音效,今天呢,木辛老師帶著大家將學(xué)到的知識應(yīng)用到實際的項目里。
就以咱們之前做的彈彈球游戲為例吧
傳送門:Python小課堂之貪玩的木辛老師:做一個彈彈球游戲吧
請點擊右上角“關(guān)注”按鈕關(guān)注我們喲:跟著木辛老師學(xué)習(xí)Python編程知識,變身快樂的編程達(dá)人吧~
我們?yōu)檫@個彈彈球游戲增加一些音效吧。
每次球碰到球拍的時候要增加一個聲音。因為我們之前使用了碰撞檢測,當(dāng)球碰到球拍的時候會讓他反向,只需要在這個代碼塊的最后添加音效播放的邏輯就可以了:
增加碰撞時音效播放邏輯
當(dāng)然了,我們在這個程序之前要增加music模塊的初始化過程:
初始化music模塊
還有加載聲效邏輯。咱們這次把聲音設(shè)置為40%,不至于太吵。
運行一下聽聽效果吧~
嗯嗯,我這里的效果還比較滿意;小朋友,你們那邊效果怎么樣呀?
我們增加完了這個音效以后,還想再增加更多的聲音,讓我們一步一步的來實現(xiàn)吧。
我們將會在以下幾個地方增加聲音
我們需要準(zhǔn)備的是對應(yīng)這些場景的聲音,大家可以通過網(wǎng)絡(luò)搜索一些音頻文件,也可以自己通過麥克風(fēng)配音獲得。
這一些準(zhǔn)備妥當(dāng)以后,我們只需要增加新的代碼就可以了:
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)
在這的代碼里,我們設(shè)置了不同的音量,只是為了試試哪個音量聽起來更合適。當(dāng)然了,你可以按照自己的喜好來設(shè)置。但是一定記住,所有的音頻文件都有復(fù)制到當(dāng)前代碼的位置喲!
下一步就是在發(fā)生事件時的響應(yīng)代碼中增加play()方法。
只要碰到窗口左右兩邊就發(fā)出hit_wall的聲音:這個事件在球的move()方法中檢測,我們還要讓球的x速度反向(使球在兩邊”反彈“)。
增加碰撞時音效播放邏輯
同理,我們在檢測到球碰到窗口頂邊的時候,播放get_point的音效。在這里,仍然需要將球反彈,并為玩家+1分。
增加碰撞時音效播放邏輯
其他事件邏輯,按照這兩個例子修改即可,這里我們給小朋友們留下動手實驗題目,請大家私信我們你們的做法喲!
做到這里,我們的程序添加音效的時候已經(jīng)差不多了~
哎呀!好像我們落了一件事。
播放bye聲音和gong聲音的代碼放到了主while循環(huán)中,Pygame窗口關(guān)閉前他們是不會停止的(笑哭),所以只要while循環(huán)還在運行,聲音就會反復(fù)播放!這應(yīng)該怎么修改呢?
嗯······
我們想了一下,可以這么修改。在談?wù)勄蛴螒蚶铮覀冇幸粋€done變量是用來控制游戲什么時候結(jié)束的,通過這個變量,我們就可以控制播放bye聲音和gong聲音了~嗯嗯,小小的自我表揚一下!
增加碰撞時音效播放邏輯
好了,咱們的程序修改完了,小朋友們試一下看看效果如何吧!
“嘣,嘣,嘣”
咦??? 游戲結(jié)束了,但是好像還有小球撞擊的聲音呢?這是怎么回事呀?
嗯······
這個問題可能需要稍微考慮一下。
我們修改的代碼里,通過done變量來通知我們游戲什么時候結(jié)束,利用這一點,我們能夠知道什么時候播放bye聲音,什么時候顯示最后的分?jǐn)?shù)消息。
但是大家有沒有想過,這時候小球在干嗎?
盡管小球這個時候已經(jīng)到達(dá)了窗口的底邊,但是他還在不停地移動呀!
球繼續(xù)的向下走,在碰撞的道路上越走越遠(yuǎn),沒有什么可以阻止它了。
雖然我們看不到它,但是仍然能夠聽到聲音!
球只要在運動,當(dāng)它的x值變得足夠大或者足夠小的時候,它就會碰撞左右兩邊!這種情況發(fā)生在move()方法中,只要while循環(huán)在運行,這個方法就一直有效。
解決辦法大概有這么幾種:
大家可以根據(jù)自己的情況,選擇適當(dāng)?shù)姆绞綄崿F(xiàn)一下。
嗯嗯,這次,我們的程序算是完全捯飭完了,應(yīng)該也算是一個比較精致的小游戲了,大家也可以玩很久了!
經(jīng)過這兩次的學(xué)習(xí),小朋友們對游戲編程中的音效和聲音,是不是有了很深入的了解了呀!
我們在本節(jié)課的最后,復(fù)習(xí)一下之前學(xué)過的內(nèi)容吧~
小朋友們不要忘記關(guān)注我們喲 ,下期課程更精彩,請大家一起期待吧~
快樂編程,快樂成長,拜拜!
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點擊咨詢報名。
2. 手機(jī)游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進(jìn)步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費、一鍵制作炫酷特效,適合新手小白??靵碓囋?!
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點,幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
7. 3D動漫建模全過程,不是一般人能學(xué)的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
8. 如何自己開發(fā)一款游戲(游戲開發(fā)入門必看:五大獨立游戲開發(fā)技巧)
?游戲開發(fā)入門必看:五大獨立游戲開發(fā)技巧無論您是剛剛起步開發(fā)自己的第一款游戲,還是已經(jīng)制作了幾款游戲,本篇文章中的5大獨立游戲開發(fā)技巧都可以幫助您更好地設(shè)計下一款游戲。無論你對游戲有著什么樣的概念,都
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會推出《巫師4》。因為《巫師》系列在策劃的時候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
10. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅固
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計技巧,讓你輕松掌握!
最新文章
同學(xué)您好!