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:
grâce à:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 map = 19*[0] for i in range(len(map)): map[i] = 19*[0]
Je pense qu'il y a mieux pour le remplir, mais là n'est pas la question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
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:
Ça ne change absolument absolument rien dans ma liste !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if map[i][j] == 2: map[i][j] = 0
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é..
Partager