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

Programmation multimédia/Jeux Python Discussion :

[Pygame] Quelques questions à propos des "objets visuels" [Python 3.X]


Sujet :

Programmation multimédia/Jeux Python

  1. #21
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    Pourtant, lorsque je demande à ma fonction print(i.note_x), cela fonctionne correctement...
    J'ai tout de même rajouté le paramètre i, mais le problème persiste toujours...

  2. #22
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Ok, peut être j'ai mal interprété le code, ou que dans la partie non copiée, il y a la réponse à ce détail. Peu importe.

    Dans la fonction Scoring :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    del Liste_note[0] #Suppression de la Note que l'on vient de faire
    Cela supprime toujours la note la plus basse, peu importe sa position. C'est pour ça, que vous devez passer la note à la fonction Scoring et faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Liste_node.remove(note)
    Enfin, c'est ce que je pense.

    Essayez de simplifier le code, d'avoir de meilleur nom de variables et aussi, peut être, d'éviter d'utiliser trop les variables globales (en les passant en paramètre au fonction qui en ont besoin).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #23
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    J'essaye de rendre mon code le plus clair possible avec les commentaires, cependant, la majorité des choses du code seront présentées et détaillées à l'oral, je ne peux donc pas mettre énormément de choses :/

    Pour quelques détails rapides :
    (Le Tps_spawn de la classe Note correspond au temps d'apparition de la Note. Par exemple, si Tps_spawn = 1000, on attend que Timer == 1000 pour faire apparaitre la Note)
    Ensuite, la variable globale Check_Note permet d'afficher l'état de la Note plus tard, càd que si Check_Note == 0, alors la dernière Note est un "Miss" (ou un "0 pts"), un Check_Note == 1 est une Note "+50pts", etc...Elle permet l'affichage des scores visuellement, dans une autre boucle que j'ai omis de mettre (mais elle n'influence normalement en rien le problème)
    Et enfin, les variables Nb_Miss, Nb_50 etc...sont juste des "compteurs" pour pouvoir afficher à la fin le nombre de Miss, 50 etc... que l'utilisateur a fait

    En fait, pour les paramètres de fonctions et variables globales, j'utilise les variables globales surtout parce que je dois les réutiliser plus tard dans la boucle d'évènements. Je peux peut-être les transformer en paramètres de fonctions, mais j'avoue que je n'en vois pas vraiment l'utilité


    En remplacant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Liste_node.remove(note)
    Cela me permet bien de supprimer la Note correspondant à la colonne, cependant, un autre problème tout aussi bizarre apparait :
    Supposons que l'on ait 2 Notes qui sont dans la même colonne. Lorsque j'appuie sur la touche du clavier correspondant, ce n'est pas que la 1ere Note de la colonne qui disparait, mais les 2 Notes de la colonne. Cela arrive environ 1 fois sur 10. Je soupçonne plus ou moins un problème sur le temps d'appui sur la touche, mais même après plusieurs tests, je n'en suis pas sur (je vois juste qu'appuyer très rapidement sur la touche diminue les chances de produire ce bug)
    Mais supposons maintenant que l'on ait 3 Notes. Si j'appuie sur la touche du clavier, ce sont la 1ere et la 3e touche qui disparaisse, tandis que la 2e reste
    Je suis désolé de ne pas pouvoir donner plus de détails quant à la nature du problème, j'avoue que cela me surprend...Normalement, la fonction n'est censée supprimer qu'un et un seul élément, je ne vois pas ou, quand, et comment peut-elle supprimer deux éléments, et donc exécuter la fonction Scoring 2 fois, et donc probablement exécuter la fonction Check_Colonne 2 fois, sachant pourtant que je n'ai rien mis pour que le programme comprenne la pression maintenue d'une touche...Est-ce du à la boucle For de la boucle d'évènements ?
    Il n'y a pas eu de réels changements sur le code depuis la dernière fois, mis à la part le Liste_Note.remove

  4. #24
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par Sugiuro Voir le message
    J'essaye de rendre mon code le plus clair possible avec les commentaires, cependant, la majorité des choses du code seront présentées et détaillées à l'oral, je ne peux donc pas mettre énormément de choses :/
    Un code clair, ce n'est pas que des commentaires. Surtout que les commentaires doivent expliquer des choses de manière générales et raconter exactement le code. Par exemple, le commentaire explique la pensée du programmeur (pourquoi il a écrit la ligne de cette façon), ou encore, il explique l'algorithme implémenté.
    Le code est clair par les points suivants :
    • code expliquant la réflexion, la façon de concevoir (oui, c'est abstrait comme explication) ;
    • le nom des variable clair/précis/concis (on doit, juste en lisant le nom de la variable savoir exactement ce qu'elle fait) ;
    • pareil pour le nom des fonctions ;
    • des algorithmes simples. Des fonctions simples et logique. La fonction ne doit pas faire le café, mais simplement une tache unique et précise (genre, moudre le café) ;
    • surement d'autres détails, mais là, je n'ai pas en tête.


    Pour quelques détails rapides :
    (Le Tps_spawn de la classe Note correspond au temps d'apparition de la Note. Par exemple, si Tps_spawn = 1000, on attend que Timer == 1000 pour faire apparaitre la Note)
    Nommage des variables : vous mélangez le mot anglais et une abréviation française. De plus vous utilisez une notation inhabituelle/pas "belle" (subjectif encore une fois). On fait normalement du CamelCase : le nom de variable commence par une minuscule et chaque mot suivant dans le nom aura sa première lettre en majuscule.
    Donc votre variable je l'appèlerai : spawnTime. La première lettre une minuscule me dit direct que c'est une variable (dans le cas contraire, cela aurait été une classe ), et on voit, que c'est le temps à laquelle elle apparait.


    Ensuite, la variable globale Check_Note permet d'afficher l'état de la Note plus tard, càd que si Check_Note == 0, alors la dernière Note est un "Miss" (ou un "0 pts"), un Check_Note == 1 est une Note "+50pts", etc...Elle permet l'affichage des scores visuellement, dans une autre boucle que j'ai omis de mettre (mais elle n'influence normalement en rien le problème)
    Check_Note semble être le nom d'une fonction. Une fonction, c'est une action, donc une fonction, c'est un verbe. Une variable c'est un nom. Vous voyez, Check_Note (que j'appèlerai checkNote()), ça sent la fonction, mais pas chez vous
    De plus, il me semble, d'après l'explication, que en fait, cela contient un état (state), donc j'appèlerai ça : noteState.

    Et enfin, les variables Nb_Miss, Nb_50 etc...sont juste des "compteurs" pour pouvoir afficher à la fin le nombre de Miss, 50 etc... que l'utilisateur a fait
    Ok (juste nbMiss, nbMedium, nbGood, nbPerfect (par exemple)).

    En fait, pour les paramètres de fonctions et variables globales, j'utilise les variables globales surtout parce que je dois les réutiliser plus tard dans la boucle d'évènements. Je peux peut-être les transformer en paramètres de fonctions, mais j'avoue que je n'en vois pas vraiment l'utilité
    Pour l'instant, les variables globales ça me va. En programmation, généralement, on évite (et il y a mille raisons pour ça), mais là, faisons au plus simple.


    En remplacant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Liste_node.remove(note)
    Cela me permet bien de supprimer la Note correspondant à la colonne, cependant, un autre problème tout aussi bizarre apparait :
    Supposons que l'on ait 2 Notes qui sont dans la même colonne. Lorsque j'appuie sur la touche du clavier correspondant, ce n'est pas que la 1ere Note de la colonne qui disparait, mais les 2 Notes de la colonne. Cela arrive environ 1 fois sur 10. Je soupçonne plus ou moins un problème sur le temps d'appui sur la touche, mais même après plusieurs tests, je n'en suis pas sur (je vois juste qu'appuyer très rapidement sur la touche diminue les chances de produire ce bug)
    Mais supposons maintenant que l'on ait 3 Notes. Si j'appuie sur la touche du clavier, ce sont la 1ere et la 3e touche qui disparaisse, tandis que la 2e reste
    Je suis désolé de ne pas pouvoir donner plus de détails quant à la nature du problème, j'avoue que cela me surprend...Normalement, la fonction n'est censée supprimer qu'un et un seul élément, je ne vois pas ou, quand, et comment peut-elle supprimer deux éléments, et donc exécuter la fonction Scoring 2 fois, et donc probablement exécuter la fonction Check_Colonne 2 fois, sachant pourtant que je n'ai rien mis pour que le programme comprenne la pression maintenue d'une touche...Est-ce du à la boucle For de la boucle d'évènements ?
    Il n'y a pas eu de réels changements sur le code depuis la dernière fois, mis à la part le Liste_Note.remove
    Il est possible que cela supprime deux notes, car le jeu, il est dans une boucle. Ça veut dire que le programme va exécuter deux fois la même fonction et cela, plus rapidement que le joueur ait le temps de relacher la touche. Donc, pouf, deux notes en moins.
    Oui, votre for est une bonne piste et peut être problématique. Encore une fois, les print peuvent aider à repérer ce qui se passe en marquant sur le terminal des points dans lequel le programme passe. Il faut aussi penser à utiliser un débogueur par la suite, c'est encore plus puissant que la technique du for.


    Ça serait cool de modifier votre code pour tenir compte de mes remarques et après, on voit comment régler les derniers soucis
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #25
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    Je prends note pour les nommages de variables
    Je me suis renseigné un peu sur le camelCase, mais il est aussi possible de faire du CamelCase avec une majuscule au début ? D'ailleurs, quels genres de "conventions" existe-t-il par rapport aux nommages ? Est-ce spécifique au Python ou général à tous les langages ?

    Pour le soucis des Notes qui s'en allaient par deux, je n'ai pas trouvé la solution, supposant que c'était plus un problème de compréhension par l'ordinateur, ou quelque chose comme ça. Du coup, j'ai "dévié" le problème en rajoutant, lors de la création des Notes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in range(10): # Création de dix éléments Note
        Liste_note.append(Note(pygame.image.load('note.jpg').convert(), random.randrange(2, 345, 57), 30, (2000 + i*1000)))
        while Liste_note[i].note_x == Liste_note[i - 1].note_x: #Pour éviter d'avoir 2 notes successives dans la même colonne
            Liste_note[i].note_x = random.randrange(2, 344, 57)
    Ainsi, deux notes successives n'auront jamais la même abscisse, donc, n'apparaitront jamais dans la même colonne
    (Je vais par ailleurs changer les valeurs dans le random.randrange, pas d'inquiétudes ^^)

  6. #26
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par Sugiuro Voir le message
    Je me suis renseigné un peu sur le camelCase, mais il est aussi possible de faire du CamelCase avec une majuscule au début ? D'ailleurs, quels genres de "conventions" existe-t-il par rapport aux nommages ? Est-ce spécifique au Python ou général à tous les langages ?
    Bonjour,
    Les conventions d'écriture en Python sont données par la PEP 8.

    Clodion

  7. #27
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Comme je l'ai dit (ou je l'ai amené sans le dire), la première lettre, si elle est majuscule, cela indiquera que c'est le nom d'une structure/classe (et non d'une instance de cette structure/classe). Si c'est une minuscule, c'est une variable.
    Ainsi, très rapidement, on repère si c'est un type, ou une variable.

    Ces conventions existent dans tous les langages. Elles ont certaines variations, mais très faibles.

    Pour la correction du bogue ... hum ... j'aurais préféré comprendre pourquoi avant cela ne fonctionnait pas. De plus :
    c'était plus un problème de compréhension par l'ordinateur,
    Absolument pas !
    L'ordinateur est une machine prédictible qui ne fait que lire ce que vous avez écrit. Le soucis, c'est plus : vous n'avez pas réussi à bien exprimer ce que vous vouliez faire faire à l'ordinateur.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #28
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Clodion Voir le message
    Bonjour,
    Les conventions d'écriture en Python sont données par la PEP 8.

    Clodion


    Bonjour Clodion,
    Merci du lien, j'essaierai de modifier mon code en amont pour correspondre au maximum aux conventions

    Pour la correction du bogue ... hum ... j'aurais préféré comprendre pourquoi avant cela ne fonctionnait pas. De plus :
    "c'était plus un problème de compréhension par l'ordinateur,"
    Absolument pas !
    L'ordinateur est une machine prédictible qui ne fait que lire ce que vous avez écrit. Le soucis, c'est plus : vous n'avez pas réussi à bien exprimer ce que vous vouliez faire faire à l'ordinateur.

    C'est vrai que c'est logiquement mon programme qui bug et non pas l'ordinateur qui le comprend mal, cependant, dans ce cas, je pense que l'ordinateur applique deux fois ma fonction, étant donné qu'il n'y a que ma fonction qui supprime une et une seule fois la Note. Je pense donc que ma boucle/mes conditions ont soit été mal crées, soit sont prises en compte deux fois. C'est assez difficile à expliquer :/
    En fait, même en retracant le code avec deux Notes exemples, je ne vois pas dans quelle mesure deux Notes qui ont la même abscisse (donc, le même x, donc, sont dans la même colonne) peuvent disparaitre en même temps. La seule option possible selon moi serait dans la fonction qui vérifie la colonne de la Note, cependant, elle n'est censée vérifier QUE la Note d'indice 0
    Voici la fonction en question (enfin, un extrait) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        if event.type == KEYDOWN:
            if event.key == K_s and Liste_note[0].note_x == 5:
                Scoring(pts)
            if event.key == K_d and Liste_note[0].note_x == 55:
                Scoring(pts)
     
    [...]

  9. #29
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    C'est toujours à dire le pourquoi, lorsque l'on ne voit pas le contenu de telle une telle fonction (notamment Scoring). Je vais faire l'hypothèse que Scoring(), à la fin de la fonction, fait un top() sur Liste_note.

    Déroulant ce que fait le programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if event.type == KEYDOWN:
    Ok, l'utilisateur appui sur une touche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if event.key == K_s and Liste_note[0].note_x == 5:
    Ok, cela rentre dans cette condition.

    Cela fait le score et notamment le top() sur Liste_note

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if event.key == K_d and Liste_note[0].note_x == 55:
    Et là, la note testée, ce n'est pas la même que celle d'avant. En effet, à cause du tope, la note se trouvant en Liste_note[0] n'est plus la même. Donc la condition peux se retrouver encore une fois juste.

    Enfin, là, je fais beaucoup d'hypothèse
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  10. #30
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    Oups, c'est vrai que j'ai oublié de donner la fonction Scoring() :c

    Dans les grandes lignes, ça modifie/crée quelques variables utiles pour la gestion du score, et tout à la fin, ça supprime la Note d'indice 0 avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    del Liste_note[0] #Suppression de la Note que l'on vient de faire

    Peut-être que les Notes vérifiées ne sont pas les mêmes, mais dans tous les cas, cela devrait ne supprimer qu'une seule Note, or, rien, à part cette fonction, ne supprime des Notes. Or, cette fonction ne supprime bien qu'une Note. Donc, si deux Notes sont supprimées, cela veut dire que la fonction a été appelée deux fois. Donc, soit dans la fonction Check_Colonne (celle donnée dans mon post précédent), les conditions ne sont pas respectées et appelle donc deux fois la fonction Scoring(), soit c'est dans ma boucle d'évènements, lorsque j'appelle ma fonction Check_Colonne
    Voici le passage ou j'appelle Check_Colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                                if Liste_note[0].note_y > (696 - 15) and Liste_note[0].note_y < (696 + 15) and event.type == KEYDOWN: #Si la note est éloignée de la barre
                                    if Liste_note[0].note_y > (696 - 10) and Liste_note[0].note_y < (696 + 10) and event.type == KEYDOWN: #Si la note se rapproche de la barre
                                        if Liste_note[0].note_y > (696 - 5) and Liste_note[0].note_y < (696 + 5) and event.type == KEYDOWN:#Si la note est +- sur la barre
                                            Check_Colonne(300)
                                        else:
                                            Check_Colonne(100)
                                    else:
                                        Check_Colonne(50)
                                else: #Si la note est beaucoup trop éloignée de la barre (= si l'user rate la note)
                                    Check_Colonne(0)
                                if Liste_note[0].note_y > (696 + 15): #Si la note passe en dessous, la note est ratée
                                    Scoring(0)

  11. #31
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Relisez ce que j'ai décrit comme comportement (car vous tombez dans le cas de mon hypothèse) et vous verrez que oui, Scoring() peut être appelé deux fois.
    Après, il vous suffit de rajouter des print, genre à chaque début de fonction, pour vous en convaincre.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  12. #32
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    En vérifiant avec les print(), c'est bien la fonction Check_Colonne() qui est appelée plusieurs fois. En réalité, elle est même appelée tout le temps, ce sont donc mes conditions qui ne sont pas respectées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                                if Liste_note[0].note_y > (696 - 15) and Liste_note[0].note_y < (696 + 15) and event.type == KEYDOWN: #Si la note est éloignée de la barre
                                    if Liste_note[0].note_y > (696 - 10) and Liste_note[0].note_y < (696 + 10) and event.type == KEYDOWN: #Si la note se rapproche de la barre
                                        if Liste_note[0].note_y > (696 - 5) and Liste_note[0].note_y < (696 + 5) and event.type == KEYDOWN:#Si la note est +- sur la barre
                                            Check_Colonne(300)
                                        else:
                                            Check_Colonne(100)
                                    else:
                                        Check_Colonne(50)
                                else: #Si la note est beaucoup trop éloignée de la barre (= si l'user rate la note)
                                    Check_Colonne(0)

    Ce que je souhaitais faire avec cette condition, c'était vérifier l'ordonnée de la Note ET vérifier si une touche du clavier a été pressée. En vérifiant, la 2e condition est toujours vraie

  13. #33
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Si vous avez des doutes, décomposez vos tests (pour en avoir qu'un par if) et rajouter des print, qui affiche aussi les valeurs testées
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  14. #34
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    Au final, mes conditions fonctionnaient bien correctement...Mais je pense avoir identifié le problème : certes, mes conditions étaient bonnes, mais les Else, eux, fonctionnent justement en opposition aux If. Ainsi, si on une condition l'opposé (le Else) s'applique lorsque aucune touche n'est pressée, càd tout le temps. Ainsi, il suffisait juste d'ajouter des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If event.type == KEYDOWN
    à la fin de chaque Else

  15. #35
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Ou, plus logiquement (en reprenant le code du dessus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if event.type == KEYDOWN:
    	if Liste_note[0].note_y > (696 - 15) and Liste_note[0].note_y < (696 + 15): #Si la note est éloignée de la barre
    		if Liste_note[0].note_y > (696 - 10) and Liste_note[0].note_y < (696 + 10): #Si la note se rapproche de la barre
    		    if Liste_note[0].note_y > (696 - 5) and Liste_note[0].note_y < (696 + 5):#Si la note est +- sur la barre
    		        Check_Colonne(300)
    		    else:
    		        Check_Colonne(100)
    		else:
    		    Check_Colonne(50)
    	else: #Si la note est beaucoup trop éloignée de la barre (= si l'user rate la note)
    		Check_Colonne(0)
    Ce qui est genre, mille fois plus clair/propre/logique
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  16. #36
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    Désolé de ne pas avoir répondu plus tôt

    Oui, c'est en effet bien meilleur ^^


    Le projet touche quasiment à sa vie, il reste quelques éléments à modifier/ajuster/améliorer, sinon, tout est fini ! Un grand merci pour votre aide, qui m'a vraiment bien aidée et bien guidée tout au long du projet !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/06/2015, 11h17
  2. Quelques question à propos des technologies RAID
    Par DranDane dans le forum Composants
    Réponses: 6
    Dernier message: 12/08/2008, 12h40
  3. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  4. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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