IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

jeu de la vie erreur itération [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Par défaut jeu de la vie erreur itération
    Bonjour,
    je suis débutante et je cherche à écrire un programme simple du "jeu de la vie".
    J'obtiens un affichage qui me convient à l'initial mais dès la première itération le dessin obtenu est faux.:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    from tkinter import*
     
    #création du tableau  comme monde au départ avec le U inversé.
    #il a fallu régler le probleme du tableau avec lignes
    #et colonnes indépendantes
    def initial():
        colonnes=40
        lignes=40
        monde=[[0]*colonnes for _ in range(lignes)]
        monde[19][19]=1
        monde[19][20]=1
        monde[19][21]=1
        monde[20][19]=1
        monde[21][19]=1
        monde[21][20]=1
        monde[21][21]=1    
        return monde
     
    # pour afficher la grille du jeu
    def affiche(tableau):
        for i in range(40):
            for j in range(40):
                if tableau[i][j]==0 :
                    zone.create_oval(0+i*10,0+j*10,10+i*10,10+j*10,fill="green",outline="green")
                else :
                    zone.create_oval(0+i*10,0+j*10,10+i*10,10+j*10,fill="red",outline="red")
     
    #on compte le nombre de cellules voisines vivantes, donc égales à* 1.
    #on ne considère pas les cellulles situées en bordures
    def voisin(tableau,i,j):
        nombre=tableau[i-1][j-1]+tableau[i-1][j]+tableau[i-1][j+1]+tableau[i][j-1]+tableau[i][j+1]+tableau[i+1][j-1]+tableau[i+1][j]+tableau[i+1][j+1]
        return(nombre)
     
    #on applique les règles du jeu. Il faut faire une copie du tableau. Il y a une erreur dés la premére itération. Pourquoi ??
    def iteration(tableau, k):
        for loop in range (k):
            copie=tableau
            for i in range(1,39):
                for j in range(1,39):
                    vivant=voisin(copie,i,j)
                    if ((copie[i][j]==1 and vivant==2) or vivant==3):
                        tableau[i][j]=1
                    else :
                        tableau[i][j]=0
     
     
     
    # creation de la fenetre principale
    fenetre=Tk()
    fenetre.title("Le jeu de la vie")
     
    # creation de la fenetre graphique
    zone=Canvas(fenetre, width=400, height=400, bg="white")                        
    zone.pack(padx=10, pady=10)
     
    #le programme principal
    grille=initial()
    iteration(grille,10)
    affiche(grille)
     
     
     
     
    fenetre.mainloop()
    Jeu_de_la_vie.py
    Est-ce que quelqu'un pourrait me donner une explication ?
    D'avance merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Ben déjà le copie = tableau ne fait pas de copie mais ajoute une étiquette (copie) vers le même objet que celui assigné à "tableau".
    Pour recopier une liste comme [1, 2, 3] dans une autre, il faut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> L = [1, 2, 3]
    >>> N = L[:]
    >>>
    et pour copier une liste de listes, il va falloir recopier ainsi toutes les "lignes" via une itération.
    note: Pour recopier des "conteneurs" arbitraires, on peut aussi utiliser copy.deepcopy, mais vous en apprendrez plus en écrivant vos itérations.

    Après vous avez un soucis avec variables globales, fonctions et les objets dits mutables.
    Cela je ne vais pas essayer de vous l'expliquer car les tutos font cela déjà très bien.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Par défaut Copie de liste
    Bonjour,
    merci pour cette réponse rapide, je vais déjà régler ma copie de liste et je vous informe de la suite !

  4. #4
    Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Par défaut Cela fonctionne
    Bonjour,
    j'ai passé ma matinée à lire des tutos. Mon programme fonctionne merci à vous.

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

Discussions similaires

  1. Problème jeu de la vie de Wolfram
    Par romromp dans le forum Pascal
    Réponses: 14
    Dernier message: 11/03/2007, 19h58
  2. algorithme d'évolution du "jeu de la vie" en caml
    Par nono88 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 13/12/2006, 00h56
  3. Conway's life (jeu de la vie) pour images
    Par O( N ) dans le forum C
    Réponses: 1
    Dernier message: 26/09/2006, 02h13
  4. [Conception] Jeu de la vie
    Par deuscapser dans le forum Général Java
    Réponses: 16
    Dernier message: 09/03/2006, 12h47
  5. [VB] projet à réaliser: Jeu de la vie
    Par mauriiice dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/12/2005, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo