一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

其實企業看重的可能不是你的技術有多牛逼,這個開發一個打飛機的遊戲其實並不難,但是有人可以寫到極致。每一步每一點都有寫出來,可見是個嚴謹負責的人。企業可能看重的就是這樣的人,技術不是特別牛逼完全可以通過今後的培養起來。關鍵是有一個好的習慣,好了廢話不多說,馬上給大家帶來這個有趣的案例!在給大家分享之前呢,小編推薦一下一個挺不錯的交流寶地,裡面都是一群熱愛並在學習Python的小夥伴們,大幾千了吧,各種各樣的人群都有,特別喜歡看到這種大家一起交流解決難題的氛圍,群資料也上傳了好多,各種大牛解決小白的問題,這個Python群:330637182 歡迎大家進來一起交流討論,一起進步,儘早掌握這門Python語言。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

微信打飛機 python 實現

所用技術和軟件

python 2.7

pygame 1.9.3

pyCharm

準備工作

  1. 安裝好 pygame 在第一次使用 pygame 的時候,pyCharm 會自動 install pygame。

  2. 下載好使用的素材。

技術實現

初始化 pygame

首先要初始化 pygame ,之後設定一些基本的要點,比如窗口大小(儘量避免魔法數字),窗口標題以及背景圖像。pygame 通過加載圖片,最後返回一個 surface 對象,我們不需要關係圖片的格式。但是通過 convert()這個函數,會使我們的圖片轉換效率提高。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

默認圖片左上角為原點 (0,0)。

顯示窗口

如果我們這樣設定,當我們運行的時候,窗口會一閃而過,並不會出現我們想象的畫面。因為窗口只是運行一下就會關閉,所以我們要寫一個循環,使窗口一直保持出現。當然如果我們簡單的寫一個 while True那麼我們的程序就出現了死循環,卡死。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

所以還需要寫個退出。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

將 player 顯示在屏幕上,並且刷新屏幕

screen.blit(player, [100, 400])pygame.display.update()

效果如下

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

讓飛機 “飛” 起來

飛機已經出現在我們的屏幕上了,現在需要讓飛機動起來讓他可以上下左右的移動。

首先要獲取鍵盤事件,獲取鍵盤上什麼按鍵被按下。

key_pressed = pygame.key.get_pressed()

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

簡單的說就是獲取飛機的圖片,初始化飛機的矩形區域。 rect 該屬性會獲得四個值。分別是左上角 x , y 座標,矩形的寬度。 topleft 初始化飛機的左上角座標,也就是飛機出現的位置。如下圖所示。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

讓子彈飛

子彈要沿著發射方向射出去。可以在屏幕上一直移動,直到移出屏幕。

我們只要有定義一個子彈對象,讓這個對象顯示在屏幕上就可以。

先定義飛機子彈類,基本和定義 player一樣,獲得圖片,裁剪圖片,設置圖片初始位置,在屏幕上顯示圖片

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

下一步就是讓飛機的子彈跟隨飛機。

我們需要在 Player 類裡面添加方法。

首先我們規定,按下空格發射子彈。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

下一步就是讓子彈在屏幕上移動。

創建移動的方法。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

這個和我們的預期還是有差別的,頻率太快了。

關於pygame 的鍵盤重複事件 官方好像並沒有這個設置。那麼我們只能在添加一個計數器,通過計算器的數值來判斷子彈是否發射。這裡的數值是多次測試後,自己感覺一個比較滿意的頻率。可以自己調整。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

繪製敵機

下一步就是繪製敵機。敵機是從屏幕上方移動到屏幕下方。我們任就需要一個類來設置敵機。設置類任就和我們前面的差不多,加載資源,設置 rect,設置位置。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

現在我們就應該想想敵機的特點了,其實他和子彈的特點基本一直,只不過方向不一樣而已。還有一點是敵機是隨機生成的。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

碰撞檢測

飛機和敵機還有子彈都有了,我們現在需要進行完成碰撞檢測。有下面幾種場景。

  1. 敵機和玩家碰撞在一起

  2. 子彈和敵機碰撞在一起

無論是那種情況的碰撞,其實就是兩張圖片有了交集。

如圖

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

執行結果

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

當玩家被擊中的時候,在顯示一張 GameOver 圖片提示

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

細節處理

精細的碰撞檢測

從圖上看,當敵機看似還沒有和我們接觸時,但是已經 GameOver 了。

實際情況是這樣的,所有的圖片都是矩形,當兩張圖片的矩形邊框線碰撞的時候,就算兩個對象碰撞,所以我們要更加精細的使用碰撞檢測。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

我們可以按著圖片中心的某個長度為半徑,在這個半徑內發生碰撞才是碰撞。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

正常發射子彈的動畫效果已經做完。我們還需要進行被擊中爆炸的動畫效果。

擊中的原理和正常也一樣。只不過先要判斷當前飛機狀態,是否被擊中。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

同樣我們需要創建 Group() 來存放被擊中的敵機。

enemies_shoot = pygame.sprite.Group()

之後的處理邏輯基本相似,不多介紹

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

音樂

有了動畫還的有音樂。

音樂的處理只要在特定的地方播放音樂就好,比如子彈發射的時候,背景音樂,被擊中的時候,遊戲結束的時候,等等。他們的處理邏輯都一樣。先加載資源,然後在播放。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

第一個參數是寫的文字;第二個參數是個布爾值,以為這是否開啟抗鋸齒,就是說True的話字體會比較平滑,不過相應的速度有一點點影響;第三個參數是字體的顏色;第四個是背景色,如果你想沒有背景色(也就是透明),那麼可以不加這第四個參數

字體也有了,文本也有了,下一步就是繪製。通過 get_rect()獲得矩形,之後繪製和精靈繪製方法一樣

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

基本到這裡算是寫了一個相對完整的遊戲。

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

謝謝大家閱讀,本文轉載!原文鏈接:

一名程序員用Python實現飛機遊戲!企業為什麼會聘用他?看完就會

如有侵權請聯繫小編刪除!

相關推薦

推薦中...