本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
導(dǎo)語
本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
T_T突然發(fā)現(xiàn)N久以前我還做過一個(gè)系列???
利用Python制作小游戲???
好吧,既然做了,就有頭有尾吧~~~
本期我們將制作一個(gè)類似八音符的小游戲。
讓我們愉快地開始吧~~~
相關(guān)文件
百度網(wǎng)盤下載鏈接: https://pan.baidu.com/s/1JKS3_bTToinfyGREcdqduw
密碼: ufaw
參考文獻(xiàn)
cocos2d文檔:
http://python.cocos2d.org/doc/
開發(fā)工具
Python版本:3.6.4
相關(guān)模塊:
cocos2d模塊;
pyaudio模塊;
以及一些Python自帶的模塊。
環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
原理介紹
相信很多人對(duì)八音符這款游戲并不陌生吧,其核心玩法是利用聲音控制一個(gè)帶辮子的小黑球不斷前進(jìn),大概是長這樣子的吧:
今天我們就來做一個(gè)低配版本的T_T,其功能為利用聲音控制皮卡丘不斷前進(jìn)。
游戲主要使用了cocos2d模塊和pyaudio模塊,前者用于搭建游戲框架,后者用于獲得麥克風(fēng)的聲音。
Step1 定義皮卡丘類:
既然游戲的主角是皮卡丘,那我們總得單獨(dú)定義一個(gè)類來體現(xiàn)一下主角吧?
利用cocos2d模塊來定義主角類是一件非常輕松的事情。你只需要繼承sprites類,然后告訴sprites類需要執(zhí)行什么操作即可。
根據(jù)八音符的游戲規(guī)則,我們賦予皮卡丘跳躍、下降和靜止的能力,同時(shí),我們規(guī)定皮卡丘在空中時(shí)無法進(jìn)行跳躍。具體代碼如下:
Step2 定義block類:
顯然,主角需要有站的地方吧T_T,到處都是萬丈深淵怕是一萬只皮卡丘也拯救不了地球人吧T_T。
對(duì)于地面,剛開始的時(shí)候先得有一段長點(diǎn)的平地緩沖一下,讓玩家先試試自己的嗓音,然后再隨機(jī)生成跳躍塊,讓玩家展示自己的歌喉。具體代碼如下:
Step3 實(shí)現(xiàn)游戲主循環(huán):
有了上面的鋪墊,就可以開始實(shí)現(xiàn)我們的小游戲了。
此時(shí)我們需要繼承ColorLayer類來實(shí)現(xiàn)游戲主循環(huán)。首先,我們定義聲控條類來“暗中觀察”我們的嗓音,代碼如下:
然后就是實(shí)例化皮卡丘類和block類,其中,block類將被放置進(jìn)容器以方便整體處理。代碼如下:
啊,千萬別忘了只有輸入了聲音才能控制我們的皮卡丘不停地運(yùn)動(dòng),代碼如下:
最后,我們需要告訴程序游戲規(guī)則,那就是根據(jù)麥克風(fēng)接收到的聲音的音量來控制聲控條的長短以及皮卡丘的動(dòng)作。這里,我們通過block塊的整體后移來實(shí)現(xiàn)皮卡丘的前進(jìn)效果。
當(dāng)然,我們也需要加入必要的碰撞檢測(cè)程序,不然皮卡丘一登場(chǎng)就陷入沼澤一樣的地面中了。并且我們規(guī)定當(dāng)皮卡丘掉入“溝壑”后游戲重置。
代碼如下:
OK,大功告成?。?!
游戲效果
在cmd窗口運(yùn)行Game2.py文件即可。
效果如下:
更多
關(guān)于cocos模塊的教程,推薦閱讀:
http://python.cocos2d.org/doc/
代碼截止2018-06-14測(cè)試無誤。
有興趣的小伙伴可以在此基礎(chǔ)上進(jìn)行改進(jìn)優(yōu)化,例如加上音效和分值統(tǒng)計(jì)、開始和結(jié)束界面等等~~~
總之可改進(jìn)的空間還是比較大的~