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.hqwc.cn/news/215093.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java技术的社区交易二手平台

基于java技术的社区交易二手平台的设计与实现 &#xff08;一&#xff09;开发背景 随着因特网的日益普及与发展&#xff0c;更多的人们开始通过因特网来寻求便利。但是&#xff0c;许多人都觉得网上商店里的东西不贵。所以&#xff0c;有些顾客宁愿去那些用二次定价建立起来的…

全球服的游戏服务器架构设计

全球服的游戏服务器架构设计 版权声明 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明 文章内容不得删减、修改、演绎 相关学习资料见文末 主题 常见服务器端架构划分 不同类型游戏的架构选择与瓶颈 如何设计通用、可伸缩的…

BGP联邦及路由反射器配置

需求 1 AS1存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能再任何协议中宣告 AS3存在两个环回&#xff0c;一个地址为192.168.2.0/24&#xff0c;该地址不能再任何协议中宣告 AS1还有一个环回地址为10.1.1.0/24&#xff0c;AS3另一个环回地址是11.1.1…

2048 数字合成大作战,Android小游戏开发

A. 项目描述 《2048》是一款经典的益智小游戏&#xff0c;它的目标是通过合并相同数字来达到2048这个最高分。 该游戏规则简单&#xff0c;玩家需要通过滑动屏幕来移动方块&#xff0c;相同数字的方块会合并成一个新的数字方块。这样的简单操作让人可以轻松上手。 《2048》小…

H5ke12--1--iframe标签制作页面的使用

上次说到 如何我们的数据html页面返回到服务器,服务器到html.submit不要了,直接button普通按钮,action也不用,,,fetch直接异步请求,那么就会有数据发送到服务器 Repones.write写入就行了,直接写的就是html页面演示 这次我们来看iframe, H5加入了传输页面的新的事件 注意 link、…

vivado产生报告阅读分析19-设计收敛报告

Challenging Timing Paths “ Challenging Timing Paths ” &#xff08; 时序收敛困难的路径 &#xff09; 部分列出了“ Assessment Details ” &#xff08; 评估详情 &#xff09; 部分中未能通过检查的时序路径的关键属性。默认情况下&#xff0c; 该命令会对每个时钟组中…

计算机组成原理-磁盘存储器

文章目录 总览外存储器磁盘存储器磁盘的性能指标磁盘地址磁盘的工作过程磁盘阵列 总结 总览 外存储器 机械硬盘即磁盘 磁盘存储器 写是利用电流产生磁场从而写磁盘 读是利用载磁体移动时产生的电场从而得到数据 磁性材质易受外界磁场干扰 下图中 载磁体上N S的前后顺序代表对…

C++之unordered_map/set的使用

前面我们已经学习了STL中底层为红黑树结构的一系列关联式容器——set/multiset 和 map/multimap(C98). unordered系列关联式容器 在C98中, STL提供了底层为红黑树结构的一系列关联式容器, 在查询时效率可达到log2N,即最差情况下需要比较红黑树的高度次, 当树中的节点非常多时,…

stack和queue

目录 stack 介绍 头文件 简单使用 constructor empty size top push pop swap 使用 queue 介绍 头文件 简单使用 constructor empty size front back push pop swap 使用 stack 介绍 栈 先进后出 头文件 #include <stack> 简单使用 constru…

能耗在线监测系统在项目建设中的应用

安科瑞 华楠 摘要&#xff1a;基于能耗在线监测项目建设实践&#xff0c;对该类项目的建设内容进行了全要素分析, 提出了该类项目的建设技术方案。对相关项目在节能减排工作中的实际应用进行了系统研究&#xff0c;提出了项目的关键技术内容、系统架构和应用功能体系三大主要建…

Python接口自动化测试——如何搭建测试环境

前言 接口测试的方式有很多&#xff0c;比如可以用工具&#xff08;jmeter,postman&#xff09;之类&#xff0c;也可以自己写代码进行接口测试&#xff0c;工具的使用相对来说都比较简单&#xff0c;重点是要搞清楚项目接口的协议是什么&#xff0c;然后有针对性的进行选择&a…

持续集成交付CICD:GitLabCI 通过trigger触发流水线

目录 一、理论 1.GitLabCI 二、实验 1.搭建共享库项目 2.GitLabCI 通过trigger触发流水线 三、问题 1.项目app02未触发项目app01 2.GitLab 报502网关错误 一、理论 1.GitLabCI (1) 概念 GitLab CI&#xff08;Continuous Integration&#xff09;是一种持续集成工具…