python 精灵列表是如何工作的?我可以将精灵坐标添加到列表中吗?
How does the python sprite list work? Can i add sprite coords to the list?
亲爱的朋友们您好,
对于我的 python 项目,我制作了一个按钮 class - 以及它们的图像、坐标、动作等等 - 一切正常。但我想我会在游戏中添加很多按钮,所以我决定将它们添加到一个 pygame 精灵组及其坐标,并使用 for 循环自动 blit。
for oge in buttonList:
pygame.blit(oge, (x, y)
有什么方法可以将 sprite 及其坐标添加到组或列表中,将它们一起 blit 到一起?
简答:
如果每个精灵都有属性.rect
和.image
,那么可以调用.draw()
:
buttonList.draw(surf)
长答案:
A pygame.sprite.Sprite
object should have a .rect
property of type pygame.Rect
此属性定义精灵的位置(和大小)。
下面我假设 buttonList
是 pygame.sprite.Group
.
Group 中的每个 Sprite shuold 都有一个 .rect
属性 用于在其位置绘制 sprite 例如:
class MySprite(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = [...]
self.rect = self.image.get_rect()
组内所有精灵都可以随叫随到绘制。参数 surf
可以是任何表面,例如显示面:
buttonList.draw(surf)
请注意,pygame.sprite.Group
的 draw()
方法将包含的 Sprites 绘制到 Surface 上。每个精灵的 .image
在 .rect
.
位置 "blit"
pygame.Rect
有很多虚拟属性,用来设置它的位置(和大小),例如.center
或 .topleft
。使用它们来设置精灵的位置:
mysprite = MySprite()
mysprite.rect.topleft = (x, y)
当然,位置(x, y)
也可以作为精灵构造函数的参数class:
class MySprite(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = [...]
self.rect = self.image.get_rect(topleft = (x, y))
mysprite = MySprite(x, y)
亲爱的朋友们您好, 对于我的 python 项目,我制作了一个按钮 class - 以及它们的图像、坐标、动作等等 - 一切正常。但我想我会在游戏中添加很多按钮,所以我决定将它们添加到一个 pygame 精灵组及其坐标,并使用 for 循环自动 blit。
for oge in buttonList:
pygame.blit(oge, (x, y)
有什么方法可以将 sprite 及其坐标添加到组或列表中,将它们一起 blit 到一起?
简答:
如果每个精灵都有属性.rect
和.image
,那么可以调用.draw()
:
buttonList.draw(surf)
长答案:
A pygame.sprite.Sprite
object should have a .rect
property of type pygame.Rect
此属性定义精灵的位置(和大小)。
下面我假设 buttonList
是 pygame.sprite.Group
.
Group 中的每个 Sprite shuold 都有一个 .rect
属性 用于在其位置绘制 sprite 例如:
class MySprite(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = [...]
self.rect = self.image.get_rect()
组内所有精灵都可以随叫随到绘制。参数 surf
可以是任何表面,例如显示面:
buttonList.draw(surf)
请注意,pygame.sprite.Group
的 draw()
方法将包含的 Sprites 绘制到 Surface 上。每个精灵的 .image
在 .rect
.
pygame.Rect
有很多虚拟属性,用来设置它的位置(和大小),例如.center
或 .topleft
。使用它们来设置精灵的位置:
mysprite = MySprite()
mysprite.rect.topleft = (x, y)
当然,位置(x, y)
也可以作为精灵构造函数的参数class:
class MySprite(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = [...]
self.rect = self.image.get_rect(topleft = (x, y))
mysprite = MySprite(x, y)