Timothy Baldock (t...@entropy.me.uk) 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