学习笔记——pygame最常用的15个模块
1、Color類
class pygame.Color
Pygame 中用于描述顏色的對(duì)象。Color(name) -> Color Color(r, g, b, a) -> Color Color(rgbvalue) -> Color
方法 & 屬性
| pygame.Color.r() | 獲取或設(shè)置 Color 對(duì)象的紅色值 |
| pygame.Color.g() | 獲取或設(shè)置 Color 對(duì)象的綠色值 |
| pygame.Color.b() | 獲取或設(shè)置 Color 對(duì)象的藍(lán)色值 |
| pygame.Color.a() | 獲取或設(shè)置 Color 對(duì)象的 alpha 值 |
| pygame.Color.cmy() | 獲取或設(shè)置 Color 對(duì)象表示的 CMY 值 |
| pygame.Color.hsva() | 獲取或設(shè)置 Color 對(duì)象表示的 HSVA 值 |
| pygame.Color.hsla() | 獲取或設(shè)置 Color 對(duì)象表示的 HSLA 值 |
| pygame.Color.i1i2i3() | 獲取或設(shè)置 Color 對(duì)象表示的 I1I2I3 值 |
| pygame.Color.normalize() | 返回 Color 對(duì)象的標(biāo)準(zhǔn)化 RGBA 值 |
| pygame.Color.correct_gamma() | 應(yīng)用一定的伽馬值調(diào)整 Color 對(duì)象 |
| pygame.Color.set_length() | 設(shè)置 Color 對(duì)象的長(zhǎng)度(成員數(shù)量) |
| pygame.Color.lerp() | 返回給定顏色的線性插值 |
| pygame.Color.premul_alpha() | 返回一個(gè)顏色,其中r,g,b組件已經(jīng)乘以了alpha |
| pygame.Color.update() | 設(shè)置顏色的元素 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
Pygame 使用 Color 類表示 RGBA 顏色值,每個(gè)顏色值的取值范圍是 0 ~ 255。允許通過(guò)基本的算術(shù)運(yùn)算創(chuàng)造新的顏色值,支持轉(zhuǎn)換為其他顏色空間,例如 HSV 或 HSL,并讓你調(diào)整單個(gè)顏色通道。當(dāng)沒(méi)有給出 alpha 的值默認(rèn)是 255(不透明)。
“RGB值”可以是一個(gè)顏色名,一個(gè) HTML 顏色格式的字符串,一個(gè) 16 進(jìn)制數(shù)的字符串,或者一個(gè)整型像素值。HTML 格式是 “#rrggbbaa”,其中 “rr”,“gg”,“bb”,“aa” 都是 2 位的 16 進(jìn)制數(shù)。代表 alpha 的 “aa” 是可選的。16 進(jìn)制數(shù)的字符串組成形式為 “0xrrggbbaa”,當(dāng)然,其中的 “aa” 也是可選的。
2、display模塊
pygame.display
Pygame 中用于控制窗口和屏幕顯示的模塊。
注:為了適應(yīng)語(yǔ)境,display 在該文檔中有時(shí)翻譯為“顯示”,有時(shí)翻譯為“顯示界面”。
函數(shù)
| pygame.display.init() | 初始化 display 模塊 |
| pygame.display.quit() | 結(jié)束 display 模塊 |
| pygame.display.get_init() | 如果 display 模塊已經(jīng)初始化,返回 True |
| pygame.display.set_mode() | 初始化一個(gè)準(zhǔn)備顯示的窗口或屏幕 |
| pygame.display.get_surface() | 獲取當(dāng)前顯示的 Surface 對(duì)象 |
| pygame.display.flip() | 更新整個(gè)待顯示的 Surface 對(duì)象到屏幕上 |
| pygame.display.update() | 更新部分軟件界面顯示 |
| pygame.display.get_driver() | 獲取 Pygame 顯示后端的名字 |
| pygame.display.Info() | 創(chuàng)建有關(guān)顯示界面的信息對(duì)象 |
| pygame.display.get_wm_info() | 獲取關(guān)于當(dāng)前窗口系統(tǒng)的信息 |
| pygame.display.list_modes() | 獲取全屏模式下可使用的分辨率 |
| pygame.display.mode_ok() | 為顯示模式選擇最合適的顏色深度 |
| pygame.display.gl_get_attribute() | 獲取當(dāng)前顯示界面 OpenGL 的屬性值 |
| pygame.display.gl_set_attribute() | 設(shè)置當(dāng)前顯示模式的 OpenGL 屬性值 |
| pygame.display.get_active() | 當(dāng)前顯示界面顯示在屏幕上時(shí)返回 True |
| pygame.display.iconify() | 最小化顯示的 Surface 對(duì)象 |
| pygame.display.toggle_fullscreen() | 切換全屏模式和窗口模式 |
| pygame.display.set_gamma() | 修改硬件顯示的 gama 坡道 |
| pygame.display.set_gamma_ramp() | 自定義修改硬件顯示的 gama 坡道 |
| pygame.display.set_icon() | 修改顯示窗口的圖標(biāo) |
| pygame.display.set_caption() | 設(shè)置當(dāng)前窗口標(biāo)題 |
| pygame.display.get_caption() | 獲取當(dāng)前窗口標(biāo)題 |
| pygame.display.set_palette() | 為索引顯示設(shè)置顯示調(diào)色板 |
| pygame.display.get_num_displays() | 返回顯示的數(shù)量 |
| pygame.display.get_window_size() | 返回窗口或屏幕的大小 |
| pygame.display.get_allow_screensaver() | 返回屏幕保護(hù)程序是否允許運(yùn)行 |
| pygame.display.set_allow_screensaver() | 設(shè)置屏幕保護(hù)程序是否可以運(yùn)行 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
Pygame 的 display 事實(shí)上可以有幾種初始化的方式。默認(rèn)情況下,display 作為一個(gè)軟件驅(qū)動(dòng)的幀緩沖區(qū)。除此之外,你可以使用硬件加速和 OpenGL 支持的特殊模塊。這些是通過(guò)給 pygame.display.set_mode() 傳入 flags 參數(shù)來(lái)控制的。
Pygame 在任何時(shí)間內(nèi)都只允許有一個(gè)顯示界面。使用 pygame.display.set_mode() 創(chuàng)建的新顯示界面會(huì)自動(dòng)替換掉舊的。如果需要精確控制像素格式或顯示分辨率,使用 pygame.display.mode_ok(),pygame.display.list_modes(),和 pygame.display.Info() 來(lái)查詢顯示界面相關(guān)的信息。
一旦 Surface 對(duì)象的顯示界面被創(chuàng)建出來(lái),這個(gè)模塊的函數(shù)就只影響當(dāng)前的顯示界面。如果該模塊未初始化, Surface 對(duì)象也會(huì)變?yōu)椤胺欠ā薄H绻碌娘@示模式被設(shè)置,當(dāng)前的 Surface 對(duì)象將會(huì)自動(dòng)切換到新的顯示界面。
當(dāng)一個(gè)新的顯示模式被設(shè)置,會(huì)在 Pygame 的事件隊(duì)列中放入幾個(gè)相關(guān)事件。當(dāng)用于希望關(guān)閉程序時(shí),pygame.QUIT 事件會(huì)被發(fā)送;當(dāng)顯示界面獲得和失去焦點(diǎn)時(shí),窗口會(huì)得到 pygame.ACTIVEEVENT 事件;如果顯示界面設(shè)置了 pygame.RESIZABLE 標(biāo)志,那么當(dāng)用戶調(diào)整窗口尺寸時(shí),pygame.VIDEORESIZE 事件會(huì)被發(fā)送;硬件顯示指當(dāng)接收到 pygame.VIDEOEXPOSE 事件時(shí),將部分需要被重繪的窗口直接繪制到屏幕上。
一些顯示環(huán)境擁有自動(dòng)拉伸所有窗口的選項(xiàng)。當(dāng)該選項(xiàng)被啟動(dòng)時(shí),自動(dòng)拉伸會(huì)扭曲 Pygame 窗口的外觀。
3、draw 模塊
pygame.draw
Pygame 中繪制圖形的模塊。
函數(shù)
| pygame.draw.rect() | 繪制矩形 |
| pygame.draw.polygon() | 繪制多邊形 |
| pygame.draw.circle() | 根據(jù)圓心和半徑繪制圓形 |
| pygame.draw.ellipse() | 根據(jù)限定矩形繪制一個(gè)橢圓形 |
| pygame.draw.arc() | 繪制弧線 |
| pygame.draw.line() | 繪制線段 |
| pygame.draw.lines() | 繪制多條連續(xù)的線段 |
| pygame.draw.aaline() | 繪制抗鋸齒的線段 |
| pygame.draw.aalines() | 繪制多條連續(xù)的線段(抗鋸齒) |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
該模塊用于在 Surface 對(duì)象上繪制一些簡(jiǎn)單的形狀。這些函數(shù)將渲染到任何格式的 Surface 對(duì)象上。硬件渲染會(huì)比普通的軟件渲染更耗時(shí)。
大部分函數(shù)用 width 參數(shù)指定圖形邊框的大小,如果 width = 0 則表示填充整個(gè)圖形。
所有的繪圖函數(shù)僅能在 Surface 對(duì)象的剪切區(qū)域生效。這些函數(shù)返回一個(gè) Rect,表示包含實(shí)際繪制圖形的矩形區(qū)域。
大部分函數(shù)都有一個(gè) color 參數(shù),傳入一個(gè)表示 RGB 顏色值的三元組,當(dāng)然也支持 RGBA 四元組。其中的 A 是 Alpha 的意思,用于控制透明度。不過(guò)該模塊的函數(shù)并不會(huì)繪制透明度,而是直接傳入到對(duì)應(yīng) Surface 對(duì)象的 pixel alphas 中。color 參數(shù)也可以是已經(jīng)映射到 Surface 對(duì)象的像素格式中的整型像素值。
當(dāng)這些函數(shù)在繪制時(shí),必須暫時(shí)鎖定 Surface 對(duì)象。許多連續(xù)繪制的函數(shù)可以通過(guò)一次性鎖定直到畫(huà)完再解鎖來(lái)提高效率。
4、event模塊
pygame.event
用于處理事件與事件隊(duì)列的 Pygame 模塊。
函數(shù)
| pygame.event.pump() | 讓 Pygame 內(nèi)部自動(dòng)處理事件 |
| pygame.event.get() | 從隊(duì)列中獲取事件 |
| pygame.event.poll() | 從隊(duì)列中獲取一個(gè)事件 |
| pygame.event.wait() | 等待并從隊(duì)列中獲取一個(gè)事件 |
| pygame.event.peek() | 檢測(cè)某類型事件是否在隊(duì)列中 |
| pygame.event.clear() | 從隊(duì)列中刪除所有的事件 |
| pygame.event.event_name() | 通過(guò) id 獲得該事件的字符串名字 |
| pygame.event.set_blocked() | 控制哪些事件禁止進(jìn)入隊(duì)列 |
| pygame.event.set_allowed() | 控制哪些事件允許進(jìn)入隊(duì)列 |
| pygame.event.get_blocked() | 檢測(cè)某一類型的事件是否被禁止進(jìn)入隊(duì)列 |
| pygame.event.set_grab() | 控制輸入設(shè)備與其他應(yīng)用程序的共享 |
| pygame.event.get_grab() | 檢測(cè)程序是否共享輸入設(shè)備 |
| pygame.event.post() | 放置一個(gè)新的事件到隊(duì)列中 |
| pygame.event.Event() | 創(chuàng)建一個(gè)新的事件對(duì)象 |
| pygame.event.EventType() | 代表 SDL 事件的 Pygame 對(duì)象 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
常規(guī)的隊(duì)列是由 pygame.event.EventType 定義的事件對(duì)象的組成,有多種方法來(lái)訪問(wèn)里邊的事件對(duì)象:從簡(jiǎn)單的檢測(cè)事件是否存在,到直接從棧中獲取它們。
所有事件都有一個(gè)類型標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符對(duì)應(yīng)的值定義在 NOEVENT 到 NUMEVENTS 之間(溫馨提示:類似于 C 語(yǔ)言的宏定義,明白?)。用戶可以自行定義事件,但類型標(biāo)識(shí)符的值應(yīng)該高于或等于 USEREVENT。
獲取各種輸入設(shè)備的狀態(tài),推薦你直接通過(guò)它們相應(yīng)的模塊(mouse,key 和 joystick)提供的函數(shù)訪問(wèn),而不是通過(guò)事件隊(duì)列;如果你使用此函數(shù),請(qǐng)記住,Pygame 需要通過(guò)一些方式與系統(tǒng)的窗口管理器和平臺(tái)的其他部分進(jìn)行通信。為了保持 Pygame 和系統(tǒng)同步,你需要調(diào)用 pygame.event.pump() 確保實(shí)時(shí)更新,你將在游戲的每次循環(huán)中調(diào)用這個(gè)函數(shù)。
事件隊(duì)列提供了一些簡(jiǎn)單的過(guò)濾。通過(guò)阻止某些事件進(jìn)入事件隊(duì)列,可以略微提高游戲的性能(溫馨提示:因?yàn)檫@樣事件隊(duì)列的尺寸就會(huì)小一些,所以說(shuō)可以略微提升性能)。使用 pygame.event.set_allowed() 和 pygame.event.set_blocked() 來(lái)控制某些事件是否允許進(jìn)入事件隊(duì)列。默認(rèn)所有事件都會(huì)進(jìn)入事件隊(duì)列。
事件子系統(tǒng)應(yīng)該在主線程被調(diào)用。如果你希望從其他線程中投遞事件消息進(jìn)入事件隊(duì)列,請(qǐng)使用 fastevent 包。
Joysticks(游戲手柄)只有在設(shè)備初始化后才會(huì)發(fā)送事件。
一個(gè) EventType 事件對(duì)象包含一個(gè)事件類型標(biāo)識(shí)符和一組成員數(shù)據(jù)(事件對(duì)象不包含方法,只有數(shù)據(jù))。EventType 對(duì)象從 Python 的事件隊(duì)列中獲得,你也可以使用 pygame.event.Event() 函數(shù)創(chuàng)建自定義的新事件。
由于 SDL 的事件隊(duì)列限制了事件數(shù)量的上限(標(biāo)準(zhǔn)的 SDL 1.2 限制為 128),所以當(dāng)隊(duì)列已滿時(shí),新的事件將會(huì)被扔掉。為了防止丟失事件消息,尤其是代表退出的輸入事件(因?yàn)楫?dāng)用戶點(diǎn)擊退出按鈕沒(méi)有反應(yīng),往往會(huì)被認(rèn)為“死機(jī)”了),你的程序必須定期檢測(cè)事件,并對(duì)其進(jìn)行處理。
為了加快事件隊(duì)列的處理速度,可以使用 pygame.event.set_blocked() 函數(shù)阻止一些我們不關(guān)注的事件進(jìn)入隊(duì)列中。
所有的 EventType 實(shí)例對(duì)象都擁有一個(gè)事件類型標(biāo)識(shí)符,屬性名是 type。你也可以通過(guò)事件對(duì)象的 dict 屬性來(lái)完全訪問(wèn)其他屬性。所有其他成員屬性的值都是通過(guò)事件對(duì)象的字典來(lái)傳遞。
5、font模塊
pygame.font
Pygame 中加載和表示字體的模塊。
函數(shù)
| pygame.font.init() | 初始化字體模塊 |
| pygame.font.quit() | 還原字體模塊 |
| pygame.font.get_init() | 檢查字體模塊是否被初始化 |
| pygame.font.get_default_font() | 獲得默認(rèn)字體的文件名 |
| pygame.font.get_fonts() | 獲取所有可使用的字體 |
| pygame.font.match_font() | 在系統(tǒng)中搜索一種特殊的字體 |
| pygame.font.SysFont() | 從系統(tǒng)字體庫(kù)創(chuàng)建一個(gè) Font 對(duì)象 類 |
| pygame.font.Font() | 從一個(gè)字體文件創(chuàng)建一個(gè) Font 對(duì)象 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
通過(guò)使用現(xiàn)有的 Font 對(duì)象,可以完成大多數(shù)與字體有關(guān)的工作。Pygame.font 模塊自身僅可以完成常規(guī)的初始化以及通過(guò) pygame.font.Font() 創(chuàng)建 Font 對(duì)象。
你可以通過(guò)使用 pygame.font.SysFont() 函數(shù)從系統(tǒng)內(nèi)加載字體。另外還有其他幾個(gè)函數(shù)可以幫助你搜索系統(tǒng)的字體。
Pygame 配備了內(nèi)建的默認(rèn)字體。通過(guò)傳遞 “None” 為文件名訪問(wèn)此字體。
在 pygame 第一次導(dǎo)入之前,當(dāng)pygame.font 模塊確定環(huán)境變量 PYGAME_FREETYPE 時(shí)使用基于 pygame.ftfont 的 pygame.freetype 模塊。Pygame.ftfont 是一個(gè)pygame.font 可兼容模塊,兼容絕大部分,除開(kāi)其中某個(gè)字體模塊單元測(cè)試:Pygame.ftfont 并沒(méi)有基于字體模塊的 SDL_ttf 的 UCS-2字符限制,所以對(duì)于大于 ‘uFFFF’ 的碼點(diǎn)會(huì)產(chǎn)生異常。如果 pygame.freetype 是不可使用的,那么 SDL_ttf 字體模塊將會(huì)被加載用于替代。
6、image模塊
pygame.image
用于圖像傳輸?shù)?Pygame 模塊。
函數(shù)
| pygame.image.load() | 從文件加載新圖片 |
| pygame.image.save() | 將圖像保存到磁盤(pán)上 |
| pygame.image.get_extended() | 檢測(cè)是否支持載入擴(kuò)展的圖像格式 |
| pygame.image.tostring() | 將圖像轉(zhuǎn)換為字符串描述 |
| pygame.image.fromstring() | 將字符串描述轉(zhuǎn)換為圖像 |
| pygame.image.frombuffer() | 創(chuàng)建一個(gè)與字符串描述共享數(shù)據(jù)的 Surface 對(duì)象 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
注意:沒(méi)有 Image 類;當(dāng)一個(gè)圖像被成功載入后,將轉(zhuǎn)換為 Surface 對(duì)象。Surface 對(duì)象允許你在上邊畫(huà)線、設(shè)置像素、捕獲區(qū)域等。
Image 是 Pygame 相當(dāng)依賴的一個(gè)模塊,支持載入的圖像格式如下:
JPG PNG GIF(無(wú)動(dòng)畫(huà)) BMP PCX TGA(無(wú)壓縮) TIF LBM(和 PBM) PBM(和 PGM,PPM) XPM支持保存為以下格式:
BMP TGA PNG JPEG7、key模塊
pygame.key
與鍵盤(pán)相關(guān)的 Pygame 模塊。
函數(shù)
| pygame.key.get_focused() | 當(dāng)窗口獲得鍵盤(pán)的輸入焦點(diǎn)時(shí)返回 True |
| pygame.key.get_pressed() | 獲取鍵盤(pán)上所有按鍵的狀態(tài) |
| pygame.key.get_mods() | 檢測(cè)是否有組合鍵被按下 |
| pygame.key.set_mods() | 臨時(shí)設(shè)置某些組合鍵為被按下?tīng)顟B(tài) |
| pygame.key.set_repeat() | 控制重復(fù)響應(yīng)持續(xù)按下按鍵的時(shí)間 |
| pygame.key.get_repeat() | 獲取重復(fù)響應(yīng)按鍵的參數(shù) |
| pygame.key.name() | 獲取按鍵標(biāo)識(shí)符對(duì)應(yīng)的名字 該模塊包含處理與鍵盤(pán)操作相關(guān)的函數(shù)。 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
pygame.KYEDOWN 事件還有個(gè)額外的屬性 unicode 和 scancode。unicode 代表一個(gè)按鍵翻譯后的 Unicode 編碼,這包含 shift 按鍵和組合鍵。scancode 是掃描碼,不同鍵盤(pán)間該值可能不同。不過(guò)這對(duì)于特殊按鍵像多媒體鍵的選擇是有用的。
溫馨提示:當(dāng)鍵盤(pán)按下的時(shí)候,鍵盤(pán)會(huì)發(fā)送一個(gè)掃描碼給系統(tǒng)。掃描碼是鍵盤(pán)反饋哪一個(gè)按鍵被按下的方式,不同類型的鍵盤(pán)掃描碼不同。再由系統(tǒng)調(diào)用相應(yīng)的函數(shù)將其轉(zhuǎn)換為統(tǒng)一的 Unicode 編碼。
key 屬性的值是一個(gè)數(shù)字,為了方便使用,Pygame 將這些數(shù)字定義為以下這些常量:
Constant ASCII 描述 --------------------------------- K_BACKSPACE \b 退格鍵(Backspace) K_TAB \t 制表鍵(Tab) K_CLEAR 清除鍵(clear) K_RETURN \r 回車鍵(Enter) K_PAUSE 暫停鍵(Pause) K_ESCAPE ^[ 退出鍵(Escape) K_SPACE 空格鍵(Space) K_EXCLAIM ! 感嘆號(hào)(exclaim) K_QUOTEDBL " 雙引號(hào)(quotedbl) K_HASH # 井號(hào)(hash) K_DOLLAR $ 美元符號(hào)(dollar) K_AMPERSAND & and 符號(hào)(ampersand) K_QUOTE ’ 單引號(hào)(quote) K_LEFTPAREN ( 左小括號(hào)(left parenthesis) K_RIGHTPAREN ) 右小括號(hào)(right parenthesis) K_ASTERISK * 星號(hào)(asterisk) K_PLUS + 加號(hào)(plus sign) K_COMMA , 逗號(hào)(comma) K_MINUS - 減號(hào)(minus sign) K_PERIOD . 句號(hào)(period) K_SLASH / 正斜杠(forward slash) K_0 0 0 K_1 1 1 K_2 2 2 K_3 3 3 K_4 4 4 K_5 5 5 K_6 6 6 K_7 7 7 K_8 8 8 K_9 9 9 K_COLON : 冒號(hào)(colon) K_SEMICOLON ; 分號(hào)(semicolon) K_LESS < 小于號(hào)(less-than sign) K_EQUALS = 等于號(hào)(equals sign) K_GREATER > 大于號(hào)(greater-than sign) K_QUESTION ? 問(wèn)號(hào)(question mark) K_AT @ at 符號(hào)(at) K_LEFTBRACKET [ 左中括號(hào)(left bracket) K_BACKSLASH \ 反斜杠(backslash) K_RIGHTBRACKET ] 右中括號(hào)(right racket) K_CARET ^ 脫字符(caret) K_UNDERSCORE _ 下劃線(underscore) K_BACKQUOTE ` 重音符(grave) K_a a a K_b b b K_c c c K_d d d K_e e e K_f f f K_g g g K_h h h K_i i i K_j j j K_k k k K_l l l K_m m m K_n n n K_o o o K_p p p K_q q q K_r r r K_s s s K_t t t K_u u u K_v v v K_w w w K_x x x K_y y y K_z z z K_DELETE 刪除鍵(delete) K_KP0 0(小鍵盤(pán)) K_KP1 1(小鍵盤(pán)) K_KP2 2(小鍵盤(pán)) K_KP3 3(小鍵盤(pán)) K_KP4 4(小鍵盤(pán)) K_KP5 5(小鍵盤(pán)) K_KP6 6(小鍵盤(pán)) K_KP7 7(小鍵盤(pán)) K_KP8 8(小鍵盤(pán)) K_KP9 9(小鍵盤(pán)) K_KP_PERIOD . 句號(hào)(小鍵盤(pán)) K_KP_DIVIDE / 除號(hào)(小鍵盤(pán)) K_KP_MULTIPLY * 乘號(hào)(小鍵盤(pán)) K_KP_MINUS - 減號(hào)(小鍵盤(pán)) K_KP_PLUS + 加號(hào)(小鍵盤(pán)) K_KP_ENTER \r 回車鍵(小鍵盤(pán)) K_KP_EQUALS = 等于號(hào)(小鍵盤(pán)) K_UP 向上箭頭(up arrow) K_DOWN 向下箭頭(down arrow) K_RIGHT 向右箭頭(right arrow) K_LEFT 向左箭頭(left arrow) K_INSERT 插入符(insert) K_HOME Home 鍵(home) K_END End 鍵(end) K_PAGEUP 上一頁(yè)(page up) K_PAGEDOWN 下一頁(yè)(page down) K_F1 F1 K_F2 F2 K_F3 F3 K_F4 F4 K_F5 F5 K_F6 F6 K_F7 F7 K_F8 F8 K_F9 F9 K_F10 F10 K_F11 F11 K_F12 F12 K_F13 F13 K_F14 F14 K_F15 F15 K_NUMLOCK 數(shù)字鍵盤(pán)鎖定鍵(numlock) K_CAPSLOCK 大寫(xiě)字母鎖定鍵(capslock) K_SCROLLOCK 滾動(dòng)鎖定鍵(scrollock) K_RSHIFT 右邊的 shift 鍵(right shift) K_LSHIFT 左邊的 shift 鍵(left shift) K_RCTRL 右邊的 ctrl 鍵(right ctrl) K_LCTRL 左邊的 ctrl 鍵(left ctrl) K_RALT 右邊的 alt 鍵(right alt) K_LALT 左邊的 alt 鍵(left alt) K_RMETA 右邊的元鍵(right meta) K_LMETA 左邊的元鍵(left meta) K_LSUPER 左邊的 Window 鍵(left windows key) K_RSUPER 右邊的 Window 鍵(right windows key) K_MODE 模式轉(zhuǎn)換鍵(mode shift) K_HELP 幫助鍵(help) K_PRINT 打印屏幕鍵(print screen) K_SYSREQ 魔術(shù)鍵(sysrq) K_BREAK 中斷鍵(break) K_MENU 菜單鍵(menu) K_POWER 電源鍵(power) K_EURO 歐元符號(hào)(euro)還有一個(gè) mod 屬性,用于描述組合鍵狀態(tài)。
以下是組合鍵的常量定義:
Constant 描述 ------------------------- KMOD_NONE 木有同時(shí)按下組合鍵 KMOD_LSHIFT 同時(shí)按下左邊的 shift 鍵 KMOD_RSHIFT 同時(shí)按下右邊的 shift 鍵 KMOD_SHIFT 同時(shí)按下 shift 鍵 KMOD_LCTRL 同時(shí)按下左邊的 ctrl 鍵 KMOD_RCTRL 同時(shí)按下右邊的 ctrl 鍵 KMOD_CTRL 同時(shí)按下 ctrl 鍵 KMOD_LALT 同時(shí)按下左邊的 alt 鍵 KMOD_RALT 同時(shí)按下右邊的 alt 鍵 KMOD_ALT 同時(shí)按下 alt 鍵 KMOD_LMETA 同時(shí)按下左邊的元鍵 KMOD_RMETA 同時(shí)按下右邊的元鍵 KMOD_META 同時(shí)按下元鍵 KMOD_CAPS 同時(shí)按下數(shù)字鍵盤(pán)鎖定鍵 KMOD_MODE 同時(shí)按下模式轉(zhuǎn)換鍵溫馨提示:如果 mod & KMOD_CTRL 是真的話,表示用戶同時(shí)按下了 Ctrl 鍵。
8、locals模塊
pygame.locals :Pygame 定義的常量。
這個(gè)模塊包含了 Pygame 定義的各種常量。它的內(nèi)容會(huì)被自動(dòng)放入到 Pygame 模塊的名字空間中。你可以使用
from pygame.locals import *將所有的 Pygame 常量導(dǎo)入。
各個(gè)常量的詳細(xì)描述記錄在 Pygame 各個(gè)模塊的相關(guān)文檔中。比如 pygame.display.set_mode() 方法用到的 HWSURFACE 常量,你就可以在 display 模塊的文檔中找到詳細(xì)的說(shuō)明;事件類型在 event 模塊的文檔中可以找到;當(dāng)產(chǎn)生 KEYDOWN 或 KEYUP 事件時(shí),key 屬性描述具體哪個(gè)按鍵被按下,該值是以 K_ 開(kāi)頭的常量(MOD_ 開(kāi)頭的常量表示各種組合鍵被按下),在 key 模塊的文檔中可以找到;最后,TIME_RESOLUTION 被定義在 time 模塊中。
9、mixer模塊
pygame.mixer
用于加載和播放聲音的pygame模塊
函數(shù)
| pygame.mixer.init | 初始化混音器模塊 |
| pygame.mixer.pre_init | 預(yù)設(shè)混音器初始化參數(shù) |
| pygame.mixer.quit | 卸載混音器模塊 |
| pygame.mixer.get_init | 測(cè)試混音器是否初始化 |
| pygame.mixer.stop | 停止播放所有通道 |
| pygame.mixer.pause | 暫停播放所有通道 |
| pygame.mixer.unpause | 恢復(fù)播放 |
| pygame.mixer.fadeout | 淡出停止 |
| pygame.mixer.set_num_channels | 設(shè)置播放頻道的總數(shù) |
| pygame.mixer.get_num_channels | 獲取播放頻道的總數(shù) |
| pygame.mixer.set_reserved | 預(yù)留頻道自動(dòng)使用 |
| pygame.mixer.find_channel | 找到一個(gè)未使用的頻道 |
| pygame.mixer.get_busy | 測(cè)試混音器是否正在使用類 |
| pygame.mixer.Sound | 從文件或緩沖區(qū)對(duì)象創(chuàng)建新的Sound對(duì)象 |
| pygame.mixer.Channel | 創(chuàng)建一個(gè)Channel對(duì)象來(lái)控制播放 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
此模塊包含用于加載 Sound 對(duì)象和控制播放的類。混音器模塊是可選的,取決于SDL_mixer。您的程序應(yīng)該在使用它之前 測(cè)試 模塊是否可用并進(jìn)行初始化。
混音器模塊具有有限數(shù)量的聲音播放聲道。通常程序會(huì)告訴 pygame 開(kāi)始播放音頻,它會(huì)自動(dòng)選擇一個(gè)可用的頻道。默認(rèn)為8個(gè)并發(fā)通道,但復(fù)雜的程序可以更精確地控制通道數(shù)量及其使用。
所有聲音播放都混合在后臺(tái)線程中。當(dāng)您開(kāi)始播放Sound對(duì)象時(shí),它會(huì)在聲音繼續(xù)播放時(shí)立即返回。單個(gè)Sound對(duì)象也可以自動(dòng)播放多次。
混音器還有一個(gè)特殊流通道用于音樂(lè)播放,可通過(guò) pygame.mixer.music 模塊訪問(wèn)。
混音器模塊必須像其他 pygame 模塊一樣進(jìn)行初始化,但它有一些額外的條件。pygame.mixer.init() 函數(shù)采用幾個(gè)可選參數(shù)來(lái)控制播放速率和樣本大小。Pygame將 默認(rèn)為合理的值,但pygame無(wú)法執(zhí)行聲音重采樣,因此應(yīng)初始化混音器以匹配音頻資源的值。
注意:不要使用較少的延遲聲音,請(qǐng)使用較小的緩沖區(qū)大小。 默認(rèn)設(shè)置為減少某些計(jì)算機(jī)上發(fā)出沙啞聲音的可能性。 您可以在 pygame.mixer.init() 或者 pygame.init() 之前 通過(guò)調(diào)用pygame.mixer.pre_init()預(yù)設(shè)混合器初始化參數(shù)來(lái)更改默認(rèn)緩沖區(qū)。 例如:pygame.mixer.pre_init(44100,-16,2,1024)。在pygame 1.8中,默認(rèn)大小從1024更改為3072。
10、mouse模塊
pygame.mouse
Pygame 中與鼠標(biāo)工作相關(guān)的模塊。
函數(shù)
| pygame.mouse.get_pressed() | 獲取鼠標(biāo)按鍵的情況(是否被按下) |
| pygame.mouse.get_rel() | 獲取鼠標(biāo)一系列的活動(dòng) |
| pygame.mouse.set_pos() | 設(shè)置鼠標(biāo)光標(biāo)的位置 |
| pygame.mouse.set_visible() | 隱藏或顯示鼠標(biāo)光標(biāo) |
| pygame.mouse.get_focused() | 檢查程序界面是否獲得鼠標(biāo)焦點(diǎn) |
| pygame.mouse.set_cursor() | 設(shè)置鼠標(biāo)光標(biāo)在程序內(nèi)的顯示圖像 |
| pygame.mouse.get_cursor() | 獲取鼠標(biāo)光標(biāo)在程序內(nèi)的顯示圖像 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
這些函數(shù)可以用于獲取目前鼠標(biāo)設(shè)備的情況,也可以改變鼠標(biāo)在程序內(nèi)的顯示光標(biāo)。
當(dāng)設(shè)置顯示模式之后,事件隊(duì)列將開(kāi)始接收鼠標(biāo)事件。當(dāng)鼠標(biāo)按鍵被按下時(shí)會(huì)產(chǎn)生 pygame.MOUSEBUTTONDOWN 事件,當(dāng)鼠標(biāo)按鍵被松開(kāi)時(shí)會(huì)產(chǎn)生 pygame.MOUSEBUTTONUP 事件。這些事件包含了一個(gè)按鍵屬性,用于表示具體由哪個(gè)按鍵所觸發(fā)。
當(dāng)鼠標(biāo)滑輪被滾動(dòng)時(shí)也會(huì)產(chǎn)生 pygame.MOUSEBUTTONDOWN 和 pygame.MOUSEBUTTONUP 事件。當(dāng)鼠標(biāo)滑輪往上滾動(dòng)時(shí),按鍵將會(huì)被設(shè)置成4;當(dāng)鼠標(biāo)滑輪向下滾動(dòng)時(shí),按鍵會(huì)被設(shè)置成 5。
任何時(shí)候鼠標(biāo)移動(dòng)都會(huì)產(chǎn)生一個(gè) pygame.MOUSEMOTION 事件。鼠標(biāo)的活動(dòng)被拆分成小而精確的事件。當(dāng)鼠標(biāo)運(yùn)動(dòng)時(shí),大量的運(yùn)動(dòng)事件會(huì)被放入相應(yīng)的隊(duì)列中等待處理。沒(méi)有及時(shí)清除掉一些運(yùn)動(dòng)事件是隊(duì)列被塞滿的主要原因。
如果鼠標(biāo)光標(biāo)被隱藏并且輸入被當(dāng)前顯示器占用,鼠標(biāo)會(huì)進(jìn)入虛擬輸入模式,在此模式內(nèi),鼠標(biāo)的相關(guān)活動(dòng)不會(huì)因?yàn)槠聊坏倪吔缦拗贫V埂U{(diào)用 pygame.mouse.set_visible() 方法和 pygame.event.set_grab() 方法進(jìn)行設(shè)置。
11、Rect對(duì)象
class pygame.RectRect
是用于存儲(chǔ)矩形坐標(biāo)的 Pygame 對(duì)象。
Rect(left, top, width, height) -> Rect Rect((left, top), (width, height)) -> Rect Rect(object) -> Rect屬性 & 方法
| pygame.Rect.copy() | 拷貝 Rect 對(duì)象 |
| pygame.Rect.move() | 移動(dòng) Rect 對(duì)象 |
| pygame.Rect.move_ip() | 原地移動(dòng) Rect 對(duì)象 |
| pygame.Rect.inflate() | 放大和縮小 Rect 對(duì)象的尺寸 |
| pygame.Rect.inflate_ip() | 原地放大和縮小 Rect 對(duì)象的尺寸 |
| pygame.Rect.clamp() | 將一個(gè) Rect 對(duì)象移動(dòng)到另一個(gè) Rect 對(duì)象的中心 |
| pygame.Rect.clamp_ip() | 原地將一個(gè) Rect 對(duì)象移動(dòng)到另一個(gè) Rect 對(duì)象的中心 |
| pygame.Rect.clip() | 獲取兩個(gè) Rect 對(duì)象互相重疊的部分 |
| pygame.Rect.union() | 將兩個(gè) Rect 對(duì)象合并 |
| pygame.Rect.union_ip() | 原地將兩個(gè) Rect 對(duì)象合并 |
| pygame.Rect.unionall() | 將多個(gè) Rect 對(duì)象合并 |
| pygame.Rect.unionall_ip() | 原地將多個(gè) Rect 對(duì)象合并 |
| pygame.Rect.fit() | 按照一定的寬高比調(diào)整 Rect 對(duì)象 |
| pygame.Rect.normalize() | 翻轉(zhuǎn) Rect 對(duì)象(如果尺寸為負(fù)數(shù)) |
| pygame.Rect.contains() | 檢測(cè)一個(gè) Rect 對(duì)象是否完全包含在該 Rect 對(duì)象內(nèi) |
| pygame.Rect.collidepoint() | 檢測(cè)一個(gè)點(diǎn)是否包含在該 Rect 對(duì)象內(nèi) |
| pygame.Rect.colliderect() | 檢測(cè)兩個(gè) Rect 對(duì)象是否重疊 |
| pygame.Rect.collidelist() | 檢測(cè)該 Rect 對(duì)象是否與列表中的任何一個(gè)矩形有交集 |
| pygame.Rect.collidelistall() | 檢測(cè)該 Rect 對(duì)象與列表中的每個(gè)矩形是否有交集 |
| pygame.Rect.collidedict() | 檢測(cè)該 Rect 對(duì)象是否與字典中的任何一個(gè)矩形有交集 |
| pygame.Rect.collidedictall() | 檢測(cè)該 Rect 對(duì)象與字典中的每個(gè)矩形是否有交集 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
Pygame 通過(guò) Rect 對(duì)象存儲(chǔ)和操作矩形區(qū)域。一個(gè) Rect 對(duì)象可以由 left,top,width,height 幾個(gè)值創(chuàng)建。Rect 也可以是由 Pygame 的對(duì)象所創(chuàng)建,它們擁有一個(gè)屬性叫“rect”。
任何需要一個(gè) Rect 對(duì)象作為參數(shù)的 Pygame 函數(shù)都可以使用以上值構(gòu)造一個(gè) Rect。這樣使得作為參數(shù)傳遞的同時(shí)創(chuàng)建 Rect 成為可能。
Rect 對(duì)象中的大部分方法在修改矩形的位置、尺寸后會(huì)返回一個(gè)新的 Rect 拷貝,原始的 Rect 對(duì)象不會(huì)有任何改變。但有些方法比較特殊,它們會(huì)“原地”修改 Rect 對(duì)象(也就是說(shuō)它們會(huì)改動(dòng)原始的 Rect 對(duì)象),這些方法都會(huì)以 “ip” 作為后綴。
對(duì)了方便大家移動(dòng)和對(duì)齊,Rect 對(duì)象提供以下這些虛擬屬性:
x,y top, left, bottom, right topleft, bottomleft, topright, bottomright midtop, midleft, midbottom, midright center, centerx, centery size, width, height w,h上邊這些屬性均可以被賦值,例如:
rect1.right = 10 rect2.center = (20,30)給 size,width,height 屬性賦值將改變矩形的尺寸;給其它屬性賦值將移動(dòng)矩形。注意:一些屬性是整數(shù),一些是整數(shù)對(duì)。
如果一個(gè) Rect 對(duì)象的 width 或 height 非 0,那么將在非 0 測(cè)試中返回 True。一些方法返回尺寸為 0 的 Rect 對(duì)象,用于表示一個(gè)非法的矩形。
Rect 對(duì)象的坐標(biāo)都是整數(shù),size 的值可以是負(fù)數(shù),但在大多數(shù)情況下被認(rèn)為是非法的。
還有一些方法可以實(shí)現(xiàn)矩形間碰撞檢測(cè),大多數(shù) Python 的容器可以用于檢索其中的元素與某個(gè) Rect 對(duì)象是否碰撞。
Rect 對(duì)象覆蓋的范圍并不包含 right 和 bottom 指定的邊緣位置。
13、time模塊
pygame.time
Pygame 中用于監(jiān)控時(shí)間的模塊。
函數(shù)
| pygame.time.get_ticks() | 獲取以毫秒為單位的時(shí)間 |
| pygame.time.wait() | 暫停程序一段時(shí)間 |
| pygame.time.delay() | 暫停程序一段時(shí)間 |
| pygame.time.set_timer() | 在事件隊(duì)列上重復(fù)創(chuàng)建一個(gè)事件 |
| pygame.time.Clock() | 創(chuàng)建一個(gè)對(duì)象來(lái)幫助跟蹤時(shí)間 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
Pygame中的時(shí)間以毫秒(1/1000秒)表示。大多數(shù)平臺(tái)的時(shí)間分辨率有限,大約為10毫秒。該分辨率(以毫秒為單位) 以常量 TIMER_RESLUTION 給出。
14、music模塊
pygame.mixer.music
Pygame 中控制音頻流的模塊。
函數(shù)
| pygame.mixer.music.load() | 載入一個(gè)音樂(lè)文件用于播放 |
| pygame.mixer.music.play() | 開(kāi)始播放音樂(lè)流 |
| pygame.mixer.music.rewind() | 重新開(kāi)始播放音樂(lè) |
| pygame.mixer.music.stop() | 結(jié)束音樂(lè)播放 |
| pygame.mixer.music.pause() | 暫停音樂(lè)播放 |
| pygame.mixer.music.unpause() | 恢復(fù)音樂(lè)播放 |
| pygame.mixer.music.fadeout() | 淡出的效果結(jié)束音樂(lè)播放 |
| pygame.mixer.music.set_volume() | 設(shè)置音量 |
| pygame.mixer.music.get_volume() | 獲取音量 |
| pygame.mixer.music.get_busy() | 檢查是否正在播放音樂(lè) |
| pygame.mixer.music.set_pos() | 設(shè)置播放的位置 |
| pygame.mixer.music.get_pos() | 獲取播放的位置 |
| pygame.mixer.music.queue() | 將一個(gè)音樂(lè)文件放入隊(duì)列中,并排在當(dāng)前播放的音樂(lè)之后 |
| pygame.mixer.music.set_endevent() | 當(dāng)播放結(jié)束時(shí)發(fā)出一個(gè)事件 |
| pygame.mixer.music.get_endevent() | 獲取播放結(jié)束時(shí)發(fā)送的事件 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
Pygame 中播放音樂(lè)的模塊和 pygame.mixer 模塊是密切聯(lián)系的。使用音樂(lè)模塊去控制在調(diào)音器上的音樂(lè)播放。
音樂(lè)(music)播放和聲音(sound)播放的不同之處在于音樂(lè)是流式的,并且絕對(duì)不會(huì)在一開(kāi)始就把一個(gè)音樂(lè)文件全部載入。調(diào)音系統(tǒng)在工作剛開(kāi)始時(shí)僅支持單音樂(lè)流。
注意:對(duì)于 MP3 格式的支持是受限制的。在一些系統(tǒng)上,一種不受支持的格式將會(huì)是系統(tǒng)崩潰,例如 Debian Linux。為了游戲的穩(wěn)定性,建議使用 OGG 進(jìn)行替代。
15、pygame模塊
pygame
Pygame 最頂層的包。
函數(shù) & 屬性
| pygame.init() | 初始化所有導(dǎo)入的 pygame 模塊 |
| pygame.quit() | 卸載所有導(dǎo)入的 pygame 模塊 |
| pygame.error() | 標(biāo)準(zhǔn) pygame 異常模塊 |
| pygame.get_error() | 獲得當(dāng)前錯(cuò)誤信息 |
| pygame.set_error() | 設(shè)置當(dāng)前錯(cuò)誤信息 |
| pygame.get_sdl_version() | 獲得 SDL 的版本號(hào) |
| pygame.get_sdl_byteorder() | 獲得 SDL 的字節(jié)順序 |
| pygame.register_quit() | 注冊(cè)一個(gè)函數(shù),這個(gè)函數(shù)將在 pygame 退出時(shí)被調(diào)用 |
| pygame.encode_string() | 對(duì) unicode 或字節(jié)對(duì)象編碼 |
| pygame.encode_file_path() | 將 unicode 或字節(jié)對(duì)象編碼為文件系統(tǒng)路徑 |
(函數(shù)詳解見(jiàn)官網(wǎng):https://www.pygame.org/docs/)
pygame 包是可供使用的最頂層的包。Pygame 被分成許多子模塊,但是并不會(huì)影響程序使用 Pygame。
為了方便,在 pygame 中絕大多數(shù)的頂級(jí)變量被放入名為“pygame.locals”的模塊中。意思是說(shuō)這些變量可通過(guò)以下方式導(dǎo)入:
import pygame from pygame.locals import *當(dāng)你導(dǎo)入 pygame 后,所有可用的 pygame 子模塊都將自動(dòng)被導(dǎo)入。需要注意的是,一些 pygame 模塊是“可選的”,并且可能無(wú)法使用。以防萬(wàn)一,Pygame 將提供了一個(gè)占位符對(duì)象替代原來(lái)的模塊,這個(gè)對(duì)象可用來(lái)測(cè)試某些功能(變量)是否可用。
參考文章:
Pygame官網(wǎng):https://www.pygame.org/docs/
pygame中文手冊(cè)pdf版本:https://yihang.cowtransfer.com/s/7b027011c9cd4a
總結(jié)
以上是生活随笔為你收集整理的学习笔记——pygame最常用的15个模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 学习笔记——os模块常见列表
- 下一篇: 复习(三)—— 进程管理详解