On Mon, Jun 6, 2011 at 2:10 AM, Alan Cox <[email protected]> wrote:
>> However I'm not a computer scientist and the only way that makes sense for
>> me to implement this is lots of inefficient loops to check every penguin
>> against every other penguin.
>
> That's a beginners game writing question not surprisingly. Games
> often solve this in simple form by keeping all their sprites (penguins in
> your case) in a sorted list (eg top to bottom, left to right). You still
> have to do a bit of scanning as obviously the top of one penguin can land
> on the feet of another, but you can do a lot less scanning that way.

Indeed, this is a classic question in games: How does one efficiently
and quickly search for spatial collisions?

Alan's answer is great for your case. If you're feeling adventurous,
you could create a spatial dictionary -- an associative array which
stores all of the penguins by coordinates, using buckets which
correspond to spatial areas. This massively reduces collision checking
time for one-against-many, especially when you have lots of sprites to
check. It might be overkill here, unless you're planning on making
thousands of penguins. :3

~ C.

-- 
When the facts change, I change my mind. What do you do, sir? ~ Keynes

Corbin Simpson
<[email protected]>
_______________________________________________
[email protected]: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: [email protected]

Reply via email to