python模块编程的主张_Python精灵模块简介_Pythonspritesmoduleintroduce

sprites.py

一、简介:

本模块命令名为精灵模块,或叫角色模块。本模块已经上传到了pypi网站,通过在cmd窗口下输入pip

install sprites即可安装使用。

精灵模块主要提供继承自Turtle的Sprite类。重定义了Turtle模块中的一些方法和属性。

由于要旋转图形,所以需要PIL模块和numpy模块支持。默认的精灵对象是抬笔的,内置16张图片。

分别是:ball.png,bug.png,

b1.png,b2.png,cat1.png,cat2.png,bee.png,flower.png,explosion0.png,explosion1.png,fighter.png,

thunder.png,sky.png,ufo.png,rat1.png,rat2.png。它们存在于_built_in_images列表中。在本模块第一次运行后,这些图片会释放

到当前工作目录的res文件夹。本模块设计为教育目的,可用来做入门动画与游戏。

二、Sprite类主要提供了以下功能:

1、角色可直接拖动(compound造型不支持)。

2、提供像Scratch中的三种旋转模式。精灵对象的_rotatemode属性值为0,代表可360度旋转,为1时代表可左右翻转,为2时角色不会旋转。

3、rotatemode:返回或设置旋转模式。

4、addx:x坐标增加。

5、addy:y坐标增加。

6、scale:缩放,只有一个参数。

7、gotorandom:到随机位置。

8、heading:重定义了这个方法,不带参数能获取当前朝向。带参数参让角色朝向某对象或坐标。

9、show:显示对象,带参数时让角色显示一定的时间后又会隐藏,异步执行。

10、hide:隐藏对象,带参数时让角色隐藏一定的时间后又显示,异步执行。

11、mouse_pos:获取鼠标指针坐标。

12、move:移动水平dx距离和垂直dy距离。

13、collide:和另一个角色或图章的碰撞方法,采用的是矩形碰撞,可以有scale参数,表示缩放绑定盒子,如scale=0.5时,绑定盒宽高各缩一半。

14、collidemouse:碰到鼠标指针。

15、collide_edge:碰到边缘检测。

16、bounce_on_edge:碰到边缘就反弹,适合于用fd命令让角色前进后再使用。

17、bbox:获取角色绑定盒,也可获取图章的绑定盒。

18、randomcolor:随机颜色,较鲜艳。

19、randomheading:随机方向。

20、remove:移除方法,把自己从屏幕的_turtles列表中删除,并根据item号删除自己在画布上的形状,清除说话泡泡对象。

21、stamp:重定义了Turtle类的图章方法,新增的参数可以让图章在一定时间后自动被清除,异步执行。

22、stampmove:根据图章编号水平和垂直移动图章。

23、stampgoto:移动图章编号到指定坐标,暂不支持复合图形的图章,它们的图章编号是一个元组。

24、play:播放方法,目前只支持播放无损压缩的wav音频文件,支持显示歌词。

25、setalpha:设置透明度方法。参数为从0到255的数值。0代表完全透明,255代表不透明,128代表半透明。

对于polygon和compound造型来说,0代表透明,非0代表不透明。对于image来说,设置角色的透明度从0到255的值就会产生从透明到不透明的渐变效果。

26、getalpha:得到透明度,从0到255的整数。

27、set_tag:设置角色的标签。它是一个字符串,用于分组。

28、get_tag:获取角色的标签。

29、say:说话方法,会显示气泡。默认时间为2秒,默认阻塞进程。

30、saycolor:返回或设置说话的字的颜色。

31、saybordercolor:返回或设置说话泡泡的边框颜色。

32、write:重定义写方法,增加angle参数,可以写斜字,默认为黑体,12号。

33、reborn:“重生”方法,让角色隐藏后在另一坐标重新显示。复用角色之用,可加delay参数,意为在一定的时间后才显示,异步执行。

34、nextcostume:下一个造型,别名是nextshape。

35、previouscostume:上一个造型,别名是previousshape。

36、costumeindex:指定造型编号,别名是shapeindex。

37、update:重绘角色。

三、screen新增命令:

1、resizable:默认窗口是不可变大小的,用这个命令能让窗口重新可缩放。

2、onmousemove:即鼠标移动事件。

3、onscreenrelease:鼠标松开事件。

四、单独函数:

1、makecolors:

默认产生128种鲜艳的颜色,导入本模块后它会运行一次,产生一个_colorlist列表。

2、mouse_pos:

获取鼠标指针的坐标,和屏幕的xscale和yscale无关。

3、explode:

产生爆炸效果的函数。需要传递坐标和序列帧图。

五、单独类:

1、Key类:用来新建某个按键的实例,用于在循环中进行键盘按键检测。

2、Mouse类:用来新建鼠标按键的实例,用于在循环中进行鼠标按键检测。

3、Clock:用来固定帧的时钟类,有tick方法和getfps方法。前者用来设置帧率,后者获取帧率。

六、其它:

新增屏幕的_focus属性,用来跟踪屏幕是否激活。

注意以下问题:

1、不支持复合图形的拖动。

2、不支持多边形与复合图形所盖的章的直接坐标定位,但是可以相对移动。

3、tilt倾斜等变形命令不会对图形进行变形。

4、用精灵的remove方法可以较彻底的删除精灵对象,但对象越多还是会越来越慢,解决方案是让对象重复使用!

典型的为角色超出边界后,并不需要remove它。可以让它隔一段时间再出现即可,不要不停地实例化新对象!

如果用屏幕的tracer(0,0)关闭了自动渲染角色,那么在移动角色后要马上刷新屏幕,否则会出现意外效果。

原因是绑定盒命令得到的是先前没有刷新的角色的坐标,这样获取的不是最新坐标,当然会导致程序出意外。

用屏幕的update命令会重新渲染所有的角色,如果角色较多,反而会让程序运行更慢。

本模块给RawTurtle类增加了update方法,这样能单独渲染一个角色。本模块已经把屏幕的自动绘画延时设为0了。

其实Turtle模块可以支持png图片,但要像以下这样写:

screen.addshape('scratch.png',Shape("image",

screen._image('scratch.png')))

"""

__author__ = 'lixingqiu'

__date__ = '2019/12/30'

__blog__ = 'www.lixingqiu.com'

try:

from PIL import ImageTk,

ImageOps,Image

except:

print("本模块需要pillow模块支持,请先在命令提示符里安装。")

print("命令形式为:pip install

pillow --user")

print("如需帮助请email to

:406273900@qq.com")

import sys

sys.exit()

import os

import re

import sys

import time

import base64

import random

import colorsys

import numpy as np

from io import BytesIO

from copy import deepcopy

from winsound import PlaySound,SND_ASYNC

from turtle import TK,_Root,_CFG

,TNavigator,Tbuffer,TPen,_Screen,Screen,Turtle,Vec2D,

RawTurtle,TurtleScreenBase,Shape,TurtleScreen,_TurtleImage,TurtleGraphicsError

....................................................................................................................................................................................

Python精灵模块更多源码请打开李兴球博客.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值