A voir également:
- Collidelist pygame
- Pygame rotation - Forum Python
- Pygame text - Forum Python
- Get_pressed pygame ✓ - Forum Python
- Gravity pygame ✓ - Forum Python
- Pygame: masquer un texte 3 secondes plus tard - Forum Python
1 réponse
Bonsoir, il faut toujours ne faire qu'un update de la fenêtre, et tant qu'à faire regroupe ce qui peut l'être dans tes conditions, regarde dans ta boucle les modifications faites.
running = True while running: for evenement in pygame.event.get(): if evenement.type == QUIT: running = False break if evenement.type == KEYDOWN: if evenement.key == K_UP: rect_perenoel.y -= 30 # si le bord haut de l'image sort du cadre on remet l'image en bas if rect_perenoel.top < 0: rect_perenoel.bottom = 480 elif evenement.key == K_DOWN: rect_perenoel.y += 30 # si le bord bas de l'image sort du cadre on remet l'image en haut if rect_perenoel.bottom > 480: rect_perenoel.top = 0 if evenement.key == K_RIGHT: rect_perenoel.x += 30 # si le bord droit de l'image sort du cadre on remet l'image à gauche if rect_perenoel.right > 630: rect_perenoel.left = 0 elif evenement.key == K_LEFT: rect_perenoel.x -= 30 # si le bord gauche de l'image sort du cadre on remet l'image à droite if rect_perenoel.left < 0: rect_perenoel.right = 630 # POURQUOI DÉPLACER LE CADEAU HORS VISIBILITÉ PLUTÔT QUE DE NE # PLUS L'AFFICHER ? if rect_perenoel.colliderect(rect_cadeau): print('Collision !') rect_cadeau.x += 1000 ''' # POURQUOI CETTE LISTE ? POUR ENSUITE LA VIDER listecadeau = [rect_cadeau] if rect_perenoel.collidelist(listecadeau) == rect_cadeau: listecadeau.remove(rect_cadeau) if listecadeau == []: evenement.type == QUIT # CELA N'A PAS DE SENS DE DÉFINIR CETTE VARIABLE ''' affichage()
Tu devrais aussi regarder du côté des sprites pygame qi permet de grouper image et rect, il n'y a pas besoin de maîtriser le modèle objet pour s'en servir.
Normalement ta collision devrait être détectée.