Question Pygame : mur et collision
Fermé
pokio
-
5 mai 2018 à 13:37
yg_be Messages postés 23353 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 - 14 mai 2018 à 19:31
yg_be Messages postés 23353 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 - 14 mai 2018 à 19:31
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
2 réponses
yg_be
Messages postés
23353
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 novembre 2024
Ambassadeur
1 554
5 mai 2018 à 16:09
5 mai 2018 à 16:09
bonjour,
moi je dirais qu'une collision se produit quand un élément se déplace vers une position occupée par un autre élément.
le groupe de lecture et de visionnage de vidéos a-t'il déjà une bonne maîtrise de python, a-t'il déjà réalisé des exercices plus simples?
comment le groupe a-t'il choisi de représenter le labyrinthe, les murs et les obstacles?
moi je dirais qu'une collision se produit quand un élément se déplace vers une position occupée par un autre élément.
le groupe de lecture et de visionnage de vidéos a-t'il déjà une bonne maîtrise de python, a-t'il déjà réalisé des exercices plus simples?
comment le groupe a-t'il choisi de représenter le labyrinthe, les murs et les obstacles?
5 mai 2018 à 16:17
Alors en gros pou l'affichage du fond et des murs, j'ai fais un tableau comme ceci :
niveau=[
[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],
[1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],
[1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],
[1,0,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1],
[1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1],
[1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1],
[1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,1],
[1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1],
[1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
où 1=mur et 0=fond, et nous avons un personnage entouré d'un rectangle (pour les collisions avec les murs qui sont aussi des rectangles). Sauf que le problème c'est que je ne sais pas comment écrire cela dans le programme. Je sais d'ors et déjà qu'il faut utiliser la formule "rect.collide" si j'ai bien compris
5 mai 2018 à 16:26
5 mai 2018 à 16:34
Pour le personnage : rect = pygame.Rect(0,0,21,24)
5 mai 2018 à 16:53
et, lorsque le personnage se déplace, j'utiliserais personnage.collidelist(murs) pour détecter une collision pendant le déplacement du personnage (pas juste au début et à la fin du déplacement).
5 mai 2018 à 16:59
def collision_mur():
for i in range(0,20):
for j in range(0,35):
if niveau[i][j]==1:
pygame.Rect(i*25,j*25,25,25)