Hi,

Here's a little trick: try grep -r for "SDLK_" for example in some game's
code, it will search recursively through all the game's files. this way you
do not have to reinvent the wheel.

Love, tullarisc.

2010/3/26 <[email protected]>

> These are gems Kris, thanks, if I had to figure all this out by trial &
> error, i'd still be here till next millenium not have a beta churned out!
>
> some one mentioned to look at  the mvc on another mailing list which is
> what
> i'm trying to follow, it kinda makes sense but my learning resources are
> limited to the internet at the minute. I have been reading through the
> codes of the games on pygame to get an idea of how it works thought they can
> be quite difficult to follow & find how they have structured it, if anyone
> feels the need to write a really simplified game & put it up on
> pygame........... :.P
>
> The variables have no specific meaning bar easy reference as the numpad on
> my keyboard has arrows on it.
>
> I haven't had a chance to read through your sudjestions yet (on the books
> 2nite) but I will get back with more Q's (if that's cool.
>
> If anyone's interested, Py Em Up has a really interesting way of
> levelmakeing using bmp images
>
> --------------------------------------------------
> From: "Kris Schnee" <[email protected]>
> Sent: Thursday, March 25, 2010 11:20 PM
>
> To: <[email protected]>
> Subject: Re: [pygame] newbie
>
>  On 3/25/2010 6:03 PM, [email protected] wrote:
>>
>>> Ah, yes I see what's happening, the last time I was doing it I was using:
>>> ...........KEYDOWN:
>>> if event.key == K_LEFT:
>>> foreward = True
>>> ...........KEYUP:
>>> if event.key == K_LEFT:
>>> foreward = False
>>> meaning it was staying true, until key up but now it's not keeping the
>>> output next time round & waiting for it again.
>>> could you elaborate on this bit 'You could make the character move every
>>> frame (eg. setting a speed and
>>> moving by that speed per frame) until a KEYUP event happens', or is that
>>> pretty much what I 'was' doing?
>>>
>>
>> If you said, "On a KEYDOWN event, set speed to N and set direction to
>> whatever; and on a KEYUP event, stop," then the result should be that the
>> character keeps moving until you let go of the key. If you said, "On a
>> KEYDOWN event, move," then you should get one frame of movement each time
>> you press (not hold) the key.
>>
>> My advice is to figure out what the player's trying to do first, like
>> "move right", and then actually execute the movement in a separate bit of
>> code ("if moving right..."). That's useful for things like replacing what
>> keys do what, or having some non-interactive event steer the character.
>>
>>  Could I use "keys_down = pygame.key.get_pressed" then
>>> "if keys_down[K_RIGHT] ## move right",
>>>
>>> in this way:
>>> class character():
>>> ................
>>> def update(self, d, sp):
>>> if d == 6:
>>> self.x += sp
>>> elif d == 4:
>>> self.x -= sp
>>> elif d == 8:
>>> self.y -= sp
>>> elif d == 2:
>>> self.y += sp
>>>
>>
>> Why use this odd numeric-keypad code for the direction? Other than the
>> variable names and that code, this looks usable. But think about what'd
>> happen if I pressed RIGHT and UP at the same time: the code would see the
>> RIGHT, set the direction to right, then probably see the UP (depending on
>> which was mentioned last in the code) and change the direction to up.
>>
>> A different way to handle the movement would be something like:
>> player.coords = [42,100] ## some starting value
>> ## In a loop:
>> movement = [0,0]
>> if keys_down[K_RIGHT]:
>>  movement[0] = speed
>> ...
>> if keys_down[K_UP]:
>>  movement[1] = speed
>> ...
>> player.move(movement)
>>
>> def Move(movement):
>>  self.coords[0] += movement[0]
>>  self.coords[1] += movement[1]
>>
>> You'd then get diagonal movement, and not have to specify the direction,
>> and could apply effects like muddy ground multiplying the X and Y movement
>> by .5 or something. The actual diagonal speed would be sqrt(2) * speed
>> though, which might matter.
>>
>>  def controls():
>>>
>>> output = 0
>>> keysDown = pygame.key.get_pressed():
>>>
>>
>> Why is there a colon after the function call? That's only for defining it.
>>
>> Are you familiar with the "Model/View/Controller" style of organizing a
>> game, by the way? It's similar to what you're doing, and pretty useful.
>>
>>

Reply via email to