Python之Pygame游戲編程詳解

一、介紹

1.1? 定義

Pygame是一種流行的Python游戲開發庫,它提供了許多功能,使開發人員可以輕松創建2D游戲。它具有良好的跨平臺支持,可以在多個操作系統上運行,例如Windows,MacOS和Linux。在本文中,我們將介紹Pygame庫的特點和用法,幫助您了解如何使用Pygame庫進行游戲開發。它提供了諸多操作模塊,比如圖像模塊(image)、聲音模塊(mixer)、輸入/輸出(鼠標、鍵盤、顯示屏)模塊等。

官方地址:https://www.pygame.org/

1.2 相關函數

1)?pygame.sprite 代表游戲圖像的更高級別的對象

pygame.sprite.Sprite:可見游戲對象的簡單基類。
pygame.sprite.WeakSprite:Sprite 的子類,弱引用其組。這意味著它所屬的任何組如果在其他地方沒有被引用,都會被自動垃圾收集。
pygame.sprite.DirtySprite:Sprite 的子類,具有更多的屬性和功能。
pygame.sprite.Group:用于保存和管理多個 Sprite 對象的容器類。
pygame.sprite.WeakDirtySprite:WeakSprite 和 DirtySprite 的子類,結合了這兩個類的優點。
pygame.sprite.RenderPlain:與 pygame.sprite.Group 相同
pygame.sprite.RenderClear:與 pygame.sprite.Group 相同
pygame.sprite.RenderUpdates:跟蹤臟更新的組子類。
pygame.sprite.OrderedUpdates:RenderUpdates 子類,按添加順序繪制 Sprite。
pygame.sprite.LayeredUpdates:LayeredUpdates 是一個精靈組,它像 OrderedUpdates 一樣處理圖層和繪制。
pygame.sprite.LayeredDirty:LayeredDirty 組適用于 DirtySprite 對象。子類 LayeredUpdates。
pygame.sprite.GroupSingle:容納單個精靈的組容器。
pygame.sprite.spritecollide:查找組中與另一個精靈相交的精靈。
pygame.sprite.collide_rect:使用矩形檢測兩個精靈之間的碰撞。
pygame.sprite.collide_rect_ratio:使用按比例縮放的矩形來檢測兩個精靈之間的碰撞。
pygame.sprite.collide_circle:使用圓圈檢測兩個精靈之間的碰撞。
pygame.sprite.collide_circle_system:使用按比例縮放的圓圈來檢測兩個精靈之間的碰撞。
pygame.sprite.collide_mask:使用遮罩檢測兩個精靈之間的碰撞。
pygame.sprite.groupcollide:找到兩組之間發生碰撞的所有精靈。
pygame.sprite.spritecollideany:簡單測試精靈是否與組中的任何內容相交。

2)pygame.Surface 圖像和屏幕的對象

pygame.Surface.blit:將一幅圖像繪制到另一幅圖像上
pygame.Surface.blitz:將許多圖像繪制到另一個圖像上
pygame.Surface.convert:更改圖像的像素格式
pygame.Surface.convert_alpha:更改圖像的像素格式,包括每個像素 alpha
pygame.Surface.copy:創建 Surface 的新副本
pygame.Surface.fill:用純色填充表面
pygame.Surface.scroll:將表面圖像移動到位
pygame.Surface.set_colorkey:設置透明色鍵
pygame.Surface.get_colorkey:獲取當前透明色鍵
pygame.Surface.set_alpha:設置完整 Surface 圖像的 alpha 值
pygame.Surface.get_alpha:獲取當前Surface透明度值
pygame.Surface.lock:鎖定 Surface 內存以進行像素訪問
pygame.Surface.unlock:從像素訪問中解鎖 Surface 內存
pygame.Surface.mustlock:測試 Surface 是否需要鎖定
pygame.Surface.get_locked:測試 Surface 當前是否已鎖定
pygame.Surface.get_locks:獲取 Surface 的鎖
pygame.Surface.get_at:獲取單個像素的顏色值
pygame.Surface.set_at:設置單個像素的顏色值
pygame.Surface.get_at_mapped:獲取單個像素處的映射顏色值
pygame.Surface.get_palette:獲取 8 位 Surface 的顏色索引調色板
pygame.Surface.get_palette_at:獲取調色板中單個條目的顏色
pygame.Surface.set_palette:設置 8 位 Surface 的調色板
pygame.Surface.set_palette_at:設置 8 位 Surface 調色板中單個索引的顏色
pygame.Surface.map_rgb:將顏色轉換為映射顏色值
pygame.Surface.unmap_rgb:將映射的整數顏色值轉換為 Color
pygame.Surface.set_clip:設置Surface的當前剪切區域
pygame.Surface.get_clip:獲取Surface當前的裁剪區域
pygame.Surface.subsurface:創建一個引用其父級的新曲面
pygame.Surface.get_parent:找到次表面的父級
pygame.Surface.get_abs_parent:找到地下表面的頂層父級
pygame.Surface.get_offset:找到父級內部子表面的位置
pygame.Surface.get_abs_offset:查找子表面在其頂級父表面內的絕對位置
pygame.Surface.get_size:獲取 Surface 的尺寸
pygame.Surface.get_width:獲取 Surface 的寬度
pygame.Surface.get_height:獲取 Surface 的高度
pygame.Surface.get_rect:獲取 Surface 的矩形面積
pygame.Surface.get_bitsize:獲取 Surface 像素格式的位深度
pygame.Surface.get_bytesize:獲取每個 Surface 像素使用的字節數
pygame.Surface.get_flags:獲取用于 Surface 的附加標志
pygame.Surface.get_pitch:獲取每個 Surface 行使用的字節數
pygame.Surface.get_masks:在顏色和映射整數之間轉換所需的位掩碼
pygame.Surface.set_masks:設置在顏色和映射整數之間轉換所需的位掩碼
pygame.Surface.get_shifts:顏色和映射整數之間轉換所需的位移位
pygame.Surface.set_shifts:設置顏色和映射整數之間轉換所需的位移位
pygame.Surface.get_losses:用于在顏色和映射整數之間轉換的有效位
pygame.Surface.get_bounding_rect:找到包含數據的最小矩形
pygame.Surface.get_view:返回 Surface 像素的緩沖區視圖。
pygame.Surface.get_buffer:獲取 Surface 像素的緩沖區對象。
pygame.Surface._pixels_address:像素緩沖區地址
pygame.Surface.premul_alpha:返回表面的副本,其中 RGB 通道預先乘以 alpha 通道。

3)pygame.surfarray 操作圖像像素數據?

pygame.surfarray.array2d:將像素復制到二維數組中
pygame.surfarray.pixels2d:將參考像素放入二維數組中
pygame.surfarray.array3d:將像素復制到 3d 數組中
pygame.surfarray.pixels3d:將參考像素放入 3d 數組中
pygame.surfarray.array_alpha:將像素 alpha 復制到二維數組中
pygame.surfarray.pixels_alpha:將像素 alpha 參考到二維數組中
pygame.surfarray.array_red:將紅色像素復制到二維數組中
pygame.surfarray.pixels_red:將紅色參考像素放入二維數組中。
pygame.surfarray.array_green:將綠色像素復制到二維數組中
pygame.surfarray.pixels_green:將綠色參考像素放入二維數組中。
pygame.surfarray.array_blue:將藍色像素復制到二維數組中
pygame.surfarray.pixels_blue:將藍色參考像素放入二維數組中。
pygame.surfarray.array_colorkey:將 colorkey 值復制到二維數組中
pygame.surfarray.make_surface:將數組復制到新表面
pygame.surfarray.blit_array:直接從數組值進行 Blit
pygame.surfarray.map_array:將 3d 數組映射到 2d 數組
pygame.surfarray.use_arraytype:設置用于表面陣列的陣列系統
pygame.surfarray.get_arraytype:獲取當前活動的數組類型。
pygame.surfarray.get_arraytypes:獲取當前支持的陣列系統類型。

4)python 管理pygame的頂級功能

pygame.init:初始化所有導入的 pygame 模塊
pygame.quit:取消初始化所有 pygame 模塊
pygame.get_init:如果 pygame 當前已初始化,則返回 True
pygame.error:標準 pygame 異常
pygame.get_error:獲取當前錯誤信息
pygame.set_error:設置當前錯誤信息
pygame.get_sdl_version:獲取SDL的版本號
pygame.get_sdl_byteorder:獲取SDL的字節順序
pygame.register_quit:注冊一個在 pygame 退出時調用的函數
pygame.encode_string:對 Unicode 或 bytes 對象進行編碼
pygame.encode_file_path:將 Unicode 或 bytes 對象編碼為文件系統路徑

?5)pygame.BufferProxy 表面像素的陣列協議視圖

該類是 Surface?對象通過數組協議導出的一個緩沖對象

pygame.BufferProxy.parent:返回該 BufferProxy 的 Surface 對象, 或者調用 BufferProxy 的對象
pygame.BufferProxy.length:返回緩沖區的長度,單位是字節。類似于len字段
pygame.BufferProxy.length:將緩沖區的數據拷貝并返回,為str或bytes對象
pygame.BufferProxy.write:將字節寫入緩沖區

6)pygame.Color 顏色表示

該類是pygame中用于描述顏色的模塊

pygame.Color.r:取或設置 Color 的紅色值。
pygame.Color.g:取或設置 Color 的綠色值。
pygame.Color.b:取或設置 Color 的藍色值。
pygame.Color.a:取或設置 Color 的 alpha 值。
pygame.Color.cmy:取或設置 Color 的 CMY 表示形式。
pygame.Color.white:取或設置 Color 的 HSVA 表示形式。
pygame.Color.hsla:取或設置 Color 的 HSLA 表示形式。
pygame.Color.i1i2i3:取或設置 Color 的 I1I2I3 表示形式。
pygame.Color.normalize:返回顏色的標準化 RGBA 值。
pygame.Color. Correct_gamma:將特定的伽馬值應用于顏色。
pygame.Color.set_length:將 Color 中的元素數量設置為 1、2、3 或 4。
pygame.Color.grayscale:返回顏色的灰度
pygame.Color.lerp:返回給定 Color 的線性插值。
pygame.Color.premul_alpha:返回一個 Color,其中 r、g、b 分量已乘以 alpha。
pygame.Color.update:設置顏色元素

7)pygame.cursors 加載和編譯光標圖像

pygame.cursors.compile:從簡單字符串創建二進制游標數據
pygame.cursors.load_xbm:從 XBM 文件加載游標數據
pygame.cursors.Cursor:代表光標的 pygame 對象

8)pygame.display 配置顯示表面?

pygame.display.init:初始化顯示模塊
pygame.display.quit:取消初始化顯示模塊
pygame.display.get_init:如果顯示模塊已初始化,則返回 True
pygame.display.set_mode:初始化窗口或屏幕以進行顯示
pygame.display.get_surface:獲取當前設置的顯示表面的引用
pygame.display.flip:將完整顯示 Surface 更新到屏幕
pygame.display.update:更新軟件顯示的部分屏幕
pygame.display.get_driver:獲取pygame顯示后端的名稱
pygame.display.Info:創建視頻顯示信息對象
pygame.display.get_wm_info:獲取有關當前窗口系統的信息
pygame.display.get_desktop_sizes:獲取活動桌面的大小
pygame.display.list_modes:獲取可用全屏模式的列表
pygame.display.mode_ok:為顯示模式選擇最佳顏色深度
pygame.display.gl_get_attribute:獲取當前顯示器的 OpenGL 標志的值
pygame.display.gl_set_attribute:請求顯示模式的 OpenGL 顯示屬性
pygame.display.get_active:當屏幕上的顯示處于活動狀態時返回 True
pygame.display.iconify:圖標化顯示表面
pygame.display.toggle_fullscreen:在全屏和窗口顯示之間切換
pygame.display.set_gamma:更改硬件伽瑪斜坡
pygame.display.set_gamma_ramp:使用自定義查找更改硬件伽瑪斜坡
pygame.display.set_icon:更改顯示窗口的系統圖像
pygame.display.set_caption:設置當前窗口標題
pygame.display.get_caption:獲取當前窗口標題
pygame.display.set_palette:設置索引顯示的顯示調色板
pygame.display.get_num_displays:返回顯示數量
pygame.display.get_window_size:返回窗口或屏幕的大小
pygame.display.get_allow_screensaver:返回是否允許屏幕保護程序運行。
pygame.display.set_allow_screensaver:設置屏保是否可以運行

?9)pygame.draw 在曲面上繪制簡單的形狀,例如直線和橢圓

pygame.draw.rect:畫一個矩形
pygame.draw.polygon:畫一個多邊形
pygame.draw.circle:畫一個圓圈
pygame.draw.ellipse:畫一個橢圓
pygame.draw.arc:畫一條橢圓弧
pygame.draw.line:畫一條直線
pygame.draw.lines:繪制多條連續的直線段
pygame.draw.aline:畫一條抗鋸齒直線
pygame.draw.aalines:繪制多個連續的抗鋸齒直線段

10)pygame.event 管理來自各種輸入設備和窗口平臺的傳入事件

pygame.event.pump:內部處理 pygame 事件處理程序
pygame.event.get:從隊列中獲取事件
pygame.event.poll:從隊列中獲取單個事件
pygame.event.wait:等待隊列中的單個事件
pygame.event.peek:測試事件類型是否正在隊列中等待
pygame.event.clear:從隊列中刪除所有事件
pygame.event.event_name:從事件 ID 中獲取字符串名稱
pygame.event.set_blocked:控制隊列中允許哪些事件
pygame.event.set_allowed:控制隊列中允許哪些事件
pygame.event.get_blocked:測試某種類型的事件是否被隊列阻止
pygame.event.set_grab:控制與其他應用程序共享輸入設備
pygame.event.get_grab:測試程序是否共享輸入設備
pygame.event.set_keyboard_grab:抓取可以捕獲系統鍵盤快捷鍵,例如 Alt+Tab 或 Meta/Super 鍵。
pygame.event.get_keyboard_grab:獲取當前鍵盤抓取狀態
pygame.event.post:將新事件放入隊列中
pygame.event.custom_type:制作自定義用戶事件類型
pygame.event.Event:用于表示事件的 pygame 對象

?11)pygame.examples 各種程序演示了各個 pygame 模塊的使用

pygame.examples.alien.main:播放完整的外星人示例
pygame.examples.stars.main:運行一個簡單的星空示例
pygame.examples.chimp.main:擊中移動的黑猩猩
pygame.examples.moveit.main:在屏幕上顯示動畫對象
pygame.examples.fonty.main:運行字體渲染示例
pygame.examples.freetype_misc.main:運行 FreeType 渲染示例
pygame.examples.vgrade.main:顯示垂直漸變
pygame.examples.eventlist.main:顯示 pygame 事件
pygame.examples.arraymo.main:顯示各種沖浪陣列效果
pygame.examples.sound.main:加載并播放聲音
pygame.examples.sound_array_demos.main:播放各種sndarray效果
pygame.examples.liquid.main:顯示動畫液體效果
pygame.examples.glcube.main:使用 OpenGL 顯示動畫 3D 立方體
pygame.examples.scrap_clipboard.main:訪問剪貼板
pygame.examples.mask.main:使用碰撞檢測顯示多個圖像相互反彈
pygame.examples.testsprite.main:顯示大量移動的精靈
pygame.examples.headless_no_windows_needed.main:寫入一個圖像文件,該圖像文件是輸入文件的平滑縮放副本
pygame.examples.joystick.main:演示操縱桿功能
pygame.examples.blend_fill.main:演示各種 Surface.fill 方法混合選項
pygame.examples.blit_blends.main:使用 Surface.fill 的替代添加劑填充
pygame.examples.cursors.main:顯示兩個不同的自定義光標
pygame.examples.pixelarray.main:顯示各種像素陣列生成的效果
pygame.examples.scaletest.main:使用 smoothscale 交互縮放圖像
pygame.examples.midi.main:運行一個 MIDI 示例
pygame.examples.scroll.main:運行一個顯示放大圖像的 Surface.scroll 示例
pygame.examples.camera.main:顯示從連接的攝像機實時捕獲的視頻
pygame.examples.playmus.main:播放音頻文件

?12)pygame.font 加載和渲染 TrueType 字體

pygame.font.init:初始化字體模塊
pygame.font.quit:取消初始化字體模塊
pygame.font.get_init:true 如果字體模塊已初始化
pygame.font.get_default_font:獲取默認字體的文件名
pygame.font.get_sdl_ttf_version:獲取SDL_ttf版本
pygame.font.get_fonts:獲取所有可用的字體
pygame.font.match_font:在系統上查找特定字體
pygame.font.SysFont:從系統字體創建一個 Font 對象
pygame.font.Font:從文件創建一個新的 Font 對象

?13)pygame.freetype 增強的 pygame 模塊用于加載和渲染字體

pygame.freetype.get_error:返回最新的 FreeType 錯誤
pygame.freetype.get_version:返回 FreeType 版本
pygame.freetype.init:初始化底層 FreeType 庫。
pygame.freetype.quit:關閉底層 FreeType 庫。
pygame.freetype.get_init:如果 FreeType 模塊當前已初始化,則返回 True。
pygame.freetype.was_init:已棄用:使用 get_init() 代替。
pygame.freetype.get_cache_size:返回字形大小寫大小
pygame.freetype.get_default_resolution:返回默認像素大小(以每英寸點數為單位)
pygame.freetype.set_default_resolution:設置模塊的默認像素大小(以每英寸點數為單位)
pygame.freetype.SysFont:從系統字體創建一個 Font 對象
pygame.freetype.get_default_font:獲取默認字體的文件名
pygame.freetype.Font:從支持的字體文件創建新的 Font 實例。

?14)pygame.gfxdraw 抗鋸齒繪制函數

pygame.gfxdraw.pixel:繪制一個像素
pygame.gfxdraw.hline:畫一條水平線
pygame.gfxdraw.vline:畫一條垂直線
pygame.gfxdraw.line:畫一條線
pygame.gfxdraw.rectangle:畫一個矩形
pygame.gfxdraw.box:繪制一個填充的矩形
pygame.gfxdraw.circle:畫一個圓圈
pygame.gfxdraw.aacircle:繪制一個抗鋸齒圓
pygame.gfxdraw.filled_circle:畫一個實心圓
pygame.gfxdraw.ellipse:畫一個橢圓
pygame.gfxdraw.aaellipse:繪制一個抗鋸齒橢圓
pygame.gfxdraw.filled_ellipse:繪制一個實心橢圓
pygame.gfxdraw.arc:畫一個圓弧
pygame.gfxdraw.pie:畫一個餅
pygame.gfxdraw.trigon:畫一個三角形/三角形
pygame.gfxdraw.atrigon:繪制抗鋸齒三角形/三角形
pygame.gfxdraw.filled_trigon:繪制實心三角形/三角形
pygame.gfxdraw.polygon:畫一個多邊形
pygame.gfxdraw.aapolygon:繪制抗鋸齒多邊形
pygame.gfxdraw.filled_polygon:繪制一個填充多邊形
pygame.gfxdraw.textured_polygon:繪制一個有紋理的多邊形
pygame.gfxdraw.bezier:繪制貝塞爾曲線

?15)pygame.image 加載、保存和傳輸表面

pygame.image.load:從文件(或類似文件的對象)加載新圖像
pygame.image.save:將圖像保存到文件(或類似文件的對象)
pygame.image.get_sdl_image_version:獲取正在使用的 SDL_Image 庫的版本號
pygame.image.get_extended:測試是否可以加載擴展圖像格式
pygame.image.tostring:將圖像傳輸到字節緩沖區
pygame.image.tobytes:將圖像傳輸到字節緩沖區
pygame.image.fromstring:從字節緩沖區創建新的 Surface
pygame.image.frombytes:從字節緩沖區創建新的 Surface
pygame.image.frombuffer:創建一個新的 Surface,在字節緩沖區內共享數據
pygame.image.load_basic:從文件(或類似文件的對象)加載新的 BMP 圖像
pygame.image.load_extended:從文件(或類似文件的對象)加載圖像
pygame.image.save_extended:將 png/jpg 圖像保存到文件(或類似文件的對象)

?16)pygame.joystick 管理操縱桿設備

pygame.joystick.init:初始化操縱桿模塊。
pygame.joystick.quit:取消初始化操縱桿模塊。
pygame.joystick.get_init:如果操縱桿模塊已初始化,則返回 True。
pygame.joystick.get_count:返回操縱桿的數量。
pygame.joystick.Joystick:創建一個新的操縱桿對象。

?17)pygame.key 管理鍵盤設備

pygame.key.get_focused:如果顯示器正在接收來自系統的鍵盤輸入,則為 true
pygame.key.get_pressed:獲取所有鍵盤按鈕的狀態
pygame.key.get_mods:確定正在按住哪些修飾鍵
pygame.key.set_mods:臨時設置按下哪些修飾鍵
pygame.key.set_repeat:控制如何重復按住的按鍵
pygame.key.get_repeat:查看按住的按鍵如何重復
pygame.key.name:獲取密鑰標識符的名稱
pygame.key.key_code:從密鑰名稱獲取密鑰標識符
pygame.key.start_text_input:開始處理 Unicode 文本輸入事件
pygame.key.stop_text_input:停止處理 Unicode 文本輸入事件
pygame.key.set_text_input_rect:控制候選列表的位置

?18)pygame.locals Pygame 常量

該模塊包含 pygame 使用的各種常量。其內容自動放置在 pygame 模塊命名空間中。

19)pygame.mixer 加載并播放聲音

pygame.mixer.init:初始化混頻器模塊
pygame.mixer.pre_init:預設混音器初始化參數
pygame.mixer.quit:取消初始化混音器
pygame.mixer.get_init:測試混音器是否已初始化
pygame.mixer.stop:停止播放所有聲道
pygame.mixer.pause:暫時停止所有聲道的播放
pygame.mixer.unpause:恢復暫停的聲道播放
pygame.mixer.fadeout:停止前逐漸減弱所有聲音的音量
pygame.mixer.set_num_channels:設置播放通道總數
pygame.mixer.get_num_channels:獲取播放頻道總數
pygame.mixer.set_reserved:保留頻道不被自動使用
pygame.mixer.find_channel:找到一個未使用的頻道
pygame.mixer.get_busy:測試是否有聲音被混合
pygame.mixer.get_sdl_mixer_version:獲取混音器的 SDL 版本
pygame.mixer.Sound:從文件或緩沖區對象創建新的 Sound 對象
pygame.mixer.Channel:創建一個 Channel 對象來控制播放

20)pygame.mouse 管理鼠標設備和顯示

pygame.mouse.get_pressed:獲取鼠標按鈕的狀態
pygame.mouse.get_pos:獲取鼠標光標位置
pygame.mouse.get_rel:獲取鼠標移動量
pygame.mouse.set_pos:設置鼠標光標位置
pygame.mouse.set_visible:隱藏或顯示鼠標光標
pygame.mouse.get_visible:獲取鼠標光標當前的可見狀態
pygame.mouse.get_focused:檢查顯示器是否正在接收鼠標輸入
pygame.mouse.set_cursor:將鼠標光標設置為新光標
pygame.mouse.get_cursor:獲取當前鼠標光標

21)pygame.mixer.music 播放流媒體音樂曲目

pygame.mixer.music.load:加載音樂文件進行播放
pygame.mixer.music.unload:卸載當前加載的音樂以釋放資源
pygame.mixer.music.play:開始播放音樂流
pygame.mixer.music.rewind:重新開始音樂
pygame.mixer.music.stop:停止音樂播放
pygame.mixer.music.pause:暫時停止音樂播放
pygame.mixer.music.unpause:恢復暫停的音樂
pygame.mixer.music.fadeout:淡出后停止音樂播放
pygame.mixer.music.set_volume:設置音樂音量
pygame.mixer.music.get_volume:獲取音樂音量
pygame.mixer.music.get_busy:檢查音樂流是否正在播放
pygame.mixer.music.set_pos:設置播放位置
pygame.mixer.music.get_pos:獲取音樂播放時間
pygame.mixer.music.queue:將聲音文件排隊以跟隨當前的
pygame.mixer.music.set_endevent:讓音樂在播放停止時發送事件
pygame.mixer.music.get_endevent:獲取播放停止時通道發送的事件

22)pygame.PixelArray 操作圖像像素數據

pygame.PixelArray.surface:獲取 PixelArray 使用的 Surface。
pygame.PixelArray.itemsize:返回像素數組項的字節大小
pygame.PixelArray.my:返回維數。
pygame.PixelArray.shape:返回數組大小。
pygame.PixelArray.strides:返回每個數組維度的字節偏移量。
pygame.PixelArray.make_surface:從當前 PixelArray 創建一個新 Surface。
pygame.PixelArray.replace:將 PixelArray 中傳遞的顏色替換為另一種顏色。
pygame.PixelArray.extract:從 PixelArray 中提取傳遞的顏色。
pygame.PixelArray.compare:將 PixelArray 與另一個 PixelArray 進行比較。
pygame.PixelArray.transpose:交換 x 軸和 y 軸。
pygame.PixelArray.close:關閉 PixelArray,并釋放 Surface 鎖。

23)pygame.Rect 矩形的靈活容器


pygame.Rect.copy:復制矩形
pygame.Rect.move:移動矩形
pygame.Rect.move_ip:將矩形移動到位
pygame.Rect.inflate:增大或縮小矩形尺寸
pygame.Rect.inflate_ip:就地增大或縮小矩形尺寸
pygame.Rect.scale_by:按給定的乘數縮放矩形
pygame.Rect.scale_by_ip:就地增大或縮小矩形尺寸
pygame.Rect.update:設置矩形的位置和大小
pygame.Rect.clamp:將矩形移動到另一個矩形內
pygame.Rect.clamp_ip:將矩形移動到另一個矩形內
pygame.Rect.clip:在另一個矩形內裁剪一個矩形
pygame.Rect.clipline:在矩形內裁剪一條線
pygame.Rect.union:將兩個矩形合并為一個
pygame.Rect.union_ip:將兩個矩形就地連接成一個
pygame.Rect.unionall:許多矩形的并集
pygame.Rect.unionall_ip:許多矩形的并集
pygame.Rect.fit:按長寬比調整矩形大小并移動矩形
pygame.Rect.normalize:正確的負尺寸
pygame.Rect.contains:測試一個矩形是否在另一個矩形內部
pygame.Rect.collidepoint:測試一個點是否在矩形內
pygame.Rect.colliderect:測試兩個矩形是否重疊
pygame.Rect.collidelist:測試列表中的一個矩形是否相交
pygame.Rect.collidelistall:測試列表中的所有矩形是否相交
pygame.Rect.collideobjects:測試列表中的任何對象是否相交
pygame.Rect.collideobjectsall:測試列表中的所有對象是否相交
pygame.Rect.collidedict:測試字典中的一個矩形是否相交
pygame.Rect.collidedictall:測試字典中的所有矩形是否相交

24)pygame.scrap 本機剪貼板訪問

pygame.scrap.init:初始化廢料模塊。
pygame.scrap.get_init:如果 scrap 模塊當前已初始化,則返回 True。
pygame.scrap.get:從剪貼板獲取指定類型的數據。
pygame.scrap.get_types:獲取可用剪貼板類型的列表。
pygame.scrap.put:將數據放入剪貼板。
pygame.scrap.contains:檢查剪貼板中給定類型的數據是否可用。
pygame.scrap.lost:指示 pygame 應用程序是否已丟失剪貼板所有權。
pygame.scrap.set_mode:設置剪貼板訪問模式。

25)pygame.sndarray 操縱聲音樣本數據

pygame.sndarray.array:將聲音樣本復制到數組中
pygame.sndarray.samples:將聲音樣本引用到數組中
pygame.sndarray.make_sound:將數組轉換為 Sound 對象
pygame.sndarray.use_arraytype:設置用于聲音陣列的陣列系統
pygame.sndarray.get_arraytype:獲取當前活動的數組類型。
pygame.sndarray.get_arraytypes:獲取當前支持的陣列系統類型。

26)pygame.tests 測試pygame

pygame.tests.run:運行 pygame 單元測試套件

27)pygame.time 管理時間和幀率

pygame.time.get_ticks:獲取以毫秒為單位的時間
pygame.time.wait:暫停程序一段時間
pygame.time.delay:暫停程序一段時間
pygame.time.set_timer:在事件隊列中重復創建事件
pygame.time.Clock:創建一個對象來幫助跟蹤時間

28)pygame.transform 調整圖像大小并移動圖像

pygame.transform.flip:垂直和水平翻轉
pygame.transform.scale:調整大小到新分辨率
pygame.transform.scale_by:使用標量調整大小到新分辨率
pygame.transform.rotate:旋轉圖像
pygame.transform.rotozoom:過濾縮放和旋轉
pygame.transform.scale2x:專門的圖像倍增器
pygame.transform.smoothscale:平滑地將表面縮放到任意尺寸
pygame.transform.smoothscale_by:使用標量調整大小到新分辨率
pygame.transform.get_smoothscale_backend:返回正在使用的 smoothscale 濾波器版本:“GENERIC”、“MMX”或“SSE”
pygame.transform.set_smoothscale_backend:將 smoothscale 濾波器版本設置為以下之一:“GENERIC”、“MMX”或“SSE”
pygame.transform.chop:獲取已刪除內部區域的圖像的副本
pygame.transform.laplacian:查找曲面中的邊緣
pygame.transform.average_surfaces:從多個曲面中找出平均曲面。
pygame.transform.average_color:求表面的平均顏色
pygame.transform.grayscale:對表面進行灰度化
pygame.transform.threshold:查找表面中的哪些像素以及有多少像素在“search_color”或“search_surf”的閾值內。

二、Pygame的安裝和使用

1、安裝

pip install pygame

2、應用案例

1)按鍵(Alt + W/A/S/D)操作小球移動

# -*- coding:utf-8 -*-
import pygame# 初始化pygame
pygame.init()# 設置窗口標題
title = "Pygame應用案例-按鍵移動的小球"
pygame.display.set_caption(title)screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
dt = 0player_pos = pygame.Vector2(screen.get_width() / 2, screen.get_height() / 2)while running:# 事件輪詢 - pygame.QUIT 事件表示用戶單擊X關閉您的窗口for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 用一種顏色填充屏幕以擦除上一幀中的任何內容screen.fill("purple")pygame.draw.circle(screen, "red", player_pos, 40)keys = pygame.key.get_pressed()if keys[pygame.K_w]:player_pos.y -= 300 * dtif keys[pygame.K_s]:player_pos.y += 300 * dtif keys[pygame.K_a]:player_pos.x -= 300 * dtif keys[pygame.K_d]:player_pos.x += 300 * dt# 更新全部顯示 pygame.display.flip()# 將FPS限制為60# dt是自上一幀以來的增量時間(以秒為單位),用于幀速率dt = clock.tick(60) / 1000pygame.quit()

2)規則移動的小球

# -*- coding:utf-8 -*-
import sys
import pygame# 初始化pygame
pygame.init()# 設置窗口標題
title = "Pygame應用案例-規則移動的小球"
pygame.display.set_caption(title)# 顯示窗口
width = 800
height = 600
screen = pygame.display.set_mode((width, height))  ball = pygame.image.load("ball.png")  # 加載圖片
ballrect = ball.get_rect()  # 根據圖片大小獲取矩形區域speed = [5, 5]  # 設置移動的X軸、Y軸距離
clock = pygame.time.Clock()  # 創建時鐘對象
# 執行死循環,確保窗口一直顯示
while True:# 表示每秒鐘60次幀刷新clock.tick(60)# 檢查事件for event in pygame.event.get():if event.type == pygame.QUIT:  # 如果點擊關閉窗口,則退出pygame.quit()  # 退出pygamesys.exit()ballrect = ballrect.move(speed)  # 通過再次賦值移動小球# 碰到左右邊緣if ballrect.left < 0 or ballrect.right > width:speed[0] = -speed[0]  #如果碰到邊距則反方向移動# 碰到上下邊緣if ballrect.top < 0 or ballrect.bottom > height:speed[1] = -speed[1]# 填充顏色screen.fill("purple")# 此函數是將圖片推送到窗口上,第一個參數為圖片第二個參數為圖片位置screen.blit(ball, ballrect) # 更新全部顯示 pygame.display.flip()  pygame.quit()

更多游戲案例可前往官網(https://www.pygame.org/tags/all)下載并查看?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167604.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167604.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167604.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單鏈表的反轉?太細了哥們!細到離譜!

單鏈表的反轉&#xff08;面試常出&#xff09;&#xff1a; ? 單鏈表的反轉&#xff0c;可以通過很多種方法實現。包括迭代法&#xff0c;遞歸法&#xff0c; 迭代法&#xff1a; 定義三個指針&#xff1a;prev、current和next&#xff0c;它們分別表示前一個節點、當前節點…

NSGA-III求解微電網多目標優化調度(MATLAB)

一、NSGA-III簡介 NSGA-III算法由Kalyanmoy Deb和Himanshu Jain于 2014年提出。 參考文獻&#xff1a;Deb K , Jain H . An Evolutionary Many-Objective Optimization Algorithm Using Reference Point-Based Nondominated Sorting Approach, Part I: Solving Problems With …

[chroot+seccomp逃逸] THUCTF2019 之 固若金湯

題目分析 附件為一個源碼, 其中注釋我都寫好了, 主要就講關鍵的知識點. #define _GNU_SOURCE#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <string.h> #include <errno.h> #include <sched.h> #include <uni…

【C/PTA —— 10.函數1(課外實踐)】

C/PTA —— 10.函數1&#xff08;課外實踐&#xff09; 一.函數題6-1 符號函數6-2 求排列數6-3 求一個大于10的n位整數w的后n-1位的數&#xff0c;并作為函數值返回。6-4 其右上三角&#xff08;含主對角線&#xff09;元素之和。6-5 字符串比較6-6 使用函數求素數和6-7 使用函…

【電子通識】為什么說做產品不是簡單的將不同的技術進行搭積木?

很多人說做產品的硬件工程師&#xff0c;其實就是將專項技術工程師已經調好的模塊進行拼接。類似于小孩將積木搭成一個房子的形狀&#xff0c;雖然不同人搭的房子風格迥異&#xff0c;但所使用的原材料卻都是一樣的。 首先我并不同意這種看法&#xff0c;原因是產品工程師是需要…

JVM深入理解

JVM深入理解&#xff08;一&#xff09; JVM是什么 JRE、JDK和JVM 的關系 JVM原理 1、JVM是什么&#xff1f; JVM是Java Virtual Machine&#xff08;Java虛擬機&#xff09;的縮寫&#xff0c;由一套字節碼指令集、一組寄存器、一個棧、一個垃圾回收堆和一個存儲方法域等組…

MediaCodec詳解

MediaCodec 是Android平臺提供的一個API&#xff0c;用于對音頻和視頻數據進行編碼&#xff08;轉換為不同的格式&#xff09;和解碼&#xff08;從一種格式轉換回原始數據&#xff09;。它是Android 4.1&#xff08;API級別16&#xff09;及以上版本的一部分&#xff0c;允許開…

Sulfo-CY5 Azide在其他生物學研究中的應用

除了生物成像、生物分子標記、分子生物學研究和生物傳感與診斷等領域外&#xff0c;Sulfo-CY5 Azide還在其他生物學研究中有多種應用&#xff0c;**(來自星戈瑞的花菁染料)**如下&#xff1a; ****細胞追蹤和細胞遷移研究&#xff1a;****Sulfo-CY5 Azide可以被用作細胞標記劑&…

【教3妹學編程-算法題】統計和小于目標的下標對數目

2哥 : 3妹&#xff0c;OpenAI的宮斗劇迎來了大結局&#xff01;OpenAI宣布阿爾特曼復職CEO&#xff0c;董事會重組 3妹&#xff1a;啊&#xff1f;到底誰才是幕后操縱者啊&#xff0c;有咩有揪出來 2哥 : 也不是很清楚&#xff0c;據說在被開除的幾周前&#xff0c;前CEO曾譴責…

Linux 家目錄和根目錄

摘要&#xff1a; 在 Linux 操作系統中&#xff0c;家目錄和根目錄是兩個非常重要的概念。它們是 Linux 文件系統中的兩個關鍵節點&#xff0c;為用戶和系統進程提供存儲、管理和訪問文件和目錄的接口。本文旨在深入探討和理解這兩個目錄的結構、功能和使用方式&#xff0c;同時…

行情分析 - - 加密貨幣市場大盤走勢(11.24)

大餅昨日震蕩幅度很小&#xff0c;而今天延續昨日的空頭思路。當然如果從MACD日線來看&#xff0c;處于上漲趨勢&#xff0c;穩健的可以選擇觀望等待。空頭思路是因為目前EMA21均線和EMA55均線依然保持很遠&#xff0c;最近兩個月BTC上漲40%&#xff0c;而最近持續保持高位很快…

同時可視化原始中心點和經過坐標轉換后的中心點

std::vector<Eigen::Vector2d> centroids_unknown_motion_underk;std::vector<Eigen::Vector2d> measurements_centroids_unknown_motion_k= transformLandmarks(centroids_unknown_motion_k, weights_pose); // 數據填充 // k時刻經過轉換到k-1時刻坐標系下的中心…

Twincat使用:EtherCAT通信掃描硬件設備鏈接PLC變量

EtherCAT通信采用主從架構&#xff0c;其中一個主站設備負責整個EtherCAT網絡的管理和控制&#xff0c;而從站設備則負責在數據環網上傳遞數據。 主站設備可以是計算機、工控機、PLC等&#xff0c; 而從站設備可以是傳感器、執行器、驅動器等。 EL3102:MDP5001_300_CF8D1684;…

Arduino驅動PT100數字K型高溫傳感器(溫濕度傳感器)

目錄 1、傳感器特性 2、控制器和傳感器連線圖 3、硬件原理圖 4、驅動程序 PT100適用于大部分400℃以下高溫的測量,但是通常家用天然氣灶焰芯溫度可達800℃以上,燒制陶瓷的窖子或者大功率電爐溫度更可超過1000℃,在這些超高溫度的場景下就需要用到K型熱電偶。

C# 無法將“int[]“類型隱式轉換為“int?[]“,無法將“string[]“類型隱式轉換為“string?[]“

在 C# 中&#xff0c;不能將 int[] 隱式轉換為 int?[]&#xff0c;因為它們是兩種不同的類型。int[] 是一個整數數組&#xff0c;而 int?[] 是一個可空整數數組。要解決這個問題&#xff0c;你可以使用顯式轉換或創建一個新的可空整數數組。 兩種解決方案供大家選擇 // 示例…

C++編程——輸入

#include<bits/stdc.h> using namespace std; int main(){//beginint a 0, b 0, c 0, d 0, e 0;char f1, f2;char g[30];scanf("%d", &a); //輸入整數并賦值給變量ascanf("%d", &b); //輸入整數并賦值給變量bscanf("%d", &…

關于愛普生L3219彩色噴墨打印機打印過程中噪聲過大的幾點緩解方法

故障描述&#xff1a; 一臺新購買的愛普生L3219使用過程中出現了噪聲過大的問題&#xff0c;每次打印或者復印都或有明顯的噪音過大的現象&#xff0c;目測觀察大概是打印機字車左右來回移動的時候剮蹭滑道的問題&#xff0c;與經銷商溝通后由經銷商聯系上級供貨商更換一臺全新…

CAN實驗

CAN 寄存器 HAL庫函數 代碼 #include "./BSP/CAN/can.h"CAN_HandleTypeDef g_can1_handle; CAN_TxHeaderTypeDef g_can1_txheader; CAN_RxHeaderTypeDef g_can1_rxheader;/* STM32F103 TS1 8 TS2 7 BRP 3 波特率&#xff1a;36000 / [(9 8 1) * 4] 500Kbps …

Qt學習(2)

1.QObject 只有繼承了QObject類的類&#xff0c;才具有信號槽的能力。所以&#xff0c;為了使用信號槽&#xff0c;必須繼承QObject。凡是QObject類&#xff08;不管是直接子類還是間接子類&#xff09;&#xff0c;都應該在第一行代碼寫上Q_OBJECT。不管是不是使用信號槽&…

【Java 進階篇】Jedis 操作 String:Redis中的基礎數據類型

在Redis中&#xff0c;String是最基礎的數據類型之一&#xff0c;而Jedis作為Java開發者與Redis交互的利器&#xff0c;提供了豐富的API來操作String。本文將深入介紹Jedis如何操作Redis中的String類型數據&#xff0c;通過生動的代碼示例和詳細的解釋&#xff0c;讓你輕松掌握…