PygameZero助手(比照Scratch而做的增强)
本文由黄复雄译自aposteriori.com.sg,这是一家新加坡的STEAM教育机构。这里介绍的Pygame Zero Helper(PygameZero助手)这个库,是专门比照Scratch而做的很多增强,尤其对于用过Scratch的老师或孩子有很大的帮助。
Pygame Zero少了一些Scratch中有的、游戏常用的函数。Pygame Zero Helper(PygameZero助手)就是为了弥补这一不足,提供了这些缺少的功能。
用法是,在你的程序头部,在导入pgzrun
后,即从pgzhelper
(PygameZero助手的模块名)导入*
(所有)。例如:
1 2 3 4 5 6 7 8 9 10 |
|
pgzhelper提供了如下这些函数:
Actor.flip_x, Actor.flip_y#
以X或Y轴翻转图像。例如:
1 2 |
|
Actor.scale#
缩放图像。接受一个浮点数作为倍数。例如:
1 2 3 |
|
Actor.move_forward(), Actor.move_back(), Actor.move_right(), Actor.move_left()#
面向(正脸向前)移动Actor。默认情况下,Actor是面朝右边的,你可以先改变角度。例如:
1 2 3 |
|
Actor.direction, Actor.move_in_direction()#
按设定的方向移动actor。与angle
和move_forward()
不同的是,它不会旋转actor的图像。
1 2 3 |
|
Actor.distance_to(), Actor.direction_to()#
获取一个actor到另一个actor的距离或方向。
1 2 3 4 |
|
Actor.move_towards(), Actor.point_towards()#
将actor移向或指向另一个actor。使用move_towards
会使actor移动而不转动。使用point_towards
会使actor不移动而转动。
1 2 3 4 |
|
Actor.get_rect()#
取得Actor图像的rectangle(方框)。例如:
1 2 |
|
Actor.images, Actor.next_image()#
设置图像列表。更换图像列表中的下一个图像。(相当于精灵列表/图单)
1 2 3 4 5 6 7 8 |
|
Actor.fps, Actor.animate()#
作用类似于Actor.next_image()
,不过是按指定的帧率(FPS,默认是每秒5帧)更换图片。必须先设置好Actor.images
。
1 2 3 4 5 6 7 8 9 |
|
Actor.collidepoint_pixel(), Actor.collide_pixel(), Actor.collidelist_pixel(), Actor.collidelistall_pixel()#
Rect(方框)碰撞的像素完美(Pixel perfect)版。和Scratch一样,在检测碰撞时会忽略透明区域。警告:这可能会导致性能不佳和actor卡顿。通常最好使用普通的Rect碰撞。
1 2 3 4 5 |
|
Actor.obb_collidepoint(), Actor.obb_collidepoints()#
检测一个点与旋转边框 (obb, oriented bounding box) 的碰撞。 Pygame和Pygame Zero正常使用的碰撞检测用的是对齐坐标轴的边框(aabb, axis aligned bounding box ), 速度很快,但Actor旋转后效果很差。像素完美(Pixel perfect)的碰撞检测精确,但很慢。这里提供的OBB碰撞检测速度快,对旋转过的actor表现好,不过只能检测与一个点的碰撞。适于检测与子弹和鼠标这样的小对象的碰撞。
1 2 3 4 5 6 7 8 9 10 |
|
Actor.circle_collidepoint(), Actor.circle_collidepoints()#
检测碰撞时使用的是由你指定半径的一个圆。适用于你的图形接近圆形的时候。速度快,但只能检测与一个点的碰撞。可以指定圆的半径,与图形的尺寸无关。
1 2 3 4 5 6 7 8 9 10 11 |
|
set_fullscreen(), set_windowed(), toggle_fullscreen(), hide_mouse(), show_mouse()#
设为全屏模式:set_fullscreen()
;设为窗口模式(非全屏):set_windowed()
;在全屏与否间切换:toggle_fullscreen()
;影藏鼠标:hide_mouse()
;显示鼠标:show_mouse()
。
1 2 3 4 5 |
|