11:06 <discord_afpy> <Andy K (boss dreamer ou pas)> Salut !
13:34 <discord_afpy> <.f.o.p.> Bonjour tout le monde !
13:47 <discord_afpy> <.f.o.p.> je commence à m'intéresser à python et pour m'entrainer j'essaye de code une automatisation pour tuer des mobs dans un jeu. Je suis un peu bloqué en ce moment et viens chercher de l'aide car je n'arrive pas à trouver mon bonheur sur le www ^^
13:47 <discord_afpy> <.f.o.p.>
13:47 <discord_afpy> <.f.o.p.> Je m'explique : c'est un jeu de simulation spatiale ou vous gérer une station avec 6 flottes d'armées, jusque la tout va bien. votre station se trouve dans un système avec beaucoup d'autres éléments au sein de ce même système : station d'autres joueurs, mobs(pirates), ressources collectables, planètes etc.
13:47 <discord_afpy> <.f.o.p.>
13:47 <discord_afpy> <.f.o.p.> L'idée que j'avais en tête était de programmer un petit code pour automatiser une mission hebdomadaire qui demande de tuer un certains nombre de pirates. bah je suis pas déçu du voyage mais je kiffe quand même !
13:47 <discord_afpy> <.f.o.p.>
13:47 <discord_afpy> <.f.o.p.> Donc, j'ai commencer par une reconnaissance d'image pour que le code reconnaisse les pirates. ok, il trouve bien un pirate. j'ai associé ça à un mouvement de souris sur l'image détecté, puis un clique sur le pirate. Ensuite j'ai mis un clique sur la position du bouton attaque, qui apparait une fois que l'on a cliqué sur le pirate. Et la les problèmes commence pour moi et je suis complétement sans solution :
13:47 <discord_afpy> <.f.o.p.>
13:47 <discord_afpy> <.f.o.p.> Une fois qu'on a cliqué sur "attaque", le jeu fait apparaitre nos 6 flottes à l'écran et on choisi laquelle envoyé en cliquant dessus.
13:47 <discord_afpy> <.f.o.p.>
13:47 <discord_afpy> <.f.o.p.> L'idée serait de pouvoir reconnaitre un pirate, cliquer dessus, cliquer sur attaque puis cliquer sur la première flotte et recommencer l'opération en choisi à chaque réitération une flotte différente (Flotte 1, puis Flotte 2 etc.. jusqu'à 6).
13:47 <discord_afpy> <.f.o.p.>
13:47 <discord_afpy> <.f.o.p.> désolé pour le pavé, j'espère que certains auront la force de lire et peut être de m'aider à travers ce premier projet qui peut paraître ridicule mais dont je prend beaucoup de plaisir à apprendre à travers. Peace
13:50 <discord_afpy> <asyd.> Tu commences pas par le plus simple 🙂 Je ne suis pas sur de comprendre où est ton problème, si tu as réussi a faire une premiere capture pour détecter les pirates, pourquoi tu n'arrives pas a refaire le même mécanisme pour les flottes ?
13:52 <discord_afpy> <.f.o.p.> j'aime souffrir. et bah j'y ai pas pensé xD J'ai réussi à aller jusqu'à cliquer sur la première flotte mais je pense que mon vrai problème se situe dans la constitution de la boucle pour recommencer de l'étape 1 et au moment de cliquer sur flotte de passer à la 2, recommencer puis la 3, etc..
13:53 <discord_afpy> <asyd.> comment tu fais ton analyse d'image ?
13:53 <discord_afpy> <.f.o.p.> je peux copier coller le code ?
13:54 <discord_afpy> <.f.o.p.> j'ai analyser l'image du pirate seulement, le clic sur la flotte je l'ai fait avec une position car les postions ne change pas
13:54 <discord_afpy> <asyd.> non utilise plutôt https://wyz.fr/ pour paster le code, et donne le lien
13:55 <discord_afpy> <.f.o.p.> https://wyz.fr/0I-DY
13:56 <discord_afpy> <.f.o.p.> je pourrais aussi fournir des captures d'écran du jeu pour que ce soit plus parlant si jamais ^^
13:56 <discord_afpy> <asyd.> ça c'est pour ta première étape on est d'accord
13:56 <discord_afpy> <.f.o.p.> oui
13:56 <discord_afpy> <.f.o.p.> c'est le tout début du script
13:58 <discord_afpy> <asyd.> pour la flotte je pense qu'il faut que tu regardes du coté de locateAll qui va te renvoyer une liste de points
13:58 <alain_afpy> WARNING !!! YAKAFOKON DETECTED !!!!
13:59 <discord_afpy> <asyd.> et au moins par curiosité oui envoie moi en MP 2/3 images 🙂
14:06 <entwanne> Pourquoi en MP ? ^^
14:08 <asyd> j'ai hésité :)
14:14 <discord_afpy> <.f.o.p.> :3
14:15 <discord_afpy> <.f.o.p.> donc je dois assigne la variable y à sa valeur et ensuite le for x in (100, 150, 200, ...) en fonction du x trouvé sur chaque flotte ?
14:16 <discord_afpy> <asyd.> c'est une solution oui !
14:18 <discord_afpy> <.f.o.p.> et juste le "for x in" permet de boucler sur une nouvelle detection d'image (début du script) ?
14:19 <discord_afpy> <.f.o.p.> je viens de test, le script exécute les clicks sur x à la suite sans revenir au début entre chaque
14:20 <discord_afpy> <.f.o.p.> me manque juste à boucler après chaque clique sur x
14:21 <discord_afpy> <.f.o.p.> https://wyz.fr/7D-T3 je remet le petit script
14:22 <entwanne> Alors le for x itère sur des nombres en l'occurrence, mais chaque nombre provoque un nouveau tour de boucle dans lequel les différentes lignes (notamment pyautogui.click(x, y)) sont exécutées
14:24 <discord_afpy> <.f.o.p.> effectivement, mais l'itération se limite au click. J'aimerais qu'après le premier click sur 299, le script revienne au tout début : recherche d'image, cliquer sur l'image, cliquer sur la position du bouton attaque, cliquer sur le deuxième x
14:24 <discord_afpy> <.f.o.p.> et ainsi de suite juqu'au 6ème x.
14:24 <entwanne> Il faudrait alors embarquer toute cette logique dans la boucle en elle-même
14:25 <discord_afpy> <.f.o.p.> c'est exactement ça que je n'arrive pas à faire
14:25 <entwanne> Tu as essayé de déplacer ton `for x in (...):` plus haut et d'indenter toutes les autres lignes dessous ?
14:26 <discord_afpy> <.f.o.p.> let me try
14:35 <discord_afpy> <.f.o.p.> fonctionne pas ^^ (en imaginant que j'ai bien fait)
14:38 <entwanne> peut-être pas
15:41 <discord_afpy> <Andy K (boss dreamer ou pas)> ton nick est 669 ? wow
15:42 <discord_afpy> <.f.o.p.> yes
15:42 <discord_afpy> <.f.o.p.> mais bon pseudo en chinois ou pas, je me casse les dents quand même
15:43 <discord_afpy> <Andy K (boss dreamer ou pas)> Tant que c'est [996](https://fr.wikipedia.org/wiki/996_(rythme_de_travail)), tout va bien je dirais
15:45 <entwanne> Quelle est la dernière version de ton code, et est-ce que tu as plus d'infos à donner que "ça marche pas" ?
15:46 <discord_afpy> <.f.o.p.> j'ai essayé beaucoup de choses
15:48 <discord_afpy> <vstinner> "996 (rythme de travail)" oh ça fait peur ça 🙁 72 heures de travail par semaine, c'est énorme !
15:49 <discord_afpy> <.f.o.p.> la base fonctionne très bien
15:49 <discord_afpy> <.f.o.p.> https://wyz.fr/4S-9O
15:50 <discord_afpy> <.f.o.p.> mais une fois arrivé à la section #click the fleet
15:50 <discord_afpy> <.f.o.p.> le script tourne en boucle la dessus
15:51 <discord_afpy> <.f.o.p.> et click sans arrêt à la position x du début
15:51 <entwanne> ça c'est presque exactement le même code que le précédent, mais tu n'utilises plus la variable x
15:51 <entwanne> tu ne devais pas déplacer la ligne d'introduction de la boucle plus haut dans le code ?
15:51 <discord_afpy> <.f.o.p.> j'ai essayé de remonter le for in x pour indenter les autres
15:51 <discord_afpy> <.f.o.p.> résultat plus rien ne ce passe
15:52 <discord_afpy> <.f.o.p.> j'ai essayé de faire While true
15:52 <entwanne> rien ne se passe ça n'existe pas vraiment, est-ce que le programme termine ? Avec une exception ? Est-ce qu'il tourne en boucle ?
15:55 <discord_afpy> <.f.o.p.> https://wyz.fr/4I-0N
15:56 <discord_afpy> <.f.o.p.> le script vas jusqu'a afficher les flottes sans cliquer sur le x
15:56 <entwanne> C'est normal que l'appel à click soit en dehors de la boucle ?
15:58 <discord_afpy> <.f.o.p.> remis
15:58 <discord_afpy> <.f.o.p.> le cruseur se déplace bien aux coords mais ne clique pas
15:59 <discord_afpy> <.f.o.p.> https://wyz.fr/3R-V1
16:00 <discord_afpy> <.f.o.p.> faut rajouter une range ?
16:01 <entwanne> Je ne connais pas pyautogui et son fonctionnement mais je vois que généralement tu fais un sleep après le click (est-ce que ça a un intéet pour lui laisser le temps de vraiment cliquer ?) mais que tu ne le fais pas après le click sur attackbutton
16:01 <entwanne> Un range pour faire quoi ?
16:03 <discord_afpy> <.f.o.p.> c'est juste pour pas que ça clique dans tout les sens comme après chaque action il y a un petit délai de chargement d'image / zoom ou dézomm
16:04 <discord_afpy> <.f.o.p.> pour le coup juste pour copier ce qui ce fait avec le click sur l'attaque mais ça ne fonctionne pas
16:04 <entwanne> Qu'est-ce qui te permet de savoir que le dernier appel — et seulement celui-là — ne clique pas comme il faudrait ?
16:05 <entwanne> le `for i in range (1):` que tu utilises pour l'attackbutton est inutile, j'ai pensé que tu avais à un moment un nombre autre que 1 mais que tu avais simplifié ensuite pour débuguer
16:06 <discord_afpy> <.f.o.p.> en l'essayant, toutes les actions se réalise sauf la dernière, le curseur se déplace bien à la position x et y mais ne clique pas puis le script s'arrête comme aucun pirate ne peut être vu sur l'écran des flottes
16:07 <discord_afpy> <.f.o.p.> aaaaaaaaaaaaaaaah
16:07 <entwanne> Est-ce que ce n'est pas justement lié à un problème de temps dont tu parlais ?
16:07 <discord_afpy> <.f.o.p.> sans délai il clique instant avant même que l'image ne se charge donc ça clique pas sur la flotte mais dans le vide
16:07 <entwanne> Le clic sur attackbutton déclenche quelque chose qui met du temps à arriver et n'est pas encore là quand tu fais le dernier clic
16:07 <entwanne> Voilà
16:08 <discord_afpy> <.f.o.p.> https://wyz.fr/9Y-28
16:09 <discord_afpy> <.f.o.p.> fonctionnel mais du coup le script s'execute qu'une fois
16:12 <discord_afpy> <.f.o.p.> il fait bien la reconnaissance d'image pour tout et va cliquer sur les 6 positions x pour les 6 flottes
16:13 <discord_afpy> <.f.o.p.> comme le système est limité en nombre de pirates, il y a un temps de respawn, comment savoir si le script continue de chercher ou pas ?
16:13 <entwanne> Tu peux afficher des messages/logs pour savoir où il en est
16:14 <discord_afpy> <.f.o.p.> le problème c'est que si je reviens sur visual code pour voir, ça foire le script d'image detection
16:14 <discord_afpy> <.f.o.p.> tu me diras
16:14 <discord_afpy> <.f.o.p.> si ça le foire c'est quil tourne
16:16 <discord_afpy> <.f.o.p.> ok, il s'arrête dès qu'il ne trouve plus rien
16:21 <discord_afpy> <.f.o.p.> c'est possible de faire plusieurs reconnaissance d'image à la suite ?
16:23 <entwanne> Oui, si tu mets le tout dans une boucle ça tournera tant que la condition est vraie
16:23 <entwanne> à terme ça pourrait être bien de découper le code en différentes fonctions, c'est plus simple pour s'y retrouver et gérer ce genre d'évolutions
19:08 <discord_afpy> <bronxae> Je sais pas si vous vous souvenez de cette conversation, mais j'ai transmis https://tut-tuuut.github.io/2026/03/27/des-verbes.html et https://biru.sh/fr/blog/non-lia-nest-pas-obligatoire/ à des copains, et ces articles participent à renforcer une bibliographie du CSE contre un PSE qu'on peut résumer en : "virer tous les devs pour les remplacer par lia, on sera + compétitif mdrrr"
19:08 <discord_afpy> <bronxae> Du coup merci à tout le monde, pour avoir pris le temps de les écrire et pour les avoir partagé
19:40 <alain_afpy> Sur Paris – Meetup le 10 août - https://discuss.afpy.org/t/sur-paris-meetup-le-10-aout/3130
19:51 <discord_afpy> <.f.o.p.> Merci beaucoup pour votre aide. J'ai affiné deux trois détails et tout tourne sans accroc. Je pense que je pourrais l'améliorer encore mais je suis déjà très satisfait.
19:51 <discord_afpy> <.f.o.p.> Ça m'a vraiment donné envie d'en faire un peu tout les jours. 👍
21:34 <discord_afpy> <asyd.> bravo a toi, tu n'as pas attaque par le plus facile !