開始我們的項目 飛機大戰
1 項目的初體驗 以及前期准備
-
游戲初體驗畫面
略,請去參考博客 -
驗證一下本地第三方包有沒有導入
python3 -m pygame.examples.aliens
如果沒有出現游戲畫面請先安裝這個包
sudo pip3 install pygame
-
開始搭建目錄結構
- 創建主程序 導入素材圖片,新建 名為:“飛機大戰‘項目
- 建立主程序員 ganme_main.py
- 把素材圖片都導入到項目文件夾中
-
游戲的邏輯
- 主要的邏輯,就是判斷一系列的圖片運動碰撞,產生不同的事件 ,從而產生不同的效果
2.開始繪制背景和窗口
- 首先我們要注意到兩個重要的pygame方法 一個是初始化和卸載方法
import pygame
pygame.init()
#游戲代碼
'pygame,quit()' ,卸載所有的pygame模塊 在游戲結束之前調用!如何才是真正的結束游戲;
- pygame中的 游戲中的坐標系?
pygame中專門准備了一個類Rect用於描述矩形區域,在本項目中,所有的圖片都是Rect的創建出來的矩形對象。注意:即使你不初始化它 你也一樣可以使用它 ,注意這個類你需要傳入坐標值 還有其大小
juxin = pygame.Rect(100,50,120,12)
返回的就是/
print ( '%d %d' %juxin.size )//獲取的是大小,......具體的屬性還有返回值請去查看api文檔size是一個元組屬性
- 如何創建出一個游戲窗口?
- 同樣的道理,我們的pygame也提供了專門的模塊去處理,display模塊。這個模塊下可的兩個方法可以繪制游戲的窗口
- 示例代碼
# 注意一下這個方法返回的是一個窗口對象。窗口默認與屏幕一樣大。為此我們可以來設置一些
+++
# 第一個參數類型是元祖(),其它的兩個參數就不管它了。如果你感興趣就去查閱python文檔
screen = pygame.dispaly.set_mode( (480,700), )
while True:
pass
+++
- 如何把圖片繪制上去窗口?
- 具體核心就是:
-
- 加載圖片的數據 pygame.image.load("圖形目錄"),到內存中
-
- 使用屏幕對象的 blit方法把圖搞到指定的位置
-
- 使用pygame.dispaly.update()更新整個屏幕的顯示
核心代碼實例
- 使用pygame.dispaly.update()更新整個屏幕的顯示
+++ bg = pygame.image.load('./images/background.jpg') screen.bit(bg,(0,0)) pygame.dispaly.update() +++
- 繪制其它的圖片?
- 其實這個也比較好理解,你可以在之前繪制的背景上再去繪制圖形。注意,注意 所有的圖片都應該是矩形的。不同的圖片只是設置了一些透明上去。
3.源碼分析
- 如果我們有N多圖片要繪制呢?
- 其實我可以再完成所有的繪制軸再去調用 pygame.dispaly.update()
- 在源碼中screen對象是一個內存中的屏幕數據對象,可以理解為一個畫布 ,
- screen.blit可以再畫布上繪制很多很多圖形,這些圖形有可能發生覆蓋,我們在內存中虛擬繪制
- 最后我們再更新上去。以便於提高性能dispaly.update()
4.動畫實現原理
原理就是 動畫幀 ,說白了就是快速的圖片變化。利用視覺差搞出動畫效果
- 在源代碼中 ,update方法實際上就產生了一幀,而要完成連貫的動畫 需要最少60幀/s