對於pygame的介紹,在網上真的基本上千篇一概,大多會感慨感謝一下做者,可惜一下這個包在09年的時候就中止更新(可是它神奇地在17年1月份更新了)。真正的它的意義,不多人說起。下面引用一下《pygame菜鳥入門指南》裏的一段介紹:python
pygame是一個由Pete Shinners編寫的SDL的Python封裝。這就意味着,使用pygame,你能夠寫出能夠不做修改就能夠在任何支持SDL的平臺(Windows, Unix, Mac, BeOS,等等)上運行的遊戲或者多媒體程序。linux
簡單的理解一下,它的底層是使用C編寫的SDL(simple DirectMedia Layer)。提供了多種控制凸顯個、聲音、輸出入得函數。讓開發者是要用相同或者是類似的代碼就能夠開發出跨多個平臺(linux、windows、mac OS X等)的應用軟件。目前SDL多用於開發遊戲,模擬器,媒體播放器等多媒體應用領域……shell
SDL內置調用了OpenGL的函數。……SDL也有其餘語言的包裝,SDL用C語言寫成,可是很容易在C++下工做,而且綁定了許多其餘的語言……包裝的比較好的是python語言的pygame……windows
在我省略了好多……以後,pygame和SDL和OpenGL的關係漸漸明朗了起來。雖然沒有對pygame的能力有很詳細的描述,可是也能簡單瞭解它的主要應用場景和主要的功能。框架
超簡單,若是有完整的python開發環境,這個應該不是什麼問題。函數
pip install pygame
模塊名 | 功能 |
---|---|
pygame.cdrom |
訪問光驅 |
pygame.cursors |
加載光標 |
pygame.display |
訪問顯示設備 |
pygame.draw |
繪製形狀、線和點 |
pygame.event |
管理事件 |
pygame.font |
使用字體 |
pygame.image |
加載和存儲圖片 |
pygame.joystick |
使用遊戲手柄或者相似的東西 |
pygame.key |
讀取鍵盤按鍵 |
pygame.mixer |
聲音 |
pygame.mouse |
鼠標 |
pygame.movie |
播放視頻 |
pygame.music |
播放音頻 |
pygame.overlay |
訪問高級視頻疊加 |
pygame.rect |
管理矩形區域 |
pygame.sndarry |
操做聲音數據 |
pygame.sprite |
操做移動圖像 |
pygame.surface |
管理圖像和屏幕 |
pygame.surfarry |
管理點陣圖像數據 |
pygame.time |
管理時間和幀信息 |
pygame.transform |
縮放和移動圖像 |
其中一些我以爲比較重要的或者在初級使用階段會常常碰到的一些字段,我都添加了標記,在以後的學習中能夠重點關注一下這一塊的源碼。學習
有些模塊可能在某些平臺上不存在(有這個名稱字段,可是爲空),能夠用None判斷一下。字體
In [3]: pygame.font is None Out[3]: False
background_image_filename = 'sushiplate.jpg' mouse_image_filename = 'fugu.png' #指定圖像文件名稱 import pygame #導入pygame庫 from pygame.locals import * #導入一些經常使用的函數和常量 from sys import exit #向sys模塊借一個exit函數用來退出程序 pygame.init() #初始化pygame,爲使用硬件作準備 screen = pygame.display.set_mode((640, 480), 0, 32) #建立了一個窗口 pygame.display.set_caption("Hello, World!") #設置窗口標題 background = pygame.image.load(background_image_filename).convert() mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha() #加載並轉換圖像 while True: #遊戲主循環 for event in pygame.event.get(): if event.type == QUIT: #接收到退出事件後退出程序 exit() #這個負責監聽事件的循環很是重要,是event模塊在pygame程序中最頻繁的使用 screen.blit(background, (0,0)) #將背景圖畫上去 blit(圖片源,起始點) x, y = pygame.mouse.get_pos() #得到鼠標位置 x-= mouse_cursor.get_width() / 2 y-= mouse_cursor.get_height() / 2 #計算光標的左上角位置 screen.blit(mouse_cursor, (x, y)) #把光標畫上去 pygame.display.update() #刷新一下畫面
上面的程序其實註釋已經很是詳盡了,咱們有幾點須要注意的:code
set_mode(resolution=(0,0), flags=0, depth=0) -> Surface Initialize a window or screen for display
它須要三個參數,resolution就是分辨率,flags就是標誌位,depth是色深
分辨率很好理解暫時就很少BB了,flags具體見下表,若是不須要什麼特性,就0orm
標誌位 | 功能 |
---|---|
FULLSCREEN | 建立一個全屏窗口 |
DOUBLEBUF | 建立一個「雙緩衝」窗口,建議在HWSURFACE或者OPENGL時使用 |
HWSURFACE | 建立一個硬件加速的窗口,必須和FULLSCREEN同時使用 |
OPENGL | 建立一個OPENGL渲染的窗口 |
RESIZABLE | 建立一個能夠改變大小的窗口 |
NOFRAME | 建立一個沒有biang狂的窗口 |
convert
函數試講圖像數據都轉化爲surface對象,每次加載完圖像之後就應該作這件事件(使用頻率很高,若是你不寫,pygame也會幫你寫);convert_alpha
相比convert
保留了ALPHA通道信息(就簡單理解爲透明的部分),這樣就能夠得到PNG圖標的效果。
blit
是一個重要函數。第一個參數是一個surface對象,第二個爲左上角位置,畫完一個後要記得update
更新一下,不然會出現畫面一片漆黑的狀況。
blit(source, dest, area=None, special_flags = 0) -> Rect draw one image onto another