Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2012
    Messages : 3
    Points : 0
    Points
    0

    Par défaut Liste à deux dimensions

    Bonjour à tous ! Je suis nouveau sur ce forum et novice dans le monde de la programmation.
    Je suis actuellement en train de réaliser un pacman 2d avec python et pygame et j'ai quelque soucis techniques.. Je pense qu'il y a quelque chose que je n'ai pas bien cerné sur les listes/tuples. Donc merci de m'éclairer !

    Ma map en 2d est écrite dans un fichier texte, sous la forme:
    1111111111111
    1222222222221
    1212111112121
    ....
    1 = Mur
    2 = Pièce
    0 = pièce mangée ou vide de base
    On ne peut se déplacer que sur des 0 et des 2 (Illogique je sais, mais je l'ai codé comme ça me venait)

    Bref, dans mon programme, je lis ce fichier texte grâce à la fonction open et je rentre ces valeurs dans une liste définit comme suit:

    Code :
    1
    2
    3
    4
     
    map = 19*[0] 
    for i in range(len(map)):	
    	map[i] = 19*[0]
    grâce à:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    def lecture_carte(map):
    	i = 0
    	j = 0
     
    	fichier = open("carte.txt", "r")
    	for ligne in fichier:
    		ligne = ligne.rstrip('\n')
    		j=0
    		for lettre in ligne:		
    			valeur = int(lettre)
    			map[i][j] = valeur
    			j=j+1
    		i=i+1	
    	fichier.close()
    Je pense qu'il y a mieux pour le remplir, mais là n'est pas la question.
    J'arrive enfin au problème.
    Dans la boucle de jeu, quand mon pacman mange une pièce (un 2 donc), j'incrémente un compteur de points, et j'aimerais transformer le 2 en 0, seulement là ça coince.
    Quand je fais:
    Code :
    1
    2
    3
     
    if map[i][j] == 2:
         map[i][j] = 0
    Ça ne change absolument absolument rien dans ma liste !
    Donc voilà mon soucis.. Si je passe plusieurs foi au même endroit, mon compteur s'incrémente plusieurs fois car la case est toujours à 2.

    J'espère que mon message est assez clair et que quelqu'un pourra m'éclairé..

  2. #2
    Expert Confirmé Sénior
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 302
    Points : 4 150
    Points
    4 150

    Par défaut

    Bonjour,

    Le dernier code fonctionne:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    x = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 2, 0, 0]]
    for i in range(3):
        for j in range(4):
            if x[2][1] == 2:
                x[2][1] = 0
     
    print x
    [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
    Mais 'map' est une fonction de Python: il ne faut pas utiliser ce nom comme variable.
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2012
    Messages : 3
    Points : 0
    Points
    0

    Par défaut

    It works !
    Je pense que j'ai fais une erreur de syntaxe.
    Merci du conseil !

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •