On Mon, Oct 26, 2009 at 6:07 AM, Ben Collier <bmcoll...@gmail.com> wrote:

> Hi Luke,
>
> Thanks for that. From the code you've got there it looks like a list should
> work fine. I haven't got the code I'd been trying to hand (essentially
> assigning a new sprite to the list, but it sounds as though it was a python
> problem, not pygame)
>

If you want to add a new sprite to a list, you can simply use the "append"
method of the list.
a = [1,2,3,4,5]
a.append(6)
print a

results in
[1,2,3,4,5,6]

Also look at "extend",
a = [1,2,3,4,5]
b = [6,7,8]

print a.append(b)
[1,2,3,4,5,[6,7,8]]

print a.extend(b)
[1,2,3,4,5,6,7,8]

So extend is for tacking a list to the end of a list, and append is for
adding an element (which can be a list if you want.)

>
> I shouldn't have any problems with this from now on. Thanks very much.
> Fingers crossed!
>
> From your code, you could reference sprites[5] to get the sixth sprite,
> right?
>
Yep, exactly.  If you have names for your sprites, you can throw them in a
dictionary instead, so you would be able to reference them as:

sprites['spaceship'].x = 15

or whatever, but if they're just 150 bullets, for example, and you want to
move them to the right on the screen, it'd be easier just to use a list and
say
for bullet in bullets:
    bullet.x += 5

And of course there's nothing keeping you from having a dictionary of lists,
so you could do
sprites['spaceship'].x = 15
for bullet in sprites['bullets']:
    bullet.x += 5

Or whatever.
(I'm not sure if this is how you control sprite's positions, I don't use
Sprite very much and I mostly use Pyglet these days (but that will change
again soon.))

Hope that helps,
-Luke

P.S. if you're not too familiar with Python or just starting out, come join
the Python Tutor mailing list, I'm a contributor over there and we talk
about a lot of general Python stuff (and not just really low-level stuff
either, some of the stuff they get into I don't even understand!)  If you
need some great, free materials to learn, just ask over there and everyone
will be happy to direct you to the best resources available for starting
out!


>
> Thanks
>
> Ben
>
> 2009/10/26 Luke Paireepinart <rabidpoob...@gmail.com>
>
>
>>
>> On Mon, Oct 26, 2009 at 4:43 AM, Ben Collier <bmcoll...@gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I'm fairly new to pygame, certainly haven't used it much, and up until
>>> now have been creating sprites by defining an extension to the sprite class
>>> and then instantiating each sprite by assigning it as, for example:
>>>
>>> newsprite = NewSprite(250,250)
>>>
>>> ...with the arguments that the init method uses in brackets.
>>>
>>> If I want to create, say, 150 sprites, and simply add each one to a group
>>> rather than having to have a distinct reference for each one, how do I do
>>> it? I can't seem to find an example online and I've not had much luck adding
>>> them to an array.
>>>
>>
>> Why have you not been able to add them to a list?  (by the way, we call
>> them "lists" not arrays in Python)
>> Can you not just say
>> locations = [(250, 250), (100,100), (300, 300)]
>> sprites = [NewSprite(location) for location in locations]
>> spritegroup = NewSpriteGroup()
>> for sprite in sprites:
>>     spritegroup.add(sprite)
>>
>> Note this is pseudocode as I don't remember the exact syntax to initialize
>> sprites, etc. but you should get the idea.  Is there a problem doing it this
>> way?
>>
>> (In the future, it would be better to say "I have tried it this way, and
>> it did not work because" or "i have tried it this way and I am not sure why
>> it did not work but here is what it did" or something like this, so we have
>> some indication of what you have tried, and why it didn't work.
>> See 
>> http://catb.org/~esr/faqs/smart-questions.html<http://catb.org/%7Eesr/faqs/smart-questions.html>)
>>
>> -Luke
>>
>>
>

Reply via email to