Partage
  • Partager sur Facebook
  • Partager sur Twitter

ISN : Collision avec les murs

Comment faire pour que mon personnage soit tout sauf un fantôme

    18 mai 2013 à 20:02:52

    Bonjour ou Bonsoir, alors voila toujours pour le même programme j'ai résolu mon problème de déplacement. J'ai également réussi à faire en sorte que mon personnage s'arrête lorsqu'il se trouve autour d'un coffre. cependant, avec mon coéquipier, nous avons tout un programme à part pour les niveaux. C'est à dire une succesion de screen.blit(mur,(pos_x,pos_y))

    Mon idée était que pour éviter de refaire 50000 fois ce que j'ai fait avec le coffre, je voulais définir une fonction qui contiendrait toutes les coordonnées des murs, puis l'appeler quand je voudrais utiliser les collision.

    Plus concrêtement:

    import pygame, sys 
    pygame.init()
    def mapy():
            minimur=pygame.image.load('mur.png')
            imfond=pygame.image.load('fond.png')
            imfond = pygame.transform.scale(imfond,[600,600])
            fen=pygame.display.set_mode((600,600))
            while True :
                    fen.blit(imfond,(0,0))
                    fen.blit(minimur,(0,30))
                    fen.blit(minimur,(0,60))
                    fen.blit(minimur,(0,90))
                    fen.blit(minimur,(0,120))
                    fen.blit(minimur,(0,150))
                    fen.blit(minimur,(0,180))
                    fen.blit(minimur,(0,210))
                    fen.blit(minimur,(0,240))
                    fen.blit(minimur,(0,270))
                    fen.blit(minimur,(0,300))
                    fen.blit(minimur,(0,330))
                    fen.blit(minimur,(0,360))
                    fen.blit(minimur,(0,390))
                    fen.blit(minimur,(0,420))
                    fen.blit(minimur,(0,450))
                    fen.blit(minimur,(0,480))
                    fen.blit(minimur,(0,510))
                    fen.blit(minimur,(0,540))
                    fen.blit(minimur,(0,570))
                            #paroi haute
                    
                    fen.blit(minimur,(60,0))	
                    fen.blit(minimur,(90,0))	
                    fen.blit(minimur,(120,0))	
                    fen.blit(minimur,(150,0))
                    fen.blit(minimur,(180,0))	
                    fen.blit(minimur,(210,0))	
                    fen.blit(minimur,(240,0))	
                    fen.blit(minimur,(270,0))
                    fen.blit(minimur,(300,0))	
                    fen.blit(minimur,(330,0))
                    fen.blit(minimur,(360,0))
                    fen.blit(minimur,(390,0))
                    fen.blit(minimur,(420,0))
                    fen.blit(minimur,(450,0))
                    fen.blit(minimur,(480,0))
                    fen.blit(minimur,(510,0))
                    fen.blit(minimur,(570,0))	
                    #paroi droite
                    fen.blit(minimur,(570,30))
                    fen.blit(minimur,(570,60))
                    fen.blit(minimur,(570,90))
                    fen.blit(minimur,(570,120))
                    fen.blit(minimur,(570,150))
                    fen.blit(minimur,(570,180))
                    fen.blit(minimur,(570,210))
                    fen.blit(minimur,(570,240))
                    fen.blit(minimur,(570,270))
                    fen.blit(minimur,(570,300))
                    fen.blit(minimur,(570,330))
                    fen.blit(minimur,(570,360))
                    fen.blit(minimur,(570,390))
                    fen.blit(minimur,(570,420))
                    fen.blit(minimur,(570,450))
                    fen.blit(minimur,(570,480))
                    fen.blit(minimur,(570,510))
                    fen.blit(minimur,(570,540))
                    fen.blit(minimur,(570,570))
                    fen.blit(minimur,(570,600))
                    # paroi basse
                    fen.blit(minimur,(30,570))
                    fen.blit(minimur,(60,570))	
                    fen.blit(minimur,(90,570))	
                    fen.blit(minimur,(120,570))	
                    fen.blit(minimur,(150,570))
                    fen.blit(minimur,(180,570))	
                    fen.blit(minimur,(210,570))	
                    fen.blit(minimur,(240,570))
                    fen.blit(minimur,(270,570))
                    fen.blit(minimur,(300,570))	
                    fen.blit(minimur,(330,570))
                    fen.blit(minimur,(360,570))
                    fen.blit(minimur,(390,570))
                    fen.blit(minimur,(420,570))
                    fen.blit(minimur,(450,570))
                    fen.blit(minimur,(480,570))
                    fen.blit(minimur,(510,570))
                    fen.blit(minimur,(540,570))
                    fen.blit(minimur,(570,570))	
                    # mur interieur
                    fen.blit(minimur,(30,120))
                    fen.blit(minimur,(60,120))
                    fen.blit(minimur,(90,120))
                    fen.blit(minimur,(120,120))
                    fen.blit(minimur,(120,90))
                    fen.blit(minimur,(120,60))
                    fen.blit(minimur,(60,30))
                    fen.blit(minimur,(60,60))
                    fen.blit(minimur,(150,60))
                    fen.blit(minimur,(180,60))
                    fen.blit(minimur,(210,60))
                    fen.blit(minimur,(240,60))
                    fen.blit(minimur,(270,60))
                    fen.blit(minimur,(300,60))
                    fen.blit(minimur,(330,60))
                    fen.blit(minimur,(390,60))
                    fen.blit(minimur,(390,90))
                    fen.blit(minimur,(390,120))
                    fen.blit(minimur,(360,120))
                    fen.blit(minimur,(330,120))
                    fen.blit(minimur,(300,120))
                    fen.blit(minimur,(270,120))
                    fen.blit(minimur,(60,180))
                    fen.blit(minimur,(60,210))
                    fen.blit(minimur,(60,240))
                    fen.blit(minimur,(60,270))
                    fen.blit(minimur,(90,270))
                    fen.blit(minimur,(120,270))
                    fen.blit(minimur,(150,270))
                    fen.blit(minimur,(180,270))
                    fen.blit(minimur,(210,270))
                    fen.blit(minimur,(210,300))
                    fen.blit(minimur,(30,330))
                    fen.blit(minimur,(60,330))
                    fen.blit(minimur,(60,390))
                    fen.blit(minimur,(60,420))
                    fen.blit(minimur,(60,450))
                    fen.blit(minimur,(60,510))
                    fen.blit(minimur,(120,330))
                    fen.blit(minimur,(90,390))
                    fen.blit(minimur,(120,390))
                    fen.blit(minimur,(180,120))
                    fen.blit(minimur,(210,120))
                    fen.blit(minimur,(180,150))
                    fen.blit(minimur,(180,180))
                    fen.blit(minimur,(120,180))
                    fen.blit(minimur,(120,210))
                    fen.blit(minimur,(150,180))
                    fen.blit(minimur,(210,150))
                    fen.blit(minimur,(210,180))
                    fen.blit(minimur,(210,210))
                    fen.blit(minimur,(210,240))
                    fen.blit(minimur,(210,270))
                    fen.blit(minimur,(120,450))
                    fen.blit(minimur,(120,480))
                    fen.blit(minimur,(120,510))
                    fen.blit(minimur,(90,510))
                    fen.blit(minimur,(150,330))
                    fen.blit(minimur,(180,330))
                    fen.blit(minimur,(210,330))
                    fen.blit(minimur,(150,390))
                    fen.blit(minimur,(180,390))
                    fen.blit(minimur,(210,390))
                    fen.blit(minimur,(180,420))
                    fen.blit(minimur,(180,450))
                    fen.blit(minimur,(240,480))
                    fen.blit(minimur,(270,480))
                    fen.blit(minimur,(300,480))
                    fen.blit(minimur,(180,510))
                    fen.blit(minimur,(210,510))
                    fen.blit(minimur,(240,510))
                    fen.blit(minimur,(300,510))
                    fen.blit(minimur,(300,540))
                    fen.blit(minimur,(240,330))
                    fen.blit(minimur,(270,330))
                    fen.blit(minimur,(300,330))
                    fen.blit(minimur,(300,360))
                    fen.blit(minimur,(240,390))
                    fen.blit(minimur,(240,420))
                    fen.blit(minimur,(240,450))
                    fen.blit(minimur,(300,420))
                    fen.blit(minimur,(270,150))
                    fen.blit(minimur,(270,180))
                    fen.blit(minimur,(270,240))
                    fen.blit(minimur,(300,240))
                    fen.blit(minimur,(450,60))
                    fen.blit(minimur,(450,90))
                    fen.blit(minimur,(450,120))
                    fen.blit(minimur,(150,510))
                    fen.blit(minimur,(270,210))
                    fen.blit(minimur,(450,150))
                    fen.blit(minimur,(330,180))
                    fen.blit(minimur,(360,180))
                    fen.blit(minimur,(390,180))
                    fen.blit(minimur,(420,180))
                    fen.blit(minimur,(450,180))
                    fen.blit(minimur,(450,210))
                    fen.blit(minimur,(330,240))
                    fen.blit(minimur,(360,240))
                    fen.blit(minimur,(390,240))
                    fen.blit(minimur,(450,240))
                    fen.blit(minimur,(480,240))
                    fen.blit(minimur,(390,270))
                    fen.blit(minimur,(360,300))
                    fen.blit(minimur,(390,300))
                    fen.blit(minimur,(420,300))
                    fen.blit(minimur,(450,300))
                    fen.blit(minimur,(480,300))
                    fen.blit(minimur,(360,360))
                    fen.blit(minimur,(390,360))
                    fen.blit(minimur,(420,390))
                    fen.blit(minimur,(420,360))
                    fen.blit(minimur,(450,360))
                    fen.blit(minimur,(450,390))
                    fen.blit(minimur,(330,420))
                    fen.blit(minimur,(360,420))
                    fen.blit(minimur,(420,420))
                    fen.blit(minimur,(360,450))
                    fen.blit(minimur,(420,450))
                    fen.blit(minimur,(450,450))
                    fen.blit(minimur,(480,450))
                    fen.blit(minimur,(360,480))
                    fen.blit(minimur,(360,510))
                    fen.blit(minimur,(390,510))
                    fen.blit(minimur,(420,510))
                    fen.blit(minimur,(450,510))
                    fen.blit(minimur,(450,540))
                    fen.blit(minimur,(510,30))
                    fen.blit(minimur,(510,60))
                    fen.blit(minimur,(510,90))
                    fen.blit(minimur,(510,120))
                    fen.blit(minimur,(510,150))
                    fen.blit(minimur,(510,180))
                    fen.blit(minimur,(510,210))
                    fen.blit(minimur,(510,240))
                    fen.blit(minimur,(510,270))
                    fen.blit(minimur,(510,300))
                    fen.blit(minimur,(510,330))
                    fen.blit(minimur,(510,360))
                    fen.blit(minimur,(510,390))
                    fen.blit(minimur,(510,420))
                    fen.blit(minimur,(510,450))
                    fen.blit(minimur,(510,480))
                    fen.blit(minimur,(510,510))
                    fen.blit(minimur,(300,390))
                    
                    pygame.display.update()
                    
    	
    if __name__ == '__main__':
            mapy()
    

    voici le programme du niveau 1

    comment dois-je m'y prendre pour faire en sorte que le perso rentre en collision avec les 'minimurs' ?

    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2013 à 20:04:13

      Le programme du jeu:

      #This python file uses the following encoding: utf-8
      #Game project
      import pygame,sys
      import map_niv1
      from pygame.locals import*
      pygame.init()
      
      def game():
          fen = pygame.display.set_mode((600,600))
          pygame.display.set_caption('Labyrinthe')
          dk_bas = pygame.image.load('dk_bas.png')
          dk_haut = pygame.image.load('dk_haut.png')
          dk_gauche = pygame.image.load('dk_gauche.png')
          fond = pygame.image.load('fond.png')
          dk_droite = pygame.image.load('dk_droite.png') 
          end = pygame.image.load('end.png')
          end = pygame.transform.rotate(end,180)
          start = pygame.image.load('start.png')
          minimur = pygame.image.load('mur.png')
          minimur_pos = minimur.get_rect()
          coffre_open = pygame.image.load('coffre_open.png')
          coffre_open = pygame.transform.scale(coffre_open,[32,30])
          coffre = pygame.image.load('coffre.png')
          coffre = pygame.transform.scale(coffre,[30,30])
          fond = pygame.transform.scale(fond,[600,600])
          home_screen = pygame.image.load('home.png')
          home_screen = pygame.transform.scale(home_screen,[600,600])
          image_vide=pygame.image.load("vide.png")
          image_fond = home_screen
          dk_pos = dk_bas.get_rect()
          
          while True: #Menu
              
              fen.blit(coffre,(100,90))
              fen.blit(image_fond,(0,0))
              mapy()
              pygame.display.update()
              
              for event in pygame.event.get():
                  if event.type == pygame.QUIT:
      
                      pygame.quit()
         
                  elif event.type == KEYDOWN:
                      if event.key == K_F1:
                          image_fond= image_vide
                          
                          pygame.display.update(fen.blit(end,(550,550)))
                          pygame.display.update(fen.blit(start,(0,0)))
                          pygame.display.update(fen.blit(coffre,(100,90)))
                          
                      elif event.key == K_RIGHT:
                          
                          if 60<dk_pos[0]<120 and dk_pos[1]==90:
                                  dk_pos = dk_pos.move(-10,0)
                                  pygame.display.update(fen.blit(fond,(0,0)))
                                  pygame.display.update(fen.blit(end,(550,550)))
                                  pygame.display.update(fen.blit(start,(0,0)))
                                  pygame.display.update(fen.blit(coffre,(100,90)))
                                  pygame.display.update(fen.blit(dk_droite,dk_pos))
                         
                          if dk_pos[0]>560:
                              dk_pos = dk_pos.move(-10,0)
                              pygame.display.update(fen.blit(fond,(0,0)))
                              pygame.display.update(fen.blit(end,(550,550)))
                              pygame.display.update(fen.blit(start,(0,0)))
                              pygame.display.update(fen.blit(coffre,(100,90)))
                              pygame.display.update(fen.blit(dk_droite,dk_pos))
                              
                          if dk_pos == minimur_pos:
                              dk_pos = dk_pos.move(-10,0)
                              pygame.display.update(fen.blit(fond,(0,0)))
                              pygame.display.update(fen.blit(end,(550,550)))
                              pygame.display.update(fen.blit(start,(0,0)))
                              pygame.display.update(fen.blit(coffre,(100,90)))
                              pygame.display.update(fen.blit(dk_droite,dk_pos))
                          dk_pos = dk_pos.move(10,0)
                          pygame.display.update(fen.blit(fond,(0,0)))
                          pygame.display.update(fen.blit(end,(550,550)))
                          pygame.display.update(fen.blit(start,(0,0)))
                          pygame.display.update(fen.blit(coffre,(100,90)))
                          pygame.display.update(fen.blit(dk_droite,dk_pos))
      
                      elif event.key == K_LEFT:
      
                          if 60<dk_pos[0]<140 and dk_pos[1]==90:
                              
                              dk_pos = dk_pos.move(10,0)
                              pygame.display.update(fen.blit(fond,(0,0)))
                              pygame.display.update(fen.blit(end,(550,550)))
                              pygame.display.update(fen.blit(start,(0,0)))
                              pygame.display.update(fen.blit(coffre,(100,90)))
                              pygame.display.update(fen.blit(dk_gauche,dk_pos))
                          
                          
                          if dk_pos[0]==0:
                              dk_pos = dk_pos.move(10,0)
                              pygame.display.update(fen.blit(fond,(0,0)))
                              pygame.display.update(fen.blit(end,(550,550)))
                              pygame.display.update(fen.blit(start,(0,0)))
                              pygame.display.update(fen.blit(coffre,(100,90)))
                              pygame.display.update(fen.blit(dk_gauche,dk_pos))
                          dk_pos = dk_pos.move(-10,0)
                          pygame.display.update(fen.blit(fond,(0,0)))
                          pygame.display.update(fen.blit(end,(550,550)))
                          pygame.display.update(fen.blit(start,(0,0)))
                          pygame.display.update(fen.blit(coffre,(100,90)))
                          pygame.display.update(fen.blit(dk_gauche,dk_pos))
      
                          
                      elif event.key == K_DOWN:
      
                          if dk_pos[0]==100 and 50<dk_pos[1]<110:
                              dk_pos = dk_pos.move(0,-10)
                              pygame.display.update(fen.blit(fond,(0,0)))
                              pygame.display.update(fen.blit(end,(550,550)))
                              pygame.display.update(fen.blit(start,(0,0)))
                              pygame.display.update(fen.blit(coffre,(100,90)))
                              pygame.display.update(fen.blit(dk_bas,dk_pos))
                         
                          if dk_pos[1]>560:
                              dk_pos = dk_pos.move(0,-10)
                              pygame.display.update(fen.blit(fond,(0,0)))
                              pygame.display.update(fen.blit(end,(550,550)))
                              pygame.display.update(fen.blit(start,(0,0)))
                              pygame.display.update(fen.blit(coffre,(100,90)))
                              pygame.display.update(fen.blit(dk_bas,dk_pos))
                          dk_pos = dk_pos.move(0,10)
                          pygame.display.update(fen.blit(fond,(0,0)))
                          pygame.display.update(fen.blit(end,(550,550)))
                          pygame.display.update(fen.blit(start,(0,0)))
                          pygame.display.update(fen.blit(coffre,(100,90)))
                          pygame.display.update(fen.blit(dk_bas,dk_pos))
      
                      elif event.key == K_UP:
      
                          if dk_pos[0]==100 and 50<dk_pos[1]<130:
                              dk_pos = dk_pos.move(0,10)
                              pygame.display.update(fen.blit(fond,(0,0)))
                              pygame.display.update(fen.blit(end,(550,550)))
                              pygame.display.update(fen.blit(start,(0,0)))
                              pygame.display.update(fen.blit(coffre,(100,90)))
                              pygame.display.update(fen.blit(dk_droite,dk_pos))
                          if dk_pos[1]==0:
                              dk_pos = dk_pos.move(0,10)
                              pygame.display.update(fen.blit(fond,(0,0)))
                              pygame.display.update(fen.blit(end,(550,550)))
                              pygame.display.update(fen.blit(start,(0,0)))
                              pygame.display.update(fen.blit(coffre,(100,90)))
                              pygame.display.update(fen.blit(dk_droite,dk_pos))
                          dk_pos = dk_pos.move(0,-10)
                          pygame.display.update(fen.blit(fond,(0,0)))
                          pygame.display.update(fen.blit(end,(550,550)))
                          pygame.display.update(fen.blit(start,(0,0)))
                          pygame.display.update(fen.blit(coffre,(100,90)))
                          pygame.display.update(fen.blit(dk_haut,dk_pos))
      
                      
      
                      
                                          
      
      
                          
      if __name__ == '__main__':
          game()
          mapy()
          
          
      



      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2013 à 23:30:48

        hallucinant ...
        • Partager sur Facebook
        • Partager sur Twitter

        Python c'est bon, mangez-en. 

          19 mai 2013 à 16:19:22

          Mais mort de rire !

          Et pour afficher "bonjour" tu fais comment ? 

          afficherLettre('b')
          afficherLettre('o')
          afficherLettre('n')
          afficherLettre('j')
          afficherLettre('o')
          afficherLettre('u')
          afficherLettre('r')

          non ?

          Sérieusement, il faut vraiment que tu réécrive ça...

          • Partager sur Facebook
          • Partager sur Twitter
          Arius, vraiment le plus puissant de l'ancienne Ligue des Super Zéros !
            20 mai 2013 à 17:19:51

            C'est pas moi c mon coéquipier ....

            J'ai compris ce que je dois modifier

            • Partager sur Facebook
            • Partager sur Twitter
              20 mai 2013 à 17:29:10

              donc c du genre:

              screen.blit(minimur,(0,30),(0,90),(0,120))

              ect ....
              c sa ?

              • Partager sur Facebook
              • Partager sur Twitter
                21 mai 2013 à 10:40:17

                1. Tu te fais une map de ton niveau de ton mario, genre :

                carte = """
                
                   =*=       *      =*=*=*=*=      
                          =
                  M      ==          M
                =============== ========= =======
                =============== ========= =======
                """

                M : Un monstre

                = : La terre, bloc rigide

                * : Bonus

                Tu la stocke dans une chaine de caractères (Soit dans le source comme dans cet exemple, soit dans un autre fichier).

                2. Ensuite, tu fais le programme qui lis cette map et qui l'affiche en te permettant d'y jouer.

                -
                Edité par antoine1023 21 mai 2013 à 10:40:35

                • Partager sur Facebook
                • Partager sur Twitter
                Arius, vraiment le plus puissant de l'ancienne Ligue des Super Zéros !
                  22 mai 2013 à 18:54:22

                  Donc je défini les images par les caractères que je vais mettre dans mon niveau genre M = pygame.image.load('monstre.png')
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 mai 2013 à 23:05:34

                    Oui :)

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Arius, vraiment le plus puissant de l'ancienne Ligue des Super Zéros !
                      23 mai 2013 à 1:39:55

                      Merci je vais essayer, l'échéance est courte mais on est pas obligés d'avoir un projet fini Merci de l'aide !
                      • Partager sur Facebook
                      • Partager sur Twitter

                      ISN : Collision avec les murs

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown