Pygame Effacement des Images sur des arrière-plans
Vous blit une image sur votre surface à utiliser comme arrière-plan. Ensuite, vous appuyez sur le bouton X blit une image sur la même surface, comment voulez-vous effacer l'image? J'ai jusqu'à présent, mais ensuite je me retrouve avec un rectangle blanc au milieu de mes arrière-plan.
screen = pygame.display.set_mode(1280, 512)
screen.blit(background, (0,0))
while True:
pygame.display.flip() #flip is same as update
for event in pygame.event.get():
if (event.type == pygame.KEYDOWN):
if event.key == pygame.K_SPACE:
screen.blit(player, (x, y))
if event.key == pygame.K_BACKSPACE:
pygame.draw.rect(screen, [255,255,255], (x, y, 62,62))
Vous devez vous connecter pour publier un commentaire.
Il y a deux choses que vous pouvez faire ici. Vous pouvez aller l'itinéraire simple et il suffit de dessiner à nouveau le fond...
Ou, si vous voulez qu'il soit un peu plus efficace, vous pouvez avoir le blit méthode uniquement la partie de l'arrière-plan que le joueur de l'image est la couverture de. Vous pouvez le faire comme ceci...
Le Rectangle dans le troisième argument sera la cause de la blit à ne dessiner le 62x62 pixel section de "toile de fond" situé à la position x,y sur l'image.
Bien sûr, cela suppose que le lecteur de l'image est toujours à l'intérieur de l'arrière-plan. Si le joueur de l'image ne recouvre que partiellement le fond je ne suis pas entièrement sûr de ce qui va arriver. Il va probablement lancer une exception, ou il va tout simplement enrouler autour de l'autre côté de l'image.
Vraiment la première option doit être très bien si c'est un assez petit projet, mais si vous êtes inquiet au sujet de la performance pour une raison quelconque essayez la seconde option.
Normalement le blit flux de travail est simplement blit l'arrière-plan d'origine de l'écran.
Dans votre code, vous utilisez
screen.blit(background, (0,0))
Lorsque vous commencez à les combiner beaucoup de surfaces, vous aurez probablement envie d'une variable ou d'une liste de variables de garder une trace de l'état de l'écran.
E. g.
Initialiser Fond
Ajouter Un Sprite
Clair Sprite
Voir ici pour plus d'informations sur les sprites dans Pygame. Notez que si votre arrière-plan n'est pas une image d'arrière-plan et est juste une couleur unie, vous pouvez également utiliser
screen.fill([0, 0, 0])
à la place.