Python現(xiàn)在很流行,語法簡(jiǎn)單,功能強(qiáng)大。很多同學(xué)想學(xué)Python!所以我們?cè)谶@里為讀者準(zhǔn)備了高價(jià)值的Python學(xué)習(xí)視頻教程,都放在文末。歡迎收藏!
創(chuàng)建Pygame窗口并響應(yīng)用戶輸入
創(chuàng)建一個(gè)新文件夾alien _ invasion,并在文件夾中創(chuàng)建一個(gè)新的alien _ invasion.py文件,并輸入以下代碼。
左右移動(dòng)
我們之前意識(shí)到向右移動(dòng),然后向左移動(dòng)。邏輯差不多,代碼就不貼了。
調(diào)整飛船的速度
目前每次執(zhí)行while循環(huán),飛船最多移動(dòng)一個(gè)像素,所以我們可以在Settings中添加ship_speed_factor來控制飛船的速度。根據(jù)這個(gè)屬性,我們將決定飛船在每個(gè)周期內(nèi)最多可以移動(dòng)多遠(yuǎn)。
設(shè)置:
船舶:
限制航天器的運(yùn)動(dòng)范圍
如果玩家長(zhǎng)時(shí)間按住箭頭,飛船就會(huì)消失,那么飛船到了屏幕邊緣怎么停止移動(dòng)呢?這里只需要修改Ship類中的更新方法,添加一個(gè)邏輯判斷即可。
重建
這里主要講重構(gòu)check_events()函數(shù),將部分代碼分成兩部分,一部分用于KEYDOWN事件,一部分用于KEYUP事件。
游戲功能:
射擊
接下來增加射擊功能,讓玩家按空鍵,子彈向上穿過屏幕,到達(dá)屏幕就消失了。
添加項(xiàng)目符號(hào)設(shè)置
向設(shè)置類添加一些項(xiàng)目符號(hào)屬性。這里我們創(chuàng)建一個(gè)深灰色的項(xiàng)目符號(hào),寬3像素,高15像素。子彈的速度略低于飛船。
創(chuàng)建項(xiàng)目符號(hào)類
分組存儲(chǔ)項(xiàng)目符號(hào)
在定義了項(xiàng)目符號(hào)類和必要的設(shè)置之后,就可以編寫代碼了。玩家每按一次空鍵,就會(huì)射出一顆子彈。
首先,我們?cè)谕庑侨巳肭种袆?chuàng)建一個(gè)組來存儲(chǔ)所有有效的子彈。
火
在這里,我們修改check_keydown_events()函數(shù),以便在玩家按空鍵時(shí)監(jiān)視事件。在這里,我們還需要修改update_screen()函數(shù),以確保每次更新屏幕時(shí)都能重繪每個(gè)項(xiàng)目符號(hào)。
我們來看看效果:
刪除缺失的項(xiàng)目符號(hào)
刪除外星人入侵中丟失的子彈。
限制子彈數(shù)量
為了鼓勵(lì)玩家?guī)е繕?biāo)射擊,我們規(guī)定屏幕上同時(shí)只能有三顆子彈,我們只需要在每顆子彈創(chuàng)建之前檢查沒有消失的子彈數(shù)量是否少于三顆。
創(chuàng)建update_bullets()函數(shù)
為了使《外星人入侵》中的代碼更簡(jiǎn)單,我們將檢查子彈管理代碼,并將其移動(dòng)到游戲功能模塊:
創(chuàng)建fire_bullet()函數(shù)
這里我們把發(fā)射子彈的代碼移到一個(gè)單獨(dú)的函數(shù)中:
添加外星人并檢測(cè)碰撞
在我們完成新任務(wù)之前,我們給游戲添加一個(gè)快捷鍵Q:
創(chuàng)造第一個(gè)外星人
這和在這里制造宇宙飛船是一樣的
創(chuàng)造一群外星人
在這里,我們先確定一條線可以容納多少外星人,畫多少條線。這里有很多代碼修改,直接看效果:
流動(dòng)外星人
我們之前創(chuàng)造了靜止的外星人,現(xiàn)在需要讓外星人動(dòng)起來。這里我們?cè)赟ettings類中設(shè)置alien移動(dòng)的速度,然后通過Alien類中的更新方法實(shí)現(xiàn)移動(dòng)
射殺外星人
如果要拍外星人,首先要檢測(cè)兩個(gè)編組成員之間是否有碰撞。在游戲中,碰撞意味著游戲元素重疊。
這里我們使用sprite.groupcollide()來檢測(cè)兩個(gè)組成員之間的沖突。
當(dāng)子彈擊中外星人時(shí),需要立即知道,同時(shí)被擊中的外星人會(huì)立即消失,所以我們需要在更新子彈位置后立即檢測(cè)到碰撞。
結(jié)束游戲
這里我們還需要知道游戲何時(shí)結(jié)束,有以下幾種情況:
所有的船只都被摧毀了
外星人到達(dá)屏幕底部
實(shí)際效果:
得分
最后我們會(huì)給游戲增加一個(gè)Play按鈕,可以根據(jù)需要啟動(dòng)游戲,游戲結(jié)束后重啟游戲。
我們還會(huì)實(shí)行計(jì)分制度,在球員水平提高的時(shí)候可以加快節(jié)奏。
添加播放按鈕
在這里,我們可以將游戲初始化為非活動(dòng)狀態(tài),當(dāng)我們點(diǎn)擊按鈕時(shí),我們將開始游戲。
Pygame中沒有內(nèi)置的創(chuàng)建按鈕的方法。因此,我們可以通過創(chuàng)建一個(gè)按鈕類來創(chuàng)建一個(gè)帶有自己標(biāo)簽的實(shí)心矩形。
我們通過檢測(cè)鼠標(biāo)點(diǎn)擊后的坐標(biāo)是否與我們畫的按鈕發(fā)生碰撞來判斷是否發(fā)生了點(diǎn)擊事件。
提升
為了讓游戲在玩家消滅敵人后更加困難和有趣,我們可以在Settings類中進(jìn)行修改,增加靜態(tài)初始值和動(dòng)態(tài)初始值。
分?jǐn)?shù),排名,剩余飛船
打包成exe可執(zhí)行文件
以上游戲開發(fā)完成后,你需要把它變成exe的可執(zhí)行文件。我們使用pyinstaller,并參考安裝步驟:
https://github.com/pyinstaller/pyinstaller/
文木福利
獲取方法:添加python組839383765獲??!
1.《python游戲 10分鐘學(xué)會(huì)用python寫游戲!Python其實(shí)很簡(jiǎn)單!》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。
2.《python游戲 10分鐘學(xué)會(huì)用python寫游戲!Python其實(shí)很簡(jiǎn)單!》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/junshi/1292906.html