Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pygame] - Besoin d'aide pour les sauts

    28 mars 2011 à 23:27:25

    Bonsoir a tous , me revoila avec un nouveau problême (encore :D )!

    Alors voila , j'essaye de comprendre comment faire sauter un personage avec pygame . J'ai regardé le tuto , mais je dois avouer que j'ai un peu de mal a adapter une des 3 méthodes a mon code python.

    J'ai essayer a plusieur reprise d'utiliser la 2 ème méthode mais je n'ai vraiment pas réussi a avoir un truc fonctionel (d'autre part je dois avouer que mes connaissances mathématiques sont un ptit peu limité :-° ).

    2 ou 3 petite question me trotte dans la tête :


    1 - Comment bien se servir , de pygame.time.get_ticks() et clock.tick() dans les sauts . J'ai pu voir dans pas mal de script que bien souvent les gens se servaient de ses fonctions pour les sauts. Je pense avoir compris que sa permettai de gerer la vitesse de la boucle et ainsi de bien pouvoir voir les mouvements durant le saut..
    Mais comment l'utiliser ..

    2-J'ai trouver un script montrant un exemple basique de saut , j'ai voulu déchiffrer un peu tout sa mais je n'arrive pas a comprendre 2 choses : - Sa technique de mouvement droite/gauche (qui me bloque si j'essaye d'adapter sa méthode jump a mon ptit script )
    - Et une variable qui sort de je ne sais pas ou , c'est "elapsedTime" qui aparait ligne 28 ..

    voici le script , trouver sur ce site:

    '''
    Demonstration of jumping.
    Dave Briccetti, Young Programmers Podcast: http://young-programmers.blogspot.com/
    '''
    
    import pygame
    from pygame.locals import *
    
    MAN_SCREEN_MARGIN = 5       # pixels
    JUMPING_DURATION = 500      # milliseconds
    HORZ_MOVE_INCREMENT = 4     # pixels
    TIME_AT_PEAK = JUMPING_DURATION / 2
    JUMP_HEIGHT = 200           # pixels
    
    pygame.init()
    clock = pygame.time.Clock()
    screen = pygame.display.set_mode((500, 300), 0)
    pygame.display.set_caption('Jumping Man')
    man = pygame.image.load('red-man.png').convert_alpha()
    
    def floorY():
        ''' The Y coordinate of the floor, where the man is placed '''
        return screen.get_height() - man.get_height() - MAN_SCREEN_MARGIN
    
    def jumpHeightAtTime(elapsedTime):
        ''' The height of the jump at the given elapsed time (milliseconds) '''
        return ((-1.0/TIME_AT_PEAK**2)* \
            ((elapsedTime-TIME_AT_PEAK)**2)+1)*JUMP_HEIGHT
    
    manX = screen.get_width() / 2
    manY = floorY()
    jumping = False
    jumpingHorz = 0
    
    print 'starting loop'
    loop = True
    while loop:
        for event in pygame.event.get():
            if event.type == QUIT \
                or (event.type == KEYDOWN and event.key == K_ESCAPE):
                loop = False
    
        keys = pygame.key.get_pressed()
    
        def horzMoveAmt():
            ''' Amount of horizontal movement based on left/right arrow keys '''
            return (keys[K_RIGHT] - keys[K_LEFT]) * HORZ_MOVE_INCREMENT
    
        if not jumping:
            manX += horzMoveAmt()
            if keys[K_SPACE]:
                jumping = True
                jumpingHorz = horzMoveAmt()
                jumpingStart = pygame.time.get_ticks()
    
        if jumping:
            t = pygame.time.get_ticks() - jumpingStart
            if t > JUMPING_DURATION:
                jumping = False
                jumpHeight = 0
            else:
                jumpHeight = jumpHeightAtTime(t)
    
            manY = floorY() - jumpHeight
            manX += jumpingHorz
    
        screen.fill((180,120,120))
        screen.blit(man, (manX, manY))
        pygame.display.flip()
        clock.tick(50)
    


    voili voilou , si quelqu'un a une petite méthode simple (simple façon de parler^^) , ou quelques idée ou explication au sujet des sauts ..
    • Partager sur Facebook
    • Partager sur Twitter

    [Pygame] - Besoin d'aide pour les sauts

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown