Aide projet ISN
EleanorJuri
Messages postés
2
Statut
Membre
-
EleanorJuri Messages postés 2 Statut Membre -
EleanorJuri Messages postés 2 Statut Membre -
Bonjour à vous,
Alors je suis en Terminale S et avec des amis on aurait besoin d'aide pour notre projet d'ISN. Nous utilisons Pygame. Alors notre projet est un jeu qui consiste à faire rattraper un personnage (qui ressemble actuellement à un carré avec une certaine dimension) un objet qu'on a appelé "banane". Ayant eu du mal à faire le programme de ce projet (nous ne somme pas très douées en ISN !), nous avions demandé à quelqu'un pour nous aider à faire le programme. Il nous a donc fait une partie du programme (la partie où les objets rentrent en collision) que nous ne comprenions pas vraiment (même s'il y a des commentaires), la voici :
Malheureusement la personne qui nous a aidé ne nous réponds plus, donc c'est pour cela que nous avions vraiment besoin d'une aide pour nous faire comprendre chaque ligne de ce programme..
Nous vous remercions d'avance !
Alors je suis en Terminale S et avec des amis on aurait besoin d'aide pour notre projet d'ISN. Nous utilisons Pygame. Alors notre projet est un jeu qui consiste à faire rattraper un personnage (qui ressemble actuellement à un carré avec une certaine dimension) un objet qu'on a appelé "banane". Ayant eu du mal à faire le programme de ce projet (nous ne somme pas très douées en ISN !), nous avions demandé à quelqu'un pour nous aider à faire le programme. Il nous a donc fait une partie du programme (la partie où les objets rentrent en collision) que nous ne comprenions pas vraiment (même s'il y a des commentaires), la voici :
# Fonction vide, modifiable lors d'un heritage pour gerer les collisions avec les autres entites
def _collideEntity (self, oEntity):
pass
# Fonction pour gerer la collision d'une entite lors d'un deplacement avec la carte
def _colisionMap(self, aMap):
# Deplacement vertical
iPositionMapX = int(self.fPositionX) // CELL_WIDTH
iPositionMapY = int(self.fPositionY + self.fVelocityY) // CELL_HEIGHT
# Si l'entite tombe
if self.fVelocityY >= 0:
iPositionMapY = iPositionMapY + 1
# Si la map contient un mur, la vitesse sur l'axe vertical est mis a 0
if aMap[iPositionMapY][iPositionMapX] == 1:
self.fVelocityY = 0
# Verification de collision sur le bloc a cote lorsque l'entite est sur deux blocs de la map
elif (iPositionMapX + 1) < len(aMap[iPositionMapY]) and self.fPositionX % CELL_WIDTH > 0 and aMap[iPositionMapY][iPositionMapX + 1] == 1:
self.fVelocityY = 0
# Deplacement horizontal
if self.fVelocityX != 0:
iPositionMapY = int(self.fPositionY) // CELL_HEIGHT
iPositionMapX = int(self.fPositionX + self.fVelocityX) // CELL_WIDTH
# Si l'entite va vers la droite
if self.fVelocityX > 0 :
iPositionMapX = iPositionMapX + 1
# Si la map contient un mur, la vitesse sur l'axe horizontal est mis a 0
if aMap[iPositionMapY][iPositionMapX] == 1:
self.fVelocityX = 0
# Verification de collision sur le bloc a cote lorsque l'entite touche deux blocs de la map
elif iPositionMapY + 1 < len(aMap) and self.fPositionY % CELL_HEIGHT > 0 and aMap[iPositionMapY + 1][iPositionMapX] == 1 :
self.fVelocityX = 0
# Fonction pour verfier et declencher la gestion de collision entre l'entite et les autres entite de la map
def _collideEntities(self):
aEntitiesRect = list()
aOtherEntities = list()
# On parcoure toutes les entites sur la map
for oEntity in aEntities:
# On ne recupere que les entites qui ne correspondent pas a l'instance
if self is not oEntity:
# On stock un rectangle a la position de chaque entites.
# Afin de conserver un ensemble d'index similaire, on stock les entites dans le meme ordre
# dans une seconde liste
oRect = pygame.Rect(oEntity.fPositionX, oEntity.fPositionY, oEntity.fWidth, oEntity.fHeight)
aEntitiesRect.append(oRect)
aOtherEntities.append(oEntity)
# On regarder avec quels indexs notre instance rentre en collision
oRect = pygame.Rect(self.fPositionX, self.fPositionY, self.fWidth, self.fHeight)
aIndexCollide = oRect.collidelistall(aEntitiesRect)
# Si il y a au moins une collision, on declenche un event de collision avec l'entite
if len(aIndexCollide) > 0:
for iIndex in aIndexCollide:
self._collideEntity(aOtherEntities[iIndex])
Malheureusement la personne qui nous a aidé ne nous réponds plus, donc c'est pour cela que nous avions vraiment besoin d'une aide pour nous faire comprendre chaque ligne de ce programme..
Nous vous remercions d'avance !
A voir également:
- Aide projet ISN
- Filigrane projet - Guide
- Gant projet - Télécharger - Gestion de projets
- Musique projet x - Forum Musique / Radio / Clip
- Musique debut project x - Forum Audio
- Wbs projet - Télécharger - Gestion de projets
1 réponse
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonsoir, merci d'utiliser la coloration syntaxique pour poster du code, surtout du code python.
EleanorJuri
Messages postés
2
Statut
Membre
ça marche !