Python之Pygame游戏编程详解

news2024/11/15 8:23:26

一、介绍

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 = 0

player_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 * dt
    if keys[pygame.K_s]:
        player_pos.y += 300 * dt
    if keys[pygame.K_a]:
        player_pos.x -= 300 * dt
    if keys[pygame.K_d]:
        player_pos.x += 300 * dt

    # 更新全部显示 
    pygame.display.flip()

    # 将FPS限制为60
    # dt是自上一帧以来的增量时间(以秒为单位),用于帧速率
    dt = clock.tick(60) / 1000

pygame.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()  # 退出pygame
            sys.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.coloradmin.cn/o/1248115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】聚类(一):原型聚类:K-means聚类

文章目录 一、实验介绍1. 算法流程2. 算法解释3. 算法特点4. 应用场景5. 注意事项 二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. Kmeans类a. 构造函数b. 闵可夫斯基距离c. 初始化簇心d. K-means聚类e. 聚类结果可视化 2. 辅助函数3. 主函数a. 命令…

Jetson Orin Nano 内核编译

首先是安装编译环境所需的依赖 sudo apt-get install git bison flex libssl-dev zip libncurses-dev makesudo apt-get install build-essential bc下载交叉编译器以及代码&#xff0c;官方链接: link https://developer.nvidia.com/embedded/jetson-linux 解压下载的两个文件…

JVM之jvisualvm多合一故障处理工具

jvisualvm多合一故障处理工具 1、visualvm介绍 VisualVM是一款免费的&#xff0c;集成了多个 JDK 命令行工具的可视化工具&#xff0c;它能为您提供强大的分析能力&#xff0c;对 Java 应 用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回…

应用内测分发平台如何上传应用包体?

●您可免费将您的应用&#xff08;支持苹果.ios安卓.apk文件&#xff09;上传至咕噜分发平台&#xff0c;我们将免费为应用生成下载信息&#xff0c;但咕噜分发将会对应用的下载次数进行收费&#xff08;每个账号都享有免费赠送的下载点数以及参加活动的赠送点数&#xff09;&a…

RTMDet原理与代码解析

paper&#xff1a;RTMDet: An Empirical Study of Designing Real-Time Object Detectors official implementation&#xff1a;https://github.com/open-mmlab/mmdetection/tree/main/configs/rtmdet 本文的创新点 Backbone and Neck 在backbone的basic building block中采…

Spark SQL 时间格式处理

初始化Spark Sql package pbcp_2023.clear_dataimport org.apache.spark.SparkConf import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions.{current_date, current_timestamp}object twe_2 {def main(args: Array[String]): Unit {val con new …

js获取时间日期

目录 Date 对象 1. 获取当前时间 2. 获取特定日期时间 Date 对象的方法 1. 获取各种日期时间组件 2. 获取星期几 3. 获取时间戳 格式化日期时间 1. 使用 toLocaleString() 方法 2. 使用第三方库 UNIX 时间戳 内部表示 时区 Date 对象 JavaScript中内置的 Date 对象…

获取DOM元素和类型判断

一、获取dom元素 <div id"one" class"one">我是第一个div</div> <div>我是第二个div</div> <div name"username">我是第三个div</div> <input type"text" name"username"> 1.qu…

【完美世界】叶倾仙强势登场,孔雀神主VS护道人,石昊重逢清漪

Hello,小伙伴们&#xff0c;我是拾荒君。 《完美世界》国漫第138集已更新。在这一集中&#xff0c;天人族的行为让人大跌眼镜&#xff0c;他们不仅没有对石昊感恩戴德&#xff0c;反而一心想要夺取他身上的所有秘法宝术。天人族的护道人登场&#xff0c;试图以强大的实力压制石…

Theta*: Any-Angle Path Planning on Grids 原文翻译

Theta*: Any-Angle Path Planning on Grids 文章目录 Theta*: Any-Angle Path Planning on Grids翻译摘要1.Introduction2. Path-Planning Problem and Notation3. Existing Terrain Discretizations4.Existing Path-Planning Algorithms4.1 A* on GridsA* with Post-Smoothed …

2023年【R1快开门式压力容器操作】考试资料及R1快开门式压力容器操作复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 R1快开门式压力容器操作考试资料参考答案及R1快开门式压力容器操作考试试题解析是安全生产模拟考试一点通题库老师及R1快开门式压力容器操作操作证已考过的学员汇总&#xff0c;相对有效帮助R1快开门式压力容器操作复…

python获取json所有节点和子节点

使用python获取json的所有父结点和子节点 并使用父节点加下划线命名子节点 先展示一段json代码 {"level1": {"level2": {"level3": [{"level4": "4value"},{"level4_2": "4_2value"}]},"level2_…

毅速丨3D打印随形水路为何受到模具制造追捧

在模具制造行业中&#xff0c;随形水路镶件正逐渐成为一种革命性的技术&#xff0c;其提高冷却效率、优化产品设计、降低成本等优点&#xff0c;为模具制造带来了巨大的创新价值。 随形水路是一种根据产品形状定制的冷却水路&#xff0c;其镶件可以均匀地分布在模具的表面或内部…

迪科DTC-F81收费机DTC-F82

迪科DTC-F81收费机是一款挂式收费机&#xff0c;广泛应用的学校食堂刷卡消费&#xff0c;DTC-F82收费机是台式消费机&#xff0c;常用在学校超市&#xff0c;放在桌子上使用的&#xff0c;这2款消费机是迪科畅销机型&#xff0c;如下图 机器质量可靠稳定&#xff0c;不少用户使…

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

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

2024北京林业大学计算机考研分析

24计算机考研|上岸指南 北京林业大学 特色优势 Characteristics & Advantages&#xff1a;信息学院创建于2001年&#xff0c;是一个年轻而有朝气的学院。学院秉承“结构、特色、质量、创新”的八字方针&#xff0c;坚持以“质量提升、行业融合”为核心的内涵式发展战略&am…

在Linux上搭建JavaWeb项目运行环境

文章目录 安装JDK安装Tomcat安装数据库 安装JDK 安装Oracle官方的JDK比较麻烦&#xff0c;我们在此处选择安装开源社区维护的openjdk。他们俩的差别不大且兼容。 安装Tomcat 我们把本地下载好的 tomcat.zip 包拖到Linux页面上&#xff0c;让Linux也有一个zip包&#xff0c;再…

运动鞋品牌识别

一、前期工作 1. 设置GPU from tensorflow import keras from tensorflow.keras import layers,models import os, PIL, pathlib import matplotlib.pyplot as plt import tensorflow as tfgpus tf.config.list_physical_devices("GPU")if gpus:gpu0 …

网络安全工程师究竟是什么?怎么入门?

首先啊骚年们我们必须先了解网络安全这个行业究竟是干啥的。 是打ctf的&#xff1f;一个个都像韩商言吴白那么帅刷刷敲几个代码就能轻易夺旗&#xff1f; 还是像十大黑客之一的米特尼克一样闯入了“北美空中防务指挥系统”的计算机主机内&#xff0c;还在被通缉逃跑期间控制了…

【多线程】Thread类的使用

目录 1.概述 2.Thread的常见构造方法 3.Thread的几个常见属性 4.启动一个线程-start() 5.中断一个线程 5.1通过共享的标记来进行沟通 5.2 调用 interrupt() 方法来通知 6.等待一个进程 7.获取当前线程引用 8.线程的状态 8.1所有状态 8.2线程状态和转移的意义 1.概述 …