Pygame
对象(总体)
surface
| 方法 |
说明 |
| fill(color,Rect) |
|
| blit(surface对象,绘制到的区域,surface中用于绘制的部分区域) |
( ,[(x,y),Rect],Rect) |
| get_width() |
|
| get_height() |
|
| get_size() |
return (w,h) |
| get_rect() |
return Rect |
| subsurface(Rect) |
创建子Surface |
pygame.display(窗口图层)
| 方法 |
说明 |
| set_mode(size,flags,depth) |
size:(x,y) flags:创建模式,[pygame.FULLSCREEN(全屏),pygame.HWSURFACE(硬件加速窗口图层),pygame.OPENGL,pygame.RESIZABLE(可缩放窗口图层),pygame.DOUBLEBUF(双缓冲区窗口),pygame.NOFRAME(无边框窗口)],depth:颜色位深 |
| set_caption(title) |
|
| set_icon(Surface) |
|
| flip() |
双缓冲区模式更新整个图层 |
| update(Rect) |
普通模式,可选区域 |
pygame.image
| 方法 |
说明 |
| load() |
|
| convert_alpha() |
将Surface对象转换为带alpha通道的格式(可能更快) |
| scale(size) |
返回一个尺寸为size的新Surface |
| rotate(angle) |
返回一个旋转后的Surface,正逆负顺 |
| rotozoom(angle,(x_rate,y_rate)) |
返回旋转且按比例放缩的Surface |
pygame.draw
| 方法 |
说明 |
| line() |
surface:要在其上绘制线条的Surface对象。 color:线条的颜色,通常是一个RGB元组,例如(255, 0, 0)表示红色。 start_pos:线条的起始位置,是一个元组(x, y)。 end_pos:线条的结束位置,也是一个元组(x, y)。 width(可选):线条的宽度,默认为1。 |
| lines() |
surface:要在其上绘制线条的Surface对象。 color:线条的颜色,通常是一个RGB元组。 closed:一个布尔值,指示是否将线条的起点和终点相连以形成一个闭合形状。 pointlist:一个点的列表,每个点都是一个(x, y)元组,表示线条的顶点。 width(可选):线条的宽度,默认为1 |
| rect() |
surface:要在其上绘制矩形的Surface对象。 color:矩形的颜色,通常是一个RGB元组,例如(255, 0, 0)表示红色。 rect:一个pygame.Rect对象,表示要绘制的矩形的位置和尺寸。 width(可选):矩形边框的宽度,默认为0,表示填充矩形。如果大于0,则表示绘制矩形边框的宽度 |
| polygon() |
surface:要在其上绘制多边形的Surface对象。 color:多边形的颜色,通常是一个RGB元组,例如(255, 0, 0)表示红色。 pointlist:一个点的列表,每个点都是一个(x, y)元组,表示多边形的顶点。这些点应该按照顺序连接,最后一个点会自动与第一个点相连,以形成一个闭合的多边形。 width(可选):多边形边框的宽度,默认为0,表示填充多边形。如果大于0,则表示绘制多边形边框的宽度。 |
| circle() |
surface:要在其上绘制圆形的Surface对象。 color:圆形的颜色,通常是一个RGB元组,例如(255, 0, 0)表示红色。 pos:圆心的位置,是一个(x, y)元组。 radius:圆的半径。 width(可选):圆形边框的宽度,默认为0,表示填充圆形。如果大于0,则表示绘制圆形边框的宽度。 |
| ellipse() |
surface:要在其上绘制椭圆的Surface对象。 color:椭圆的颜色,通常是一个RGB元组,例如(255, 0, 0)表示红色。 rect:一个pygame.Rect对象,表示椭圆外接矩形的位置和尺寸。 width(可选):椭圆边框的宽度,默认为0,表示填充椭圆。如果大于0,则表示绘制椭圆边框的宽度。 |
| arc() |
surface:要在其上绘制圆弧的Surface对象。 color:圆弧的颜色,通常是一个RGB元组,例如(255, 0, 0)表示红色。 rect:一个pygame.Rect对象,表示圆弧外接矩形的位置和尺寸。 start_angle:圆弧的起始角度,以度为单位,0度表示正右方,顺时针方向增加。 stop_angle:圆弧的终止角度,以度为单位。 width(可选):圆弧边框的宽度,默认为1,表示绘制圆弧边框的宽度。如果设置为0,则不会绘制圆弧,但可以用来填充圆弧所对应的扇形区域。 |
pygame.font
| 方法 |
说明 |
| SysFont() |
返回字体对象 name:系统字体的名称。如果指定为None,pygame将使用默认的系统字体。 size:字体的大小,以像素为单位。 bold(可选):是否启用粗体效果,默认为False。 italic(可选):是否启用斜体效果,默认为False。 |
| Font() |
返回字体对象 filename:字体文件的路径,它可以是TrueType字体(.ttf)或OpenType字体(.otf)文件。 size:字体的大小,以像素为单位。 |
font对象
| 字体对象方法 |
说明 |
| set_bold(bool) |
是否加粗 |
| set_italic(bool) |
是否倾斜 |
| set_underlines() |
是否添加下划线 |
| render() |
返回一个Surface对象, text:要渲染的文本字符串。 antialias:一个布尔值,指定是否启用抗锯齿效果。如果设置为True,则文本边缘会更加平滑。 color:文本的颜色,通常是一个RGB元组,例如(255, 255, 255)表示白色。 background(可选):文本的背景色,也是一个RGB元组。如果指定了背景色,渲染出的Surface对象将包含这个背景色 |
|
|
pygame.time
| 方法 |
说明 |
| get_tick |
返回运行时间 |
| wait() |
等待一段时间(毫秒) |
| delay() |
|
| set_timer() |
设置一个计时器,定时触发事件。 eventid:一个用户定义的事件ID,它必须是一个正整数。这个ID用于标识定时器事件,以便在事件队列中识别它。 milliseconds:定时器触发的时间间隔,以毫秒为单位。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import pygame import sys pygame.init()
screen = pygame.display.set_mode((640, 480))
TIMER_EVENT = pygame.USEREVENT + 1 TIME_INTERVAL = 1000
pygame.time.set_timer(TIMER_EVENT, TIME_INTERVAL)
running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == TIMER_EVENT: print("定时器事件触发!") pygame.display.flip() pygame.quit() sys.exit()
|
Clock() 创建并返回Clock对象
Clock对象
| clock对象方法 |
说明 |
| tick(FPS) |
设置FPS |
| get_fps() |
|
pygame.event
| 类属性 |
说明 |
| type |
类型标识符 |
| dict |
专有属性字典 |
pygame.event.get()获取所有事件对象组成的列表。
事件对象类型标识符
| 类型标识符 |
专有属性 |
解释 |
| pygame.QUIT |
无 |
退出事件,当用户尝试关闭窗口时触发 |
| pygame.ACTIVEEVENT |
gain, state |
活动事件,与窗口的激活状态有关 |
| pygame.KEYDOWN |
unicode, key, mod |
键盘按键按下事件,包含按下的Unicode字符、按键代码和修饰键状态 |
| pygame.KEYUP |
key, mod |
键盘按键释放事件,包含按键代码和修饰键状态 |
| pygame.MOUSEMOTION |
pos, rel, buttons |
鼠标移动事件,包含当前位置、相对移动和按下的按钮状态 |
| pygame.MOUSEBUTTONDOWN |
pos, button |
鼠标按钮按下事件,包含按下时的位置和按钮编号 |
| pygame.MOUSEBUTTONUP |
pos, button |
鼠标按钮释放事件,包含释放时的位置和按钮编号 |
| pygame.JOYAXISMOTION |
joy, axis, value |
游戏手柄轴运动事件,包含手柄ID、轴编号和轴值 |
| pygame.JOYBALLMOTION |
joy, ball, rel |
游戏手柄球运动事件,包含手柄ID、球编号和相对运动值 |
| pygame.JOYHATMOTION |
joy, hat, value |
游戏手柄帽子(方向帽)运动事件,包含手柄ID、帽子编号和方向值 |
| pygame.JOYBUTTONDOWN |
joy, button |
游戏手柄按钮按下事件,包含手柄ID和按钮编号 |
| pygame.JOYBUTTONUP |
joy, button |
游戏手柄按钮释放事件,包含手柄ID和按钮编号 |
| pygame.VIDEORESIZE |
size, w, h |
视频窗口大小改变事件,包含新的窗口大小(宽高对)和单独的宽高值 |
| pygame.VIDEOEXPOSE |
无 |
视频窗口暴露事件,通常不需要用户处理 |
| pygame.USEREVENT |
自定义属性 |
用户自定义事件,类型标识符值应大于等于pygame.USEREVENT,用户可自定义属性和值 |
解释说明:
- gain, state(ACTIVEEVENT):
gain属性表示窗口是否获得焦点,state属性表示窗口的激活状态(如最小化、最大化等)。
- unicode, key, mod(KEYDOWN/KEYUP):
unicode属性包含按下的Unicode字符(对于非特殊键),key属性是按键的pygame常量代码,mod属性表示按下时是否同时按下了修饰键(如Ctrl、Shift等)。
- pos, rel, buttons(MOUSEMOTION):
pos属性表示鼠标的当前位置(窗口坐标系),rel属性表示自上次事件以来的相对移动,buttons属性表示当前按下的鼠标按钮状态。
- pos, button(MOUSEBUTTONDOWN/MOUSEBUTTONUP):
pos属性表示事件触发时的鼠标位置,button属性是按下或释放的按钮编号。
- joy, axis, value(JOYAXISMOTION):
joy属性表示触发事件的手柄ID,axis属性是轴的编号,value属性是轴的位置值。
- size, w, h(VIDEORESIZE):
size属性是一个包含新窗口宽度和高度的元组,w和h属性分别是新的窗口宽度和高度。
- 自定义属性(USEREVENT):用户自定义事件可以包含任何自定义的属性名和值,用于在程序中传递自定义信息。
窗口事件
| 事件类型 |
事件描述 |
详细解释 |
| pygame.QUIT |
用户尝试关闭窗口时触发的事件 |
当用户点击窗口的关闭按钮或按下特定的关闭快捷键时,pygame会触发QUIT事件。在事件循环中捕获此事件,可以安全地退出游戏或应用程序。 |
| pygame.WINDOWEVENT |
与窗口相关的事件,如窗口创建、销毁、移动、调整大小等 |
WINDOWEVENT是一个通用的事件类型,用于表示与窗口相关的各种事件。它包含多个子类型,如WINDOWEVENT_CLOSE(窗口关闭)、WINDOWEVENT_RESIZED(窗口大小调整)、WINDOWEVENT_MOVED(窗口移动)等。通过检查WINDOWEVENT的事件子类型,可以对窗口的不同状态变化做出响应。 |
| pygame.VIDEORESIZE |
窗口大小改变时触发的事件 |
当用户调整窗口大小时,pygame会触发VIDEORESIZE事件。此事件包含新的窗口尺寸信息,允许程序根据新的窗口大小调整渲染区域或游戏逻辑。 |
详细解释补充:
pygame.QUIT
- 背景:在pygame程序中,用户可能随时想要退出游戏或应用程序。
- 过程:当用户点击窗口的关闭按钮(通常位于窗口的右上角)或按下系统指定的关闭快捷键(如Alt+F4)时,操作系统会通知pygame窗口即将关闭。
- 影响:pygame捕捉到QUIT事件后,程序应该执行清理操作(如释放资源、保存游戏状态等),并通过调用
pygame.quit()和sys.exit()安全地退出。
pygame.WINDOWEVENT
- 背景:窗口是pygame程序与用户交互的主要界面,窗口的状态变化(如移动、调整大小、获得/失去焦点等)会影响用户的游戏体验。
- 过程:当窗口发生状态变化时,pygame会将这些变化封装为WINDOWEVENT事件,并放入事件队列中。程序通过检查事件队列中的事件,可以获取窗口的最新状态。
- 影响:根据WINDOWEVENT的事件子类型,程序可以做出相应的响应。例如,如果窗口被关闭,程序可以执行退出操作;如果窗口大小被调整,程序可以重新调整渲染区域以适应新的窗口尺寸。
pygame.VIDEORESIZE
- 背景:用户可能希望根据自己的屏幕分辨率或偏好调整pygame窗口的大小。
- 过程:当用户拖动窗口的边缘以改变其大小时,pygame会检测到这一变化,并触发VIDEORESIZE事件。此事件包含新的窗口宽度和高度信息。
- 影响:程序捕捉到VIDEORESIZE事件后,可以根据新的窗口尺寸重新调整游戏画面或渲染区域的大小,以确保游戏内容能够正确地显示在窗口中。这有助于提升用户体验和游戏的可访问性。
键盘事件
| 事件类型 |
事件描述 |
详细解释 |
| pygame.KEYDOWN |
键盘按键按下事件 |
当用户按下键盘上的任何按键时,pygame会触发KEYDOWN事件。此事件包含多个属性,如unicode(按键的Unicode字符,但通常不推荐使用,因为它依赖于平台)、key(按键的常量名称,是一个整数值,pygame提供了如K_a、K_LEFT等常量来表示不同的按键)、mod(按键修饰符的组合值,用于表示是否同时按下了如Ctrl、Shift、Alt等修饰键)。通过检查这些属性,程序可以识别用户按下了哪个按键,并根据需要做出响应。 |
| pygame.KEYUP |
键盘按键释放事件 |
当用户释放之前按下的键盘按键时,pygame会触发KEYUP事件。与KEYDOWN事件类似,KEYUP事件也包含key和mod属性,但通常不包含unicode属性,因为释放按键时不需要知道按键对应的Unicode字符。通过捕获KEYUP事件,程序可以知道用户何时停止了按键操作,这对于实现如长按检测等功能非常有用。 |
详细解释补充:
pygame.KEYDOWN事件:
- 当用户按下键盘上的按键时,pygame会将该事件放入事件队列中。程序通过遍历事件队列并检查事件类型,可以识别出KEYDOWN事件。
key属性是识别具体按键的关键。pygame提供了一系列的常量来表示不同的按键,如字母键(K_a、K_b等)、方向键(K_LEFT、K_RIGHT等)和功能键(如K_ESCAPE)。
mod属性用于表示按键时是否同时按下了修饰键。pygame提供了如KMOD_CTRL、KMOD_SHIFT、KMOD_ALT等常量来表示不同的修饰键。通过检查mod属性与这些常量的按位与运算结果,可以确定是否按下了特定的修饰键组合。
pygame.KEYUP事件:
- 与KEYDOWN事件相对应,当用户释放按键时,pygame会触发KEYUP事件。
- 通过捕获KEYUP事件,程序可以知道用户何时停止了按键操作。这对于实现如连续射击、长按加速等功能至关重要,因为它允许程序在用户停止按键时停止相应的操作。
key和mod属性的作用与KEYDOWN事件中相同,分别用于表示释放的按键和同时按下的修饰键组合。
key属性值
key属性值 |
按键名称 |
描述 |
K_BACKSPACE |
Backspace |
退格键,用于删除光标前的字符 |
K_TAB |
Tab |
制表键,用于在不同字段间移动光标 |
K_RETURN |
Enter |
回车键,用于确认输入或换行 |
K_ESCAPE |
Escape |
退出键,常用于取消操作或退出程序 |
K_SPACE |
Space |
空格键 |
K_LEFT |
Left Arrow |
向左键 |
K_RIGHT |
Right Arrow |
向右键 |
K_UP |
Up Arrow |
向上键 |
K_DOWN |
Down Arrow |
向下键 |
K_a 到 K_z |
A 到 Z |
英文字母键 |
K_0 到 K_9 |
0 到 9 |
数字键 |
K_KP0 到 K_KP9 |
Keypad 0 到 9 |
小键盘上的数字键 |
K_F1 到 K_F12 |
F1 到 F12 |
功能键,常用于快捷操作 |
K_LSHIFT, K_RSHIFT |
Left Shift, Right Shift |
左右Shift键,用于输入大写字母或特殊符号 |
K_LCTRL, K_RCTRL |
Left Ctrl, Right Ctrl |
左右Ctrl键,常用于组合快捷键 |
K_LALT, K_RALT |
Left Alt, Right Alt |
左右Alt键,常用于组合快捷键 |
K_DELETE |
Delete |
删除键,用于删除选中的内容 |
key属性是在pygame的KEYDOWN和KEYUP事件中使用的,用于标识被按下或释放的按键。当这些事件发生时,可以通过检查事件的key属性来确定是哪个按键被操作,并据此编写相应的响应逻辑。
在pygame中处理键盘事件时,通常会结合使用pygame.key.get_pressed()函数和事件监听来获取按键状态。pygame.key.get_pressed()函数会返回一个序列,表示当前所有按键的状态(按下为True,未按下为False),而事件监听则允许程序响应按键的按下和释放动作。
鼠标事件
以下是一个关于pygame鼠标事件的详细解释表格:
| 事件代码 |
事件描述 |
详细解释 |
pygame. MOUSEMOTION |
鼠标移动事件 |
当鼠标在窗口中移动时触发。事件包含pos(鼠标当前坐标值,相对于窗口左上角的(x, y)坐标)、rel(鼠标相对于上一次事件的移动距离,也是一个(x, y)坐标值)和buttons(鼠标按钮状态,一个包含三个数字的元组,分别代表左键、中键(滚轮)、右键的状态,状态值为0或1,表示按钮是否按下)属性。通过处理这个事件,可以实现如跟随鼠标移动的效果、实时显示鼠标坐标等功能。 |
pygame. MOUSEBUTTONDOWN |
鼠标按键按下事件 |
当用户按下鼠标触发。事件包含pos(鼠标当前坐标值)和button(被按下的鼠标按钮编号,左键为1,中键为2,右键为3,向上滚动滚轮为4,向下滚动滚轮为5)属性。 |
pygame. MOUSEBUTTONUP |
鼠标按键释放事件 |
当用户释放鼠标触发。事件包含pos(鼠标当前坐标值)和button(被释放的鼠标按钮编号,与MOUSEBUTTONDOWN事件中的button属性相同)属性。 |
pygame.mouse.get_pressed()用于获取当前所有鼠标按键的状态,返回一个由3个0/1组成的元组
pygame.mouse.get_pos()用于获取当前鼠标的位置。返回光标坐标。
自定义事件
| 方法 |
说明 |
| Event(type,dict) |
type:这是一个整数或者pygame中定义的事件类型常量,比如pygame.QUIT、pygame.KEYDOWN等。它指定了新创建事件的类型。 dict:这是一个字典,包含了事件的属性。不同的事件类型有不同的属性集。比如,对于pygame.KEYDOWN事件,你可以包含key和mod属性;对于pygame.MOUSEBUTTONDOWN事件,你可以包含pos和button属性。该值应高于pygame.USEREVENT |
| post(event) |
将自定义事件加入事件队列 |
pygame.sprite
Sprite类
| Sprite类属性 |
说明 |
| image |
|
| rect |
|
| mask |
|
| Sprite类方法 |
说明 |
| update() |
更新状态 |
| add() |
将该精灵添加至精灵组 |
| remove() |
从精灵组中删除精灵 |
| kill() |
将精灵从其属于的所有精灵组删除 |
| alive() |
判断该精灵是否属于任意精灵组 |
| groups() |
返回该精灵所属的所有精灵组组成的列表 |
Group类
| Group类方法 |
说明 |
| update() |
更新组内所有精灵的状态 |
| add() |
将指定精灵拉进来 |
| remove() |
将指定精灵踢出去 |
| empty() |
清空 |
| sprites() |
用列表返回所有精灵 |
| has() |
判断组内有没有某精灵 |
| draw() |
绘制全部精灵 |
碰撞检测
| 方法 |
说明 |
| spritecollide(sprite,group,dokill,collided) |
检查源精灵是否与另一个精灵组中的任何精灵发生碰撞。如果发生碰撞,spritecollide() 会返回一个包含所有与源精灵碰撞的精灵的列表
sprite:要进行碰撞检测的源精灵。
group:要与之进行碰撞检测的精灵组。
dokill:一个布尔值,如果设置为True,则在发生碰撞时,会从精灵组中删除碰撞的精灵。 collided:一个可选的碰撞回调函数。collide_rect()矩形检测、collide_circle圆形检测、collidemask()像素蒙版检测。 |
| spritecollideany(sprite,group,collided) |
返回第一个与源精灵碰撞的精灵 |
| groupcollide() |
返回一个字典,其中包含了所有发生碰撞的精灵对。
group1:第一个要进行碰撞检测的精灵组。 group2:第二个要进行碰撞检测的精灵组。 dokill1:一个布尔值,如果设置为 True,则在发生碰撞时,会从 group1 中删除碰撞的精灵。 dokill2:一个布尔值,如果设置为 True,则在发生碰撞时,会从 group2 中删除碰撞的精灵。 collided:一个可选的碰撞回调函数,用于自定义碰撞检测的逻辑。如果提供了这个函数,它将被用来代替默认的碰撞检测逻辑 |
pygame.mixer
创建音效对象
pygame.mixer.Sound(filename)
音效对象方法
Rect
| 属性 |
说明 |
| x |
|
| y |
|
| left |
|
| right |
|
| top |
|
| bottom |
|
| width(简写w) |
|
| height(简写h) |
|
| size |
(w,h) |
| centerx |
|
| centery |
|
| center |
|
| topleft,bottomleft |
|
| topright,bottomright |
|
| midtop,,midbottom,midleft,midright |
|
| 方法 |
说明 |
| move(x,y) |
返回新Rect,不改旧Rect |
| move_ip(x,y) |
无返回值,改旧Rect |
| inflate(x,y) |
宽+x,高+y,不改旧Rect |
| inflate_ip() |
改旧Rect |
| contains(Rect) |
检测调用此方法的Rect是否包含参数Rect, return bool |
| collidepoint(x,y) |
检测(x,y)是否在Rect内,return bool |
| colliderect(Rect) |
检测两Rect是否重叠,return bool |
| collidelist([Rect1,Rect2,…]) |
检测Rect是否与列表中Rect重叠,返回首个重叠的Rect的索引,否则返回-1 |
| collidelistall([Rect1,Rect2,…]) |
若碰撞,返回列表 |