Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pygame débutant, POO] Comment changer une image ?

Changer l'image affichée pour un sprite lorsqu'une touche est pressée.

    7 août 2023 à 16:17:54

    Bonjour à tous,

    dans mon programme je souhaite pouvoir changer l'image affichée d'un sprite (et plus généralement pouvoir appliquer cette fonctionnalité à la classe) lorsque une touche directionnelle est pressée.

    En gros, lorsque j'appuie sur "q", il faudrait que mon personnage regarde vers la gauche au lieu de se déplacer en arrière.

    J'ai déjà les 2 images (knight_right, knight_left), mais après avoir essayé plusieurs méthodes (notamment avec des conditions if et elif et avec une variable déterminant l'image à afficher), je ne comprends pas le chemin à suivre.

    import pygame
    import os
    
    pygame.init()
    
    os.environ["SDL_VIDEO_CENTERED"] = "1"
    info = pygame.display.Info()
    SCREEN_WIDTH = info.current_w
    SCREEN_HEIGHT = info.current_h
    screen = pygame.display.set_mode((SCREEN_WIDTH - 30, SCREEN_HEIGHT - 30), pygame.RESIZABLE)
    player_pos = pygame.Vector2(screen.get_width() / 2, screen.get_height() / 2)
    
    knight_right, knight_left = "HeroV1right.png", "HeroV1left.png"
    
    pygame.display.set_caption("Ya lioubliou vodkou")
    clock = pygame.time.Clock()
    dt = 0.7
    
    class Hero(pygame.sprite.Sprite):
         def __init__(self, image, player_pos):
            pygame.sprite.Sprite.__init__(self)
            self.image = pygame.image.load(image).convert_alpha()
            self.rect = self.image.get_rect()
            self.rect.center = player_pos
    
    
         def handle_keys(self):
            keys = pygame.key.get_pressed()
            if keys[pygame.K_z]:
                self.rect.y -= 5 * dt
            if keys[pygame.K_s]:
                self.rect.y += 5 * dt
            if keys[pygame.K_q]:
                self.rect.x -= 5 * dt
            if keys[pygame.K_d]:
                self.rect.x += 5 * dt
    
    #group for hero
    heros = pygame.sprite.Group()
    
    #creation of hero
    knight = Hero(knight_right, player_pos)
    heros.add(knight)
    
    print(knight.handle_keys())
    
    running = True
    while running:
    
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
    
        screen.fill("black")
    
        knight.handle_keys()
    
        heros.update()
    
        heros.draw(screen)
    
    
        clock.tick(60)
    
        pygame.display.flip()
    
    pygame.quit()

    Mon idée principale était d'ajouter plusieurs self.image et d'en prioriser un en fonction de la touche pressée avec la fonction handle_keys.

    Merci beaucoup pour votre aide^^

    • Partager sur Facebook
    • Partager sur Twitter
      7 août 2023 à 16:33:51

      Pour déplacer une image, vous avez un tutoriel là dessus avec la documentation de pygame. Il donne les étapes à respecter.
      • Partager sur Facebook
      • Partager sur Twitter

      [Pygame débutant, POO] Comment changer une image ?

      × 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