Menu

Aide projet ISN

EleanorJuri 2 Messages postés dimanche 13 mai 2018Date d'inscription 13 mai 2018 Dernière intervention - 13 mai 2018 à 20:37 - Dernière réponse : EleanorJuri 2 Messages postés dimanche 13 mai 2018Date d'inscription 13 mai 2018 Dernière intervention
- 13 mai 2018 à 21:16
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 :


# 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 !
Afficher la suite 

Votre réponse

2 réponses

yg_be 6692 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 octobre 2018 Dernière intervention - 13 mai 2018 à 21:05
0
Merci
bonsoir, merci d'utiliser la coloration syntaxique pour poster du code, surtout du code python.
EleanorJuri 2 Messages postés dimanche 13 mai 2018Date d'inscription 13 mai 2018 Dernière intervention - 13 mai 2018 à 21:16
ça marche !
Commenter la réponse de yg_be