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 :

Petite question pour une optimisation du jeu de la vie (histoire de click)


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Suisse

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Petite question pour une optimisation du jeu de la vie (histoire de click)
    Bonsoir,

    Pour mon premier post sur ce site j'aimerai vous poser une question. Sur Python 3.6.5, j'ai essayé en cours de faire en sorte que si on click sur le canvas, où se trouve notre tableau, la valeur de la "case" (position x,y dans le tableau) change de 0 à 1 (morte à vivante) ou de 1 à 0, mais lorsque je print la valeur de la case, il me ressort toujours 0.

    Voilà la partie du code qui me turlupine. En soit le code n'est pas "faux" il ne 'affiche pas de message d'erreur en le lançant, mais il ne modifie pas la valeur de la case dans le tableau. Si vous avez la moindre question sur ce que je viens d'exposé je serai heureux de vous répondre, je suis pas très clair dans mes explications en général haha

    Merci d'avance pour votre aide,

    Cordialement,

    Un novice du code

    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
     
    def Onclick(event):
        #on obtient les coordonnées du click
        mouse_x.set(event.x)
        mouse_y.set(event.y)
        #on le met dans x et y
        x = mouse_x.get()
        y = mouse_y.get()
        #calcul
        x=floor(x/20)
        y=floor(y/20)
        print("x : ",x," y : ",y)
        print(tiles[x][y])
        if tiles[x][y] == 0:
            tiles[x][y] += 1
        if tiles[x][y] == 1:
            tiles[x][y] -= 1
     
        drawTiles()
    (le floor(x/20) et floor(y/20) donnent la valeur de la "case du tableau", sur un tableau de 41 par 41, il donne des valeurs entre 0 et 40, avec une map de 410 par 410)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 240
    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 240
    Points : 36 696
    Points
    36 696
    Par défaut
    Salut,

    Relisez votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if tiles[x][y] == 0:
            tiles[x][y] += 1
        if tiles[x][y] == 1:
            tiles[x][y] -= 1
    en essayant de vous mettre à la place de l'interpréteur Python i.e. vous essayez d’exécuter ces instructions l'une après l'autre en notant le contenu de tiles[x][y] après chaque instruction.

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Suisse

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci je vais modifier ça pour voir si ça va marcher haha, j'essaye également de faire un espace torique c'est pas mal ce petit jeu

    Mais merci beaucoup ça me dépanne pas mal x)

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Bonjour,

    Pourquoi mettre les valeurs '0' et '1' dans les cellules? S'il n'y a que 2 état (vivant ou mort), le mieux est d'utiliser un booleen.
    Ainsi pour changer la valeur, tu n'as plus qu'à faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tiles[x][y] = not tiles[x][y]
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  5. #5
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Suisse

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Au total j'utilise dans mon programme 4 valeurs pour les cases, mais deux qui sont uniquement utilisées dans le calcul de la prochaine génération

    J'ai changé le deuxième if par un else la boucle marche

    Si vous trouvez que mon code est bizarre c'est normal haha, lorsque je me balade sur ce site j'ai l'impression d'être le seul à coder comme ça

    J'ai interverti le x et le y dans cette fonction (comparé au reste de mon programme, je mettais d'abord x et ensuite y pour une plus grande facilité de lecture en changeant l'ordre des variables à un moment) comme ça je n'ai pas de problème de symétrie diagonale (que j'ai découvert en ne changeant que la boucle if)
    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
    def Onclick(event):
        #on obtient les coordonnées du click
        mouse_x.set(event.x)
        mouse_y.set(event.y)
        #on le met dans x et y
        x = mouse_x.get()
        y = mouse_y.get()
        #calcul
        x=floor(x/10)
        y=floor(y/10)
        print("x : ",x," y : ",y)
        print(tiles[y][x])
        if tiles[y][x] == 0:
            tiles[y][x] += 1
        else:
            tiles[y][x] -= 1
     
        drawTiles()
    Maintenant je vais pouvoir me mettre au boulot et essayer de rendre mon terrain de jeu torique ça va être marrant ça x)

Discussions similaires

  1. Petite question pour une novice.
    Par buzye dans le forum SQLite
    Réponses: 2
    Dernier message: 20/07/2017, 16h13
  2. [Toutes versions] Une petite question pour des intervalles
    Par Invuck dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/01/2016, 14h51
  3. j'ai une petite question pour l'opérateur >>=
    Par PIC16F877A dans le forum Débuter
    Réponses: 2
    Dernier message: 08/03/2010, 07h50
  4. une petite question pour creer un site
    Par lyam_3 dans le forum Débuter
    Réponses: 88
    Dernier message: 27/03/2008, 11h22
  5. Réponses: 16
    Dernier message: 05/08/2006, 12h07

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