[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] sprite collisions - looking for simple snippet



@Zack - what i wanted were change the background colour to #FF0000
only when the sprites 0 and 1 collides - anyway, sorry this code is
not PEP8, and using abbreviated variable names - i came from hobbystic
80's ansi-basic , where i were hugelly one-liner, and variable names
only took 1 or 2 characters that time - i have deep bad habits from
that time, and learning PEP8 is still a huge barrier for me - be
welcome on breaking lines at ';' or rewriting variable names, if you
want...

@Henrique, if you can help fixing http://pastebin.com/f524a8cf2 would
be great - i understand what you were saying from the error message,
but i don't have any idea about the solution for that... - what i
coded there were the closest i could imagine as possible for having
that working... - i even tried to avoid all default sprite collision
methods from pygame, and only using position and size calculations for
collisions (outside of any def or class - i'm trying to avoid them on
snippets like this), but the code became hugelly slow....

thank you all!


On 7/13/09, Henrique Nakashima <henrique.nakashima@xxxxxxxxx> wrote:
> Traceback (most recent call last):
>   File "col.py", line 52, in <module>
>     collide=pygame.sprite.collide_rect(sprid[0],sprid[1])
>   File "C:\Python25\lib\site-packages\pygame\sprite.py", line 1146, in
> collide_r
> ect
>     return left.rect.colliderect(right.rect)
> AttributeError: 'pygame.Surface' object has no attribute 'rect'
>
> This error happens because you are passing Surfaces to
> pygame.sprite.collide_rect, not Sprites.
>
> On Mon, Jul 13, 2009 at 12:27, Zack Schilling
> <zack.schilling@xxxxxxxxx>wrote:
>
>> I tried to read and correct your code, but I have no idea at all what's
>> going on. It's written like C++ transposed directly into python, which is
>> confusing. It doesn't help that there are no comments at all and the
>> variable names are cryptic. A big problem seems to be simply feeding wrong
>> object types to all the functions. You're sending sprites to blitters and
>> rects to the sprite collide.
>>
>> I'll have a go at understanding what you want to do and making it work,
>> but
>> I make no promises. If I can get that far, I'll also rewrite it in a much
>> more pythonic way. Then you can compare the two and learn much better
>> practices when working in python.
>>
>> -Zack
>>
>>
>> On Jul 13, 2009, at 8:03 AM, Paulo Silva wrote:
>>
>>  hi!
>>>
>>> well, for me finding a good pygame snippet with sprite collision (and
>>> simple to understand) is like finding a needle in a haystack...
>>>
>>> but when i try do on my own, i get this:
>>>
>>> Traceback (most recent call last):
>>> File "_spritesheetexample15b4_difsiz_collision.py", line 47, in <module>
>>> collide=pygame.sprite.collide_rect(spridr[0].rect,spridr[1].rect)
>>> AttributeError: 'pygame.Rect' object has no attribute 'rect'
>>>
>>> the example is: http://pastebin.com/f524a8cf2
>>>
>>> all suggestions are welcome! (be welcome also fixing that pastebin,
>>> and sending us the pastebin url with the fixes! ;) ) - sorry it's not
>>> PEP8 yet... :/
>>>
>>> thanks! ;)
>>>
>>>
>>>
>>> On 7/13/09, René Dudfield <renesd@xxxxxxxxx> wrote:
>>>
>>>> On Mon, Jul 13, 2009 at 7:32 AM, Paulo Silva <nitrofurano@xxxxxxxxx>
>>>> wrote:
>>>>
>>>>  this reference i know from a long time, and figured out easily there
>>>>> were the exact methods to be used - the problem is i couldn't have a
>>>>> snippet working only following that - on my oppinion on that
>>>>> referenence, each pygame method should have a working snippet to be
>>>>> tried out - for me is easier to work on tiny snippets, just like with
>>>>> lego bricks
>>>>>
>>>>>
>>>>
>>>>
>>>> Hi,
>>>>
>>>> pygame comes with examples.  Either use those, or use the code search
>>>> button
>>>> next to each method, to search through all the projects on the internet
>>>> that
>>>> use pygame.  There's 238 results for spritcollide for example.
>>>>
>>>>
>>>> cu,
>>>>
>>>>
>>
>