最近在玩pygame zero,这个库对于学生来说容易上手,不用涉及到类就可以做出游戏。但是用的人太少,好像已经停止更新了。不管怎么说,用pgz来做学生的游戏开发入门课程是非常合适的。
这里把遇到的一些问题或者需要记录下来的知识点保存起来,方便以后查询。
问题汇总
pgz中的图像缩放问题
pgz中的图像导入非常简单,比如在images文件夹下有一个alien.png文件,只要用img = Actor('alien')
就可以加载了,是不是非常的简单粗暴?连相对路径和文件扩展名都不用写(前提是你的目录里有images这个文件夹),看具体代码:
import pgzrun
WIDTH = 400
HEIGHT = 400
img1 = Actor('alien')
def draw():
img1.draw() # actor只要直接draw一下就可以了
pgzrun.go()
查看一下img1的数据类型,<class 'pgzero.actor.Actor'>
,一个pgz中的“演员”。
那么问题来了,这样的一个图片,pgz并没有提供直接改变大小的方法!
没办法,只能求助于pygame了。将图片作为一个pygame surface,然后用transform里的scale就可以改变尺寸了。
具体代码如下:
import pgzrun
from pygame.transform import * # 要先导入pygame.transform
WIDTH = 400
HEIGHT = 400
#img1 = Actor('alien')
#print(type(img1))
img2 = images.alien # 创建一个surface
#print(type(img2))
img = scale(img2, (20, 30))
def draw():
screen.blit(img, (100, 100)) # 注意,surface需要用blit来绘制在屏幕上,和actor不同
pgzrun.go()
注意看pgz中创建surface的语句img2 = images.alien
,还是这么无脑!
actor切换造型
很简单,actor.image = ‘新图片文件’
具体例子:
import pgzrun
WIDTH = 100
HEIGHT = 100
alien = Actor('alien')
alien.image = 'alien_hurt'
def draw():
screen.clear()
alien.draw()
pgzrun.go()