所以,我已经得到了我在程序的地步,我需要创建一些精灵玩家可以与碰撞一组无死亡(像其他一些精灵我可能会在屏幕上)。
我已经冲刷谷歌,但它似乎是官方的pygame的文档是无用的和/或很难理解。 我正在寻找任何人谁知道一点关于这个的帮助只是一丁点儿。
首先,我需要找出如何创建一个组。 它是否在最初的游戏设定去?
然后创建以后,其加入了精灵一组。 Pygame的网站中有这样一段关于这个问题说:
Sprite.add(*groups)
所以...一个人如何使用它? 比方说,我有一个精灵命名的宝石。 我需要的宝石增加宝石集团。 是吗:
gem = Sprite.add(gems)
我对此表示怀疑,但没有任何例子熄灭的网站上,我很茫然。
此外,我希望能够为某一组编辑属性。 这是通过定义像我一个小组将一个类来完成? 或者是它的东西我定义的定义为现有的精灵之内,但有一个“如果精灵组”?
要回答你的第一个问题; 创建一个组,你会做这样的事情:
gems = pygame.sprite.Group()
然后添加一个精灵:
gems.add(gem)
至于你想编辑该组的属性取决于它们是什么。 例如,你可以定义这样的指示组的方向:
gems.direction = 'up'
我知道这个问题已经回答了,但最好的方法是像kelwinfc建议什么。 我会阐述所以它更容易理解。
# First, create you group
gems = pygame.sprite.Group()
class Jewel (pygame.sprite.Sprite): # Inherit from the Sprite
def __init__ (self, *args): # Call the constructor with whatever arguments...
# This next part is key. You call the super constructor, and pass in the
# group you've created and it is automatically added to the group every
# time you create an instance of this class
pygame.sprite.Sprite.__init__(self, gems)
# rest of class stuff after this.
>>> ruby = Jewel()
>>> diamond = Jewel()
>>> coal = Jewel()
# All three are now in the group gems.
>>> gems.sprites()
[<Jewel sprite(in 1 groups)>, <Jewel sprite(in 1 groups)>, <Jewel sprite(in 1 groups)>]
您还可以添加更多的gems.add(some_sprite)
和同样与删除它们gems.remove(some_sprite)
只需调用超__init__
与组的列表功能。 例如:
def __init__(self):
pygame.sprite.Sprite.__init__(self, self.groups)
然后,在每一类层次结构的,你应该定义一个属性self.groups和超级构造函数将增加每个实例其组的工作。 这是我认为最干净的解决方案。 否则,只是群体中的每个类列表中调用父类的构造函数明确。
但更方便,你可以直接通过精灵上的构造器:
gems = pygame.sprite.Group(gem1, gem2)