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

Re: [pygame] Working with maps



How would you make each country a sprite when they are all irregularly shaped? All the responses are great.
-Miguel

On Tue, May 18, 2010 at 10:27 AM, Kenny Meyer <knny.myer@xxxxxxxxx> wrote:
Timothy Baldock (tb@xxxxxxxxxxxxx) wrote:
> Hi Kenny,
>
> I'd do this by making each country a sprite with a transparent
> background (colour-key transparency would work), then whenever the user
> clicks doing a collision detection between the position of the mouse
> cursor (first use rect-collision to build a small number of tiles which
> match, then do pixel-perfect collision based on alpha - i.e. using the
> sprite's mask). Easiest way to do this IMO is to draw an "invisible"
> (e.g. position the sprite, but don't actually draw it to the screen)
> 1x1px sprite at the position of the mouse cursor, then collide that
> against the group containing all the country sprites.
>
> This technique means the countries can be any colour you want, or the
> colour can change without messing things up. I used this method for my
> isometric game engine to allow selection of tiles and other objects and
> found it to be quite fast.
>
> Thanks,
>
> Timothy
>
>
> On 18/05/2010 05:09, Kenny Meyer wrote:
> > Hey,
> >
> > I'd like to work with irregular formed geometric shapes like those in of
> > country maps in pygame.
> >
> > I want to do the following:
> > "Divide" a country map into its states and provinces and make each of them
> > "click-able", where the map could be an image (*.png) or maybe a vector graphic
> > (*.svg).
> >
> > The result should be:
> > A game where to guess and click the name of the state and province on a map.
> >
> > Observations:
> > It would be quite difficult to assign each state/province fixed coordinates as
> > those are irregular geometric shapes.
> >
> > Any ideas, pointers to other projects or suggestions?
> >
>

Timothy,

Thank you for your answer!

> I'd do this by making each country a sprite with a transparent
> background (colour-key transparency would work), then whenever the user
> clicks doing a collision detection between the position of the mouse
> cursor (first use rect-collision to build a small number of tiles which
> match, then do pixel-perfect collision based on alpha - i.e. using the
> sprite's mask). Easiest way to do this IMO is to draw an "invisible"
> (e.g. position the sprite, but don't actually draw it to the screen)
> 1x1px sprite at the position of the mouse cursor, then collide that
> against the group containing all the country sprites.
I get the idea and I also think I will try this.  Do you have any concrete
examples of this in action?

--
 Regards,
 Kenny Meyer