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,…]) |
若碰撞,返回列表 |