PIERRE FEUILLE CISEAUX AVEC TUX DROID

aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 - 17 janv. 2009 à 19:38
KimbleMandel Messages postés 8 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 27 janvier 2018 - 2 févr. 2009 à 00:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48914-pierre-feuille-ciseaux-avec-tux-droid

KimbleMandel Messages postés 8 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 27 janvier 2018
2 févr. 2009 à 00:05
Bonjour,
Franchement je ne sais pas pour la fonction. J'ai fais des sorties vers un fichier texte de "gc.get_objects()" en appuyant plusieurs fois sur les boutons. ça à généré un fichier d'environ 36 Mo... (merci grep)
Le résultat est le même si je clique une seule fois sur un bouton.
Voilà:
"""
'func': <function fonctionTest at 0xb69a32cc>}
'func': <function fonctionTest at 0xb69a3304>}
'func': <function fonctionTest at 0xb69a333c>}
<function fonctionTest at 0xb69a32cc>
<function fonctionTest at 0xb69a3304>
<function fonctionTest at 0xb69a333c>
'_tclCommands': ['3064924116LfonctionTest']
'_tclCommands': ['3064924076LfonctionTest']
'_tclCommands': ['3064923916LfonctionTest']
['3064924116LfonctionTest']
['3064924076LfonctionTest']
['3064923916LfonctionTest']
'fonctionTest': 'fonctionTest'
'fonctionTest'
'fonctionTest'
'fonctionTest')
<code object fonctionTest at 0xb7c00530
"""
Qu'importe ce que je fasse, je trouve ça.
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
1 févr. 2009 à 11:56
Bonjour,

Quand je dis que tu as commi une erreur, j'ai bien précisé que c'est de mon point de vu car certe, ton programme fonctionne. Pourquoi dis je que c'est une erreur, car la "sous fonction" que tu as créé ne peu pas être appeler (ba oui, pour l'exécuter il faut que tu la créé grace à la fonction "principale"). Plus garve, à chaque fois que tu appel la fonction "buttonAction" tu créé la fonction "f", mais elle ne se détruit pas !!! En fait des que tu appuis sur un bouton tu créé une fonction f qui est utilisé une fois mais qui n'est pas détruite et qui prend de la place dans la mémoire vive ! lambda créé une fonction l'exécute puis la détruit ! La diférence est là.

Pour l'inetrface, ca fait 3 ans que je ne fait plus de Tk et il ma falut 2 min 27s pour ajouter les résultats dans la fenêtre tu pourrais essayer de faire cette petite modification
KimbleMandel Messages postés 8 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 27 janvier 2018
19 janv. 2009 à 17:20
Bonjour,

Il est clair que ce code ne vaut pas grand chose.

Pour ta première réflexion, niveau IHM je suis bien d'accord. Il faut dire que je n'aime pas trop m'appliquer pour les interfaces (raison pour laquelle je supporte Tkinter) et j'ai toujours un shell d'ouvert. Donc je n'avais pas remarqué que ça peut être embêtant. Finalement, c'est bête.

Niveau algorithmique je ne comprends pas réellement en fait. En pas moins de 5 ans d'algo on ne m'a pas encore dit cela.
Puis ce n'est pas une erreur. Le fait de ne pas utiliser de fonction lambda ce coup ci est un choix. Une erreur est plutôt un ’oubli’ ou à la limite une décision inappropriée qui mènerai à l'introduction d'un ou plusieurs défauts. Je fais assez rarement des erreurs volontaires en fait.
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
17 janv. 2009 à 19:38
Bonjour,

J'ai testé ton code, et je souhaite te faire par de mes constatations (j'ai supprimer toutes les lignes de TUX DROID car je ne l'ai pas je ne sais même pas à quoi il peut bien servir :p):

- Tu as créé une interface graphique avec Tkinter, mais pourquoi afficher les résultats dans la console ? En effet, pourquoi créé une interface graphique si par la suite tu ne t'en sers pas. Encore plus paradoxal : le score s'affiche dans la fenêtre alors que le choix du pc s'inscrit dans la console !!! Il suffit de rajouter un Label pour afficher le choix du pc et supprimer les print.

- Plus grave, j'ai pu observé une fonction incluse dans une fonction !!! C'est une horreur, aussi bien d'un point de vu algorithmique (que je ne partage pas), que d'un point de vu pratique ou "esthétique" (que je défend) !!! Pour moi, c'est comme une erreur de programmation, c'est un bricolage mais pas une réel instruction !
Je ne te note pas tous de suite pour te laisser le temps de te corriger, un petit indice pour ton problème de fonction : l'instruction lambda et Google sont tes amis !