pycharm+pygame飛機大戰


第一章python語言基礎 略

第二章 實戰篇

2.1 搭建開發環境 略

2.2 hello world程序的實現步驟

 1、創建並顯示一個固定尺寸的窗口
 2、處理用戶關閉窗口從而退出程序的事件(會有一系列事件以及事件隊列)

 3、設置窗口的標題和背景色
 4、在窗口的底部居中位置繪制一架飛機

      首先需要加載作為飛機的圖片,然后將飛機圖片繪制在窗口的指定位置,可以調用窗口對象window的方法blit()來完成,該方法用於在窗口的指定位置繪制指定的元素。可以將窗口對象理解為一張畫布,通過調用方法blit()可以在畫布上的指定位置繪制指定的元素。調用方法blit()時要傳入兩個實參:第1個實參傳入要繪制的元素,在這里是加載飛機圖片后得到的對象my_plane,第2個實參傳入要繪制的元素在窗口中的位置,可以將飛機圖片在窗口中的坐標傳過去。

window.blit(my_plane, (199,474))
 5、讓飛機向上勻速移動

要實現流暢的動畫,必須讓相鄰畫面的呈現時間間隔足夠短,從而欺騙我們的眼睛,讓眼睛認為畫面是連續的,所以,相鄰畫面的呈現時間間隔必須要小於1/24秒,也就是每秒至少要呈現24個畫面。通常,每個畫面被稱為一幀,每秒鍾呈現的幀數(畫面數)被稱為幀率,用FPS(Frame Per Second)來表示,單位是Hz(赫茲)。
所以,要實現流暢的動畫,FPS至少應為24Hz,也就是每秒至少24幀。在我們開發游戲的時候,每秒30幀的幀率就可以給玩家提供流暢的體驗了。如果幀率較低,就會使得游戲看上去抖動或卡頓。幀率也沒有必要太高,很多顯示器的幀率是60Hz。對於75Hz以上的幀率,絕大部分地球人的肉眼已經無法分辨了。

 

第三章:重構上面的內容

上述步驟,是典型的面向過程編程,當項目逐漸變大的時候,不易復用和維護,所以我們要將其改為面向對象編程。

面向對象編程的三大特性是:繼承、封裝、和多態。

按照面向對象的編程思想,構建了飛機、飛機大戰場兩個類。

3-3 認識pygame當中的矩形元素

 

3-4 重構之提取函數

4-1 讓窗口尺寸適配屏幕分辨率

獲得當前屏幕的大小,接着讓窗口占屏幕的長寬的固定百分比。

5-1 通過按下上下左右四個鍵(也支持W、A、D、S)來實現飛機的上下左右移動。

5-3 限制飛機的飛行范圍。(每次讓飛機的位置減少20,是自定義的值,為了讓飛機看起來有動的效果,這里的20其實代表飛機移動的像素值)

 

5-5 提取魔法數字

魔法數字就是形如上圖中20,這樣的數字,有特定的含義,但是從字面數值,無法表達出其含義。在程序中多處用到,替換時,修改起來比較麻煩。

這里有幾種提取方式:

1).替換為變量(小寫),變量的初始值在函數開頭初始化;

2).替換為常量(大寫),常量的值在類的開頭進行輸出化;

3).替換為字段,也就是類的屬性值,在類的初始化函數init中賦值;

4).替換為參數,在該方法的參數里初始化。

 

 6-1讓我方飛機在每次按下空格鍵后,發射一枚子彈。

7-2刪除窗口中不可見的bullet

self.bullet_list.remove(bullet) #銷毀列表中的某個元素

7-3 事件隊列中自定義某種事件

9-1 游戲設計中的重要碰擊事件,也就是精靈(Sprite)和分組(Group)

Sprite,中文意思是精靈,它位於pygame.sprite這個模塊中。游戲畫面中的所有元素,例如:我方飛機、子彈、敵機等,都可以被看作是精靈。
要想讓游戲畫面中的元素變為精靈,只需要讓元素對應的類對象繼承Sprite就可以了。


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM