Datehoer的博客
我本将心向明月,奈何明月照沟渠
Datehoer的博客

当前位置:主页 > 技术分享 > python sprites介绍

python sprites介绍

浏览: 作者:Datehoer 发布日期:2020-11-11 19:32:30 来源: 原创
虽然在《python从入门到实践》项目实战中,运用到了pygame.sprites但是并没有介绍这个是什么东西,只是简单的引用外加调用。
相信有许多人像我一样,并不知道这个到底是啥意思,有啥作用。
下面让我来介绍一下这个在pygame中挺重要的角色。

“sprite”,中文翻译“精灵”,一般是指游戏动画中独立移动的一个画面元素,在pygame中可以是一个带有图像(Surface)和大小位置(Rect)的对象。精灵特别适合在Python语言中使用。

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:重绘角色。
 
具体的功能就是上面这37个列出的功能了。
具体使用的话,看看下面的这个例子:

def check_fleet_edges(ai_settings, aliens):
    """有外星人到达边缘时采取相应的措施"""
    for alien in aliens.sprites():
        if alien.check_edges():
            change_fleet_direction(ai_settings, aliens)
            break
def change_fleet_direction(ai_settings, aliens):
    """将整群外星人下移,并改变它们的方向"""
    for alien in aliens.sprites():
        alien.rect.y += ai_settings.fleet_drop_speed
        ai_settings.fleet_direction *= -1
def update_aliens(ai_settings, aliens):
    """检查是否有外星人位于屏幕边缘,并更新整群外星人的位置"""
   check_fleet_edges(ai_settings, aliens)
   aliens.update()
这个例子呢,就是外星人大战飞船的进阶版,生成外星人,然后根据外星人的移动来进行改变他们的方向。
在check_fleet_edges()中,我们遍历外星人群,并对其中的每个外星人调用check_edges()。如果check_edges()返回True,我们就知道相应的外星人位于屏幕边缘,需要改变外星人群的方向,因此我们调用change_fleet_direction()并退出循环。在change_fleet_direction()中,我们遍历所有外星人,将每个外星人下移fleet_drop_speed设置的值;然后,将fleet_direction的值修改为其当前值与-1的乘积。
其实
sprite相当于一个便捷的类让我们的图像来与其他的进行交互,不过其实具体的使用方法还是要看官方文档的,官方文档入口
具体有什么问题可以发送到评论区,有什么难题我们可以一起讨论。
 

版权:本文由Datehoer原创,著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接本文链接:https://zjzdmc.top/jsfx/43.html。

文章推荐

热门标签

返回顶部
下面为相关推荐
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!