• Etape 2 : Notre Héro

    ETAPE 2 :

     

    Notre personnage :

     Etape 2 : Notre Héro

     

     

      

      

      

      

    Comme vous pouvez le voir celui-ci est sur un fond ‘alpha’ noir. Une couleur que nous pourrons facilement distinguer et dire a Pygame de la rendre transparente.

     

    Pour incorporer notre personnage dans notre scène, nous devons donc charger cette image. Nous allons procéder de la même manière que pour notre image de fond. En le déclarant ainsi :

     

    perso = pygame.image.load('boy.png').convert_alpha() 

     

    L’option ‘convert_alpha’ dira à Pygame que le fond noir du personnage est en fait transparent.

     

    Et dans la boucle principale du jeu, nous allons rajouter cette ligne pour en permettre l’affichage :

     

        screen.blit(perso,(0,0)) 

                   

    Seul hic le personnage apparaît en haut a gauche de l’écran , cela est du au fait que nous ayons déclaré les coordonnées d’affichage en (0,0). Nous modifions cela en mettant par exemple

     

        screen.blit(perso,(150,250)) 

       

    Voici qui est déjà mieux, celui ci apparaît désormais dans une verte clairière, mais celui ci est un peu trop statique, donnons lui vie !

     

    1.      Déplacement du personnage

     

    Il existe plusieurs moyens de diriger un personnage, autrefois les touches directionnelles, aujourd’hui les touches ZSQD, la souris . Je passe sur le joystick et les pads qui ne sont pas trop désignés sur ce type de jeu.

     

    Les touches claviers :

     

    Pygame détecte les touches pressées, relâchées, et ce de plusieurs manières. La façon la plus classique reste de détecter lorsqu’une touche est pressée.  Méthode bien expliquée dans le livre de Wil McGugan . Il y explique que pour les déplacements c’est encore la méthode de detection des touches pressées ‘à la volée ‘ qui est encore le plus simple à gérer et donne un meilleur temps de réponse.

     

    Nous utiliserons donc la fonction de gestion d’évènement : pygame.key.get_pressed()         

     

     

    Mon code :

     

    import pygame,sys  

    from pygame import * 

     

    pygame.init() 

     

    screen = pygame.display.set_mode((800,600)) 

    background = pygame.image.load('fond.png').convert() 

     

    perso = pygame.image.load('boy.png').convert_alpha() 

    x = 150 

    y = 250 

     

    while True:             # Boucle principale du jeu 

       

        key=pygame.key.get_pressed()   

       

        for event in pygame.event.get(): 

            if event.type == QUIT: 

                sys.exit() 

               

        if key[K_LEFT]: 

            x-=1 

        if key[K_RIGHT]: 

            x+=1 

        if key[K_UP]: 

            y-=1 

        if key[K_DOWN]: 

            y+=1 

       

           

        screen.blit(background,(0,0))  

        screen.blit(perso,(x,y))

     

        pygame.display.flip()              

       

     

     

    Quoi de plus par rapport à l’étape 1 ? :

     

    J’initialise les modules de Pygame.Cela me servira ultérieurement et évitera de rencontrer des erreurs , notamment lorsque j’utiliserais des polices de caractères par exemple

     

    pygame.init() 

     

    Je défini les valeurs X et Y ou je veux que mon personnage apparaisse, ces mêmes valeurs que j’avais directement mises dans ma formule d’affichage en fin de code. Cette fois ci ces valeurs sont définies car elles vont devenir des variables qui vont étres modifiées au fur et a mesure que je déplacerais mon personnage à l’écran.

     

    x = 150 

    y = 250 

     

    et je retrouve à la  fin de mon programme ces valeurs dans mon façon d’afficher mon personnage :

     

    screen.blit(perso,(x,y))

     

    C’est dans la boucle principale de mon programme que ces valeurs vont être modifiées, à chaque fois que les touches de déplacements seront pressé. J’ai choisis les touches fléchées de mon claviers pour faire simple, nous verrons plus tard comment choisir d’autres touches.

     

    Je déclare donc dans ma boucle juste au début une règle qui sera toujours vraie tant que ma boucle a une valeur Vraie (True).

     

    key=pygame.key.get_pressed()   

     

    On déclare que la variable « key » est égale à toute touche pressée.

     

    Il nous reste à cibler les touches pressées et leur affecter une valeur X ou Y suivant l’axe sur lequel nous voulons déplacer notre personnage.

     

    if key[K_LEFT]: 

            x-=1            # ou encore x = x-1 

        if key[K_RIGHT]: 

            x+=1            # ou encore x = x+1 

        if key[K_UP]: 

            y-=1            # ou encore y = y-1 

        if key[K_DOWN]: 

            y+=1            # ou encore y = y+1 

     

    K_LEFT, K_RIGHT, K_UP et K_DOWN sont des constantes de Pygame, nous les utilisons donc telles qu’elles sont decrites dans la documentation de Pygame :

    http://www.pygame.org/docs/ref/key.html

     

    Désormais si je lance mon programme, j’ai mon petit personnage qui s’anime , dans tous les sens, mais nous constatons que celui-ci se déplace particulièrement vite , nous allons voir comment modifier cela dans le prochain chapitre .

     

    Vous l’aviez peut être remarqué dans l’étape numéro une, lorsque vous quittiez le programme, celui-ci affichait un message d’erreur dans la console. Ceci était du au fait que l’on utilisait une fonction du module « sys », sans avoir importé celui-ci. Chose que j’ai rajouter au tout début du programme en l’important au même moment que Pygame.


    Tags Tags : , , , ,
  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :