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

Re: [pygame] my rpg game (so far)



Have you tried using the pygame.key.set_repeat() function?  Otherwise, I would use the KEYDOWN event to set the speed in either x or y direction (I like diagonal movement ;)) and the KEYUP event to reset the directional speed to zero.  With that method, you'd need logic to deal with abrupt changes such as the user holding the up arrow, then pressing the down arrow before releasing the up arrow (which may again be taken care of by set_repeat).

--p

On Fri, Oct 31, 2008 at 3:13 AM, Michael Fiano <michael.fiano@xxxxxxxxx> wrote:
On Fri, 31 Oct 2008 18:39:31 +1000
Nicholas Dudfield <ndudfield@xxxxxxxxx> wrote:

> I am pretty sure you don't need to run event.pump() for every event.
>
> It doesn't seem like `keyinput` is being used at all so it's probably
> not needed.

You're right. I don't need it anymore. keyinput was being used before
to make it so that more than one key could be pressed to move the
character. I gave up due to minor bugs in my code and forgot to remove
that little bit. What I would like to do:

Right now if you are holding a directional key to move, and you press a
different directional key at the same time, the player will stop,
instead of changing directions. If anyone could give me some pointers
on how to do this I'd be very happy, because I want it to be
gamepad-friendly too.

> <code>
> elif event.key == K_UP or event.key == K_DOWN or event.key == K_LEFT
> or event.key == K_RIGHT:
>     do_stuff()
> </code
>
> The python idiom for this is
>
> <code>
> elif event.key in (K_UP, K_DOWN, K_LEFT, K_RIGHT):
>     do_stuff()
> </code>

Aha, nice. Thanks!