pgzhero的一个助手工具
Project description
cpgzh
介绍
本作品是基于一个新加坡老师的pgzhelper的一个助手工具,增加了一些功能方便国内用户使用,可以参考下面的链接:
pgzhelper官网地址:https://www.aposteriori.com.sg/pygame-zero-helper/
黄复雄老师翻译文档地址:https://zhuanlan.zhihu.com/p/347855713
当前功能列表
- 创建延时任务和切换动画
- 输入框等杂项功能,增加游戏界面的交互功能、数据存储功能
- 整合绘图命令,接口更加统一
- 便捷的字体造型,写字不再繁琐
软件架构
基于pgzhelper和guizero。
安装教程
- 使用pip安装即可:
pip3 install cpgzh
使用说明
使用方法和pgzero基本相同,多了几个方法而已,下面对我增加的功能进行介绍,其他的移步官网或者黄复雄老师的文档即可。
一、创建延迟任务和切换动画
这些功能都是封装在Actor
类当中的。
一)、延时任务
import pgzrun
from cpgzh import Actor
jisi = Actor('大祭司_人偶-待机-000.png', center=(400, 400))
jisi.create_delay_tasks(jisi.next_image, seconds=1, times=1)# 延迟1秒下一个造型,重复1次
def draw():
jisi.draw()
pgzrun.go()
- 使用
from cpgzh import Actor
代替from pgzero.actor impoty Actor
来导入演员类; - 创建演员
jisi = Actor('大祭司_人偶-待机-000.png', center=(400, 400))
; jisi.create_delay_tasks(task, seconds=1, times=1)
方法能够创建一个延迟执行的任务,task为要做的事。seconds为延迟的时间,默认为1s。times是这个任务要执行的次数,默认为1次;- 在
update
函数中调用jisi.run_tasks()
方法;
二)、自动切换造型
from cpgzh import Actor
jisi = Actor('大祭司_人偶-待机-000.png', center=(400, 400))
jisi.images = [f'大祭司_人偶-待机-{i:0>3}.png' for i in range(30)]# 绑定造型列表,根据你的素材来吧
def update():
jisi.run_tasks()# 运行计划任务
def draw():
jisi.draw()
- 使用
jisi.images = [f'大祭司_人偶-待机-{i:0>3}.png' for i in range(30)]
给jisi
角色绑定要切换的造型; - 在
update
函数中调用jisi.run_tasks()
方法。默认会将jisi.animate()
方法在jisi.run_tasks()
方法中调用,也就是默认是角色切换造型的姿态。当然你也可以在update
函数中手动调用jisi.animate()
方法即可自动切换造型; - 设置
jisi.animate_fps
可以获取或设置切换造型的速度,默认为每秒钟切换10次,如果要切换100次就设置100即可:jisi.animate_fps=100
; - 如果要停止造型的切换有两种方法:
a. 只需要将
jisi.animate_fps
设置为0即可:jisi.animate_fps=0
; b. 使用jisi.is_animate
设置为0即可:jisi.is_animate=0
,这种方法不影响设置好的角色切换造型的fps。 - 还提供一个方法:
jisi.toggle_animate()
,如果角色在切换造型,这个方法就会停止切换,反之将会开始切换。
二、输入框等杂项功能
增加了一系列功能,包括输入、切换全屏、加载和保存数据等等,他们都封装在Master
类当中,以键盘按下执行一些功能示例如下:
#实例化管家
from cpgzh import Master
master=Master()#实例化的时候可以直接传递存档位置作为参数
def on_key_down(key):
'当键盘按下'
# 设置全屏化
if key == keys.A:
master.set_fullscreen()
# 设置窗口化
elif key == keys.B:
master.set_windowed()
# 切换全屏和窗口化
elif key == keys.C:
master.toggle_fullscreen()
# 隐藏鼠标
elif key == keys.D:
master.hide_mouse()
# 显示鼠标
elif key == keys.E:
master.show_mouse()
# 输入文本
elif key == keys.F:
text = master.input('请输入一个名字:')
print(text)
# 选择文件
elif key == keys.G:
text = master.select_file('请选择一个文件:')
print(text)
# 保存文件
elif key == keys.H:
text = master.select_file_save('请选择存档保存位置:')
print(text)
# 选择文件夹
elif key == keys.I:
text = master.select_dir('请选择一个文件夹:')
print(text)
# 是否选择框
elif key == keys.J:
text = master.yes_no('是否选择女装?')
print(text)
# 保存master的数据
elif key == keys.K:
master.save_data()
# 手动加载存储的数据
elif key == keys.L:
#master.data.text = 'test'
master.data_path = '测试.dat'
master.load_data()
# 删除保存的数据
elif key == keys.M:
master.del_data()
# 设置动画的帧率
elif key == keys.N:
fps = master.input('请输入动画切换的速度(每s切换多少次):')
jisi.animate_fps = int(fps)
# 切换造型是否切换
elif key == keys.O:
jisi.toggle_animate()
# 提示信息
elif key == keys.P:
master.msg('提示:\n你已经换好女装了')
# 警告信息
elif key == keys.Q:
master.warning('警告:\n今天的女装不太完美')
# 错误信息
elif key == keys.R:
master.error('错误:\n你还没换好女装')
# 游戏开始
elif key == keys.S:
master.data.start()
# 获取游戏运行时常
elif key == keys.T:
print(master.data.get_time())
需要特殊说明的是,master
会自带一个数据保存的功能,绑定在master
的data
对象上,这个对象可以把绑定在他身上的数据保存到当前的目录,如果不指定master.dataPath
属性会自动保存在data.dat
文件中。
默认情况下,master.data
会有几个默认属性,包括游戏状态、时间、得分,你也可以自行绑定其他属性:
class Data:
'数据存储类'
def __init__(self, data_path) -> None:
'数据类'
self.status = 0 # 游戏状态\
self.time = 0 # 游戏持续时间
self.score = 0 # 得分
注意: 在master类实例化的时候就会自动加载一次存档,所以这里要小心一些,容易出现奇怪的事情。
为了数据的传递方便,master.data
对象有个temp
属性,这个属性会自动存放一些数据,比如选择的文件夹,或者输入的数据,也就是说获取输入的内容还可以这样写:
master.input('请输入一个名字:')
print(master.data.temp)
三、整合绘图命令
这些功能都是封装在Master
类当中的。
对绘图命令进行了整合,可以更方便快速绘制各种图形。
使用方法如下:
1、导入并实例化Master
类
from cpgzh import Master
master = Master()
2、在draw
函数中绘制想要的图形
def draw():
# 绘制一个点
master.draw_dot((300,50),50,'#ffff00')
# 绘制一条线
master.draw_line((250,50),(350,50),'#00ffff',20)
# 绘制圆或者圆环
master.draw_circle((100, 200), 100, '#ff0000', 20)
# 绘制椭圆或者椭圆环
master.draw_ellipse((300, 200), 200, 100, '#00ff00', 20)
# 绘制方块或者方块环
master.draw_rect((500, 200), 200, 200, '#0000ff', 10, 30)
四、便捷的字体造型
这些功能都是封装在FontStyle
类当中的。
pgzero字体设置比较繁琐,很多时候小伙伴们也不太知道那些个参数都是干啥的,每次写字都要写很多行,太难受了。
所以对字体样式进行了封装,帮大家方便快速写字。
建议做游戏时候将不同的字体先实例化成不同的对象,到时候用就可以了。
使用方法如下:
1、导入和实例化样式
from cpgzh import FontStyle # 导入字体样式类
font = FontStyle()# 实例化字体样式font
font1 = FontStyle()# 实例化字体样式font1
font1.color='red'# 修改颜色
font2 = FontStyle()# 实例化字体样式font2
font2.color='blue'# 修改颜色
font2.bold=True# 加粗
font2.angle=180# 旋转180度
2、写字
screen.draw.text('你好呀',center=(200,200),**font.styles)# 用字体样式font写字
screen.draw.text('你好呀',center=(200,200),**font1.styles)# 用字体样式font1写字
screen.draw.text('你好呀',center=(200,200),**font2.styles)# 用字体样式font2写字
3、修改样式
我们可以修改font对象的参数,从而改变字体的样子,可以改的字体样式如下(可根据默认值修改):
font.bold = None#加粗
font.italic = None# 斜体
font.underline=None# 下划线
font.color = 'black'# 字体颜色
font.gcolor = None# 渐变色
font.ocolor = None# 边框颜色
font.scolor = None# 阴影颜色
font.align = 'left'# 左对齐
font.alpha = 1.0# 不透明度
font.angle = 0# 旋转角度
font.owidth = None# 边框宽度
font.shadow = (0.0,0.0)# 阴影,x方向和y方向
font.fontsize = 30# 字体大小
font.fontname = '宋体'# 字体名字
功能截图:
(详见软件仓库,pypi不会显示)
用法详情可以参考example.py
文件
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.