Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pygame redimensionner un sprite

Je cherche à redimensionner un sprite sur le module Pygame

Sujet résolu
Anonyme
    14 janvier 2020 à 19:12:04

    Bonjour,

    En ce moment je code en python avec PyCharm et j'utilise le module Pygame.
    J'ai créer un sprite qui représente et quand j'applique l'image du joueur sur la fenêtre il apparaît trop gros et il prend tout l'écran.
    J'ai cherché sur internet comment redimensionner un sprite avec Pygame mais je n'ai rien trouvé.

    Donc voilà ma question; comment redimensionner un sprite (rétrécir pour mon cas) avec le module Pygame.

    Voilà le programme au cas où:

    #Importer Pygame
    import pygame
    pygame.init()
    
    #Créer la classe du joueur
    class Player(pygame.sprite.Sprite):
    
        def __init__(self):
            super().__init__()
            self.vie = 100
            self.max_vie = 100
            self.faim = 75
            self.max_faim = 100
            self.chance = 2
            self.max_chance = 15
            self.image = pygame.image.load('project/player.png')
            self.rect = self.image.get_rect()
    
    #Générer la fenêtre
    pygame.display.set_caption("Survie de L'Extrème")
    logo = pygame.image.load("project/logo.ico")
    pygame.display.set_icon(logo)
    screen = pygame.display.set_mode((1080, 720))
    
    #Impoerter l'arrière plan du jeu
    background = pygame.image.load('project/fond.jpg')
    
    #Charger le joueur
    player = Player()
    
    running = True
    
    #Boucle tant que running = vraie
    while running:
    
        #Appliquer l'arrière plan du jeu
        screen.blit(background, (-150, -200))
    
        #Appliquer l'image du joueur
        screen.blit(player.image, (0, 0))
    
        #Mettre à jour l'écran
        pygame.display.flip()
    
        #Si le joueur ferme la fenêtre:
        for event in pygame.event.get():
            #Que la fenêtre est fermée
            if event.type == pygame.QUIT:
                running = False
                pygame.quit()
                print("Fermeture du jeu...")
                import time
                time.sleep(2.5)
                print ("Le jeu à bien été fermé !")

    Merci d'avance :-)

    • Partager sur Facebook
    • Partager sur Twitter
      15 janvier 2020 à 0:05:32

      Salut,

      Ça fait un moment que je n'ai pas utilisé pygame, mais, dans ton cas, tu as deux options.

      La pourrie, celle que tu souhaites si j'ai compris, qui consiste à diminuer à l'échelle (scale en anglais) ta grosse image. Cette option est pourrie parce que tu vas intégrer une grosse quantité d'octets pour rendre une petite image.

      La meilleure, ne pas utiliser pygame pour cela, qui consiste à redimensionner l'image à la bonne taille et suffisamment compressée avec The GIMP par exemple, puis, d'utiliser la nouvelle image à la bonne taille dans pygame.

      Maintenant, imaginons que tu as un personnage qui peut grossir comme Mario et donc avoir des échelles de taille différentes, c'est-à-dire que le physique du personnage ne change pas, tu peux dimensionner en amont la taille la plus élevée, et tu gères l'échelle de dimensionnement selon la taille voulue dans le jeu en fonction des coups reçus par un ennemi par exemple (rapetissement).

      Je ne l'ai pas vérifié, mais, comme il est utile d'économiser de l'espace de stockage, je pense qu'une image 100 KB mise dans la partie "setup" puis une mise à l'échelle en 1/4 soit 25 KB dans la partie "loop" du jeu est plus appropriée que mettre une image 25 KB dans le "setup", et d'augmenter à l'échelle à 100 KB. D'ailleurs, pour éviter la pixélisation, mieux vaut que l'image de base soit la plus grosse possible.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        20 janvier 2020 à 20:42:44

        Merci pour votre réponse.

        J'ai utilisé un site de reconversion de PNG et l'image rentre dans la fenêtre :-)

        Bonne soirée

        • Partager sur Facebook
        • Partager sur Twitter
          20 janvier 2020 à 21:27:59

          https://stackoverflow.com/questions/5228026/transforming-images-in-pygame

          -
          Edité par fred1599 20 janvier 2020 à 21:28:42

          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

          Pygame redimensionner un sprite

          × 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