游戏海龟模块 V0.278 说明书
pip install gameturtle
10
gameturtle 模块的核心功能是定义了一个叫 Sprite 的类。它的辅助类是 Rect 类。这是矩
形类,用于提供角色的矩形碰撞检测的功能。笔者是通过矩形的左上角坐标,矩形的宽度和
高度来唯一确定一个矩形的。Sprite 类,也就是角色类。它的用途是在 tkinter 的画布上新建
一个角色,所以用 Sprite 类实例化角色时,要带上画布作为参数。也就是说,在 tkinter 窗口
上可以有几块画布,每块画布上都能有角色。Sprite 类实现了类似 Python turtle 模块的一些
功能。如前进、倒退、图章、画圆点、画笔颜色、左转、右转、到达坐标、隐藏、显示、坐
标、填充、打点等功能。
我们可以把 Sprite 类看成是画布上图形对象的包装,所以每个角色都有一个 item,即 项
目编号。这可以通过角色的 item 属性直接引用它的值。由于角色的造型必定是图形,所以
它的坐标就是造型图的中心点坐标。
除了设计了主要的 Sprite 类外。还设计了方便制作动画效果与游戏开发的一些辅助函
数。如 single2multitext 函数。它的用途是把单行文本转换成固定字节的多行文本。txt2image
函数是把多行文本转换成图像,而名称很相似的 txt2images 则是把多行文本转换成逐帧文字
图像的,它输出的是一系列图形对象。每帧图像比前一帧图多一个文字,方便制作成 gif 动
态字幕图。函数 draw_rnd_rect 是用来画圆角矩形的。函数_draw_small_bubble 是用来画说话
泡泡下面的小泡泡的。splice_image 是用来合并图像的。为了方便把 gif 图加载到画布上进
行显示(这可以做动态背景或多帧角色),编制了 splitgif 用来拆解 gif 中的每一帧图。反过
来,也有需要把多帧图像合成 gif 动态图片的功能,所以设计了 makegif 这个函数。
在 gameturtle 模块中给画布,即 canvas 增加了 4 个方法。center 方法是获取画布中心点
坐标。grab 方法是截取画布区域内作为图形的功能。这样,当程序运行时,调用 grab 方法,
就能保存那一帧的图形,最后形成所有的帧列表,再调用 makegif 函数就能输出 gif 图形,
从而能通过 gif 图看到程序的曾经的运行过程。mousepos 方法是获取在画布上的鼠标指针坐
标的,而 group 是查找相同标签角色,并返回它们的方法。
在 gamwturtle 模块里,还给 Tk 类增加了 center 方法。它让窗口居中显示。在 Sprite
类中,设计了一个叫 sprites 的类字典。它存储了角色的 item 和角色的映射。
单独的 setalpha 函数用来设置图像的透明通道。它的原理是设置 RGBA模式图像的 alpha
通道值。这是为了实现虚像效果(如:淡入淡出)而编制的一个函数。未来可能会有更多类
似的图形处理函数。只要简单的调用一下就能实现相关的功能,方便制作各种动画或者转场
效果。
评论0