Comment convertir une image en une autre image dans pygame sans utiliser de classe d'image-objet? Comment puis-je supprimer l'image précédente après l'avoir convertie en une autre?Comment convertir une surface (image) en une autre surface dans pygame?
Répondre
J'ai écrit un petit programme aujourd'hui qui montre comment je change une image d'objets (cela peut aider/répondre à votre question). Il contient des notes pour l'essentiel de l'utilisation du code, il est donc plus facile de comprendre comment et pourquoi cela fonctionne (pour autant que je sache, n'importe qui aurait pu commencer à programmer hier).
Quoi qu'il en soit, voici le code:
import pygame, sys
#initializes pygame
pygame.init()
#sets pygame display width and height
screen = pygame.display.set_mode((600, 600))
#loads images
background = pygame.image.load("background.png").convert_alpha()
firstImage = pygame.image.load("firstImage.png").convert_alpha()
secondImage = pygame.image.load("secondImage.png").convert_alpha()
#object
class Player:
def __init__(self):
#add images to the object
self.image1 = firstImage
self.image2 = secondImage
#instance of Player
p = Player()
#variable for the image switch
image = 1
#x and y coords for the images
x = 150
y = 150
#main program loop
while True:
#places background
screen.blit(background, (0, 0))
#places the image selected
if image == 1:
screen.blit(p.image1, (x, y))
elif image == 2:
screen.blit(p.image2, (x, y))
#checks if you do something
for event in pygame.event.get():
#checks if that something you do is press a button
if event.type == pygame.KEYDOWN:
#quits program when escape key pressed
if event.key == pygame.K_ESCAPE:
sys.exit()
#checks if down arrow pressed
if event.key == pygame.K_DOWN:
#checks which image is active
if image == 1:
#switches to image not active
image = 2
elif image == 2:
image = 1
#updates the screen
pygame.display.update()
Je ne sais pas comment votre code est mis en place ou si c'est ce dont vous avez besoin (je ne comprends pas tout à fait des classes soit il peut donc être un sprite classe), mais j'espère que cela aide!
Conversion d'une image à l'autre est aussi simple que réaffectant la variable
firstImage = pygame.image.load("firstImage.png")
secondImage = pygame.image.load("secondImage.png")
firstImage = secondImage
del secondImage
Je ne sais pas exactement ce que vous voulez dire en supprimant l'image. Vous pouvez utiliser "del secondImage" pour supprimer la référence dans votre code et l'envoyer au garbage collection. Une fois que vous avez effacé l'écran et que vous avez masqué l'image mise à jour, il ne devrait plus y avoir de signe d'image obsolète.
Qu'essayez-vous exactement de faire? – skrx
Que voulez-vous dire en convertissant une surface en une autre surface? Changer pour un nouveau format? Pouvez-vous nous montrer un exemple dans le code de ce que vous avez essayé et cela pourrait être plus clair. –