Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pygame]Problème TP

Pour éviter de créer un autre sujet, j'ai repris celui là

    15 novembre 2010 à 17:11:09

    Bonjour,

    J'ai un problème que je n'arrive pas à résoudre, j'ai beau chercher je ne trouves pas. Je pense qu'un code sera plus explicite.

    liste1 = [...] 
    liste2 = [...]
    ...
    liste15 = [...]
    #comment transformer ça en...
    
    i = 1
    for lignes in fichier: #je travaille sur un fichier
        liste/i/ = [...] #il faut remplacer le i par le nombre qu'il faut
        i += 1
    


    Si vous avez bien compris, je souhaite créer 15 listes ayant des noms différents au cœur d'un même boucle. Sinon, Est-ce que l'on peut faire ça :
    listePrincipale = [] #en créant une liste qui va accueillir d'autres listes
    listeSecondaire = [...] #on créer une seul liste avec son contenu
    listePrincipale.apprend(listeSecondaire) #on l'ajoute à la liste principale
    listeSecondaire = [...] #on change le contenu de la liste secondaire
    listePrincipale.apprend(listeSecondaire) #et on l'ajoute sans que le liste Principal[0] soit changer.
    

    Est-ce possible ?

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      15 novembre 2010 à 17:39:55

      Fais une liste de listes. Et oui, ce que tu proposes est une idée possible pour faire ça.
      • Partager sur Facebook
      • Partager sur Twitter
        15 novembre 2010 à 18:23:31

        i = 1
        for lignes in fichier:
            globals()['liste%s' % i] = [...]
            i += 1
        
        • Partager sur Facebook
        • Partager sur Twitter
          15 novembre 2010 à 19:42:17

          Mais pour par exemple utiliser la méthode apprend des listes, je dois écrire quoi comme nom de fonction ?
          • Partager sur Facebook
          • Partager sur Twitter
            15 novembre 2010 à 19:45:41

            La méthode s'appelle append (et non apprend).

            >>> a = []
            >>> a.append(1)
            >>> a.append('a')
            >>> a
            [1, 'a']
            
            • Partager sur Facebook
            • Partager sur Twitter
              15 novembre 2010 à 19:47:50

              Oui effectivement. Merci d'avoir corriger cette faute. Mais pour continuer mon post précédant, je dois faire quelque chose du genre :
              ['liste%s' % i].append(...) # ?
              
              • Partager sur Facebook
              • Partager sur Twitter
                15 novembre 2010 à 19:49:58

                Non. Tu fais comme tu avais suggéré : une liste de listes. Tu as ta liste principale qui contient des listes, et chaque sous-liste contient ce que tu veux.
                • Partager sur Facebook
                • Partager sur Twitter
                  15 novembre 2010 à 19:55:17

                  Justement, ces listes je les créer dans une boucle for parcourant mon fichier ligne par ligne qui à leur tour sont parcourus caractère par caractère. Les liste doivent avoir un nom différent.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 novembre 2010 à 20:00:05

                    La sous-liste peuvent très bien avoir le même nom. Une fois que tu les ajoutes (append) à ta liste principe, elle n'est plus liée à une variable.

                    >>> listePrincipale = []
                    >>> listeSecondaire = ['a', 1, 5]
                    >>> listePrincipale.append(listeSecondaire)
                    >>> listeSecondaire = [6, 'gj', 23]
                    >>> listePrincipale.append(listeSecondaire)
                    >>> print(listePrincipale)
                    [['a', 1, 5], [6, 'gj', 23]]
                    
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 novembre 2010 à 20:03:49

                      Merci je teste tout de suite.

                      Edit :
                      Bon voilà ça a très bien marcher mais plutôt que d'ouvrir un autre sujet je préfère exposé mon autre problème ici. En fait, je faisait le TD DK Labyrinthe du tutoriel (très bon tutoriel soit dit en passant :D ). Le problème, c'est que mon image d'accueil ne s'affiche pas. Voici mes fichiers:

                      dklabyrhinthe.py :

                      import pygame
                      from pygame.locals import *
                      
                      from classes import *
                      from constantes import *
                      
                      pygame.time.Clock().tick(30)
                      
                      pygame.init()
                      
                      fenetre = pygame.display.set_mode((cote_fenetre, cote_fenetre))
                      
                      icone = pygame.image.load(image_icone)
                      pygame.display.set_icon(icone)
                      
                      pygame.display.set_caption(titre_fenetre)
                      
                      accueil = pygame.image.load(image_accueil)
                      fond = pygame.image.load(image_fond)
                      
                      continuer = 1
                      continuer_menu = 1
                      continuer_jeu = 1
                      
                      while continuer:
                      	while continuer_menu:
                      		fenetre.blit(accueil, (0,0))
                      		for event in pygame.event.get():
                      			if event.type == QUIT:
                      				continuer = 0
                      				continuer_menu = 0
                      				continuer_jeu = 0
                      				
                      			if event.type == KEYDOWN:
                      				if event.key == K_F1:
                      					niveau = 1
                      					continuer_menu = 0
                      				if event.key == K_F2:
                      					niveau = 2
                      					continuer_menu = 0
                      					
                      	while continuer_jeu:
                      		fenetre.blit(fond, (0,0))
                      		for event in pygame.event.get():
                      			if event.type == QUIT:
                      				continuer = 0
                      				continuer_jeu = 0
                      				continuer_menu = 0
                      		
                      	continuer_menu = 1
                      	continuer_jeu = 1
                      



                      classes.py :

                      class Niveau:
                      	def __init__(self):
                      		self.structure = []
                      		
                      	def initialisation_niveau(self, fichier):
                      		with open(fichier, "r") as fichier:
                      			for ligne in fichier:
                      				for sprite in ligne:
                      					listeSecondaire = []
                      					while sprite != '/n':
                      						listeSecondaire.append(sprite)
                      				self.structure.append(listeSecondaire)
                      				
                      	def afficher_niveau(self, fenetre):
                      		i = 0
                      		j = 0
                      		while i < len(self.structure):
                      			while j < len(self.structure[i]):
                      				if self.structure[i][j] == 'd':
                      					self.structure[i][j] == pygame.image.load(depart)
                      					position_sprite_x = self.structure[i][j] * taille_sprite
                      					position_sprite_y = self.structure[i][j] * taille_sprite
                      					fenetre.blit(self.structure, (position_perso_x, position_perso_y))
                      
                      		
                      class Perso:
                      	def __init__(self):
                      		self.position_bas = dk_bas
                      		self.position_haut = dk_bas
                      		self.position_droite = dk_droite
                      		self.position_gauche = dk_gauche
                      		self.position_actuelle = dk_bas
                      



                      Et constantes.py :

                      cote_fenetre = 450
                      image_icone = "dk_bas.png"
                      titre_fenetre = "Labyrinth DK !"
                      image_accueil = "accueil.png"
                      dk_bas = "dk_bas.png"
                      dk_haut = "dk_haut.png"
                      dk_droite = "dk_droite.png"
                      dk_gauche = "dk_gauche.png"
                      depart = "depart.png"
                      mur = "mur.png"
                      arrivee = "arrivee.png"
                      image_fond = "fond.jpg"
                      taille_sprite = 30
                      



                      J'ai juste oublié de mettre pygame.display.flip()...
                      • Partager sur Facebook
                      • Partager sur Twitter

                      [Pygame]Problème TP

                      × 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