Reconnaissance !

Signaler
Messages postés
5
Date d'inscription
mardi 4 avril 2006
Statut
Membre
Dernière intervention
20 janvier 2008
-
 Utilisateur anonyme -
Bonjour !
Tout d'abord c'est mon premier message sur un forum, et je suis de niveau debutant en C.

Je suis actuellement en train de creer un bot ! et je recherche une fonction qui premetterait de "reconnaitre ce qu'il y a à l'ecran...."
Je m'explique... j'ai sur l'ecran un rat qui se deplace et j'aimerai que mon programme puisse interagir en fonction de son deplacement ! Ce rat est en fait composé de 8 images. Ce qui donne une image par direction vers laquel il se dirige.

Voila le probleme c'est que je sais pas du tout comment faire ca.... Je pense que mon programme dois prendre un screenshot (bmp ?) puis le convertir en
binnaire pour pouvoir ensuite comparrer avec le code binnaire d'une de mes 8 images que j'aurai converti auparavant... Es ce que c'est comme cela que je dois m'y prendre ? Ca me semble bien compliqué et je pense qu'il faut un ordi qui puisse suivre non ? en plus en faisant comme ca je vois pas comment trouver la position... Quelqu'un pourrait il me dire si c'est la bonne demarche ou si il y a plus simple ?

10 réponses

Messages postés
115
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
19 décembre 2008
1
Salut !
Je ne vois pas exactement ce que tu veux faire, en tout cas je peux te dire une chose : laisse tomber ta solution !
Ton rat qui se déplace, c'est un programme indépendant du tien ? ce n'est pas toi qui l'a fait ? déjà faudrait savoir ca. Ensuite, qu'entend-tu par intéragir, sois plus précis, si je savais exactement ce que tu voulais faire, pe-e pourrais-je t'aider !
Sinon pour savoir dans quelle direction va ton rat, il y a plus simple, beaucoup plus simple ! Ton rat c'est en faite une fenetre dans laquelle on affiche une image, et dont on redessine les contours. Il te suffit de trouver le titre de la fênetre (tu peux utiliser Spy++, si tu as VisualStudio), pour ensuite trouver son handle (FindWindow) et trouver sa position (GetWindowRect), ensuite tu compare avec la position précédente, tu as le sens de déplacement !

voilou.
(PS:je pars en vac cette nuit (dimanche) alors je ne pourrais peut-être pas te répondre ! mais quelqu'un s'en chargera maintenant qu'il y a une piste !)

-{ Saifer }-
<hr size="2" width="100%" />http://sypher.fr.nf
Messages postés
115
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
19 décembre 2008
1
Je viens de penser à un truc, si le nom de ta fenetre change ou si tu ne possède pas Spy++, il y a une solution, plus "propre" qui marcherais à chaque fois, il suffi de connaitre le nom de l'executable, ensuite :
-tu recherche dans la liste de processus lancé l'ID du processus lancé par ton executable, (utilise CreateToolhelp32Snapshot, Process32First), tu n'as qu'a comparer le nom du processus courant avec le tien
-ensuite, une fois que tu as obtenu l'ID du processus (le rat qui se balade!) tu utilises EnumWindows pour énumérer toutes les fenêtres et comparer l'ID de la fenetre courante avec l'ID que tu as trouver avant. (utilise GetWindowThreadProcessId)
-une fois que tu as trouvé le même ID le handle de la fenêtre courante est celui que tu cherches !
-ensuite tu fasi comme précédemment, avec GetWindowRect pour choper la position de la fenêtre.

Je t'ai mis les noms des fonctions à utiliser, une simple recherche sur le forum ou dans les sources, et tu trouveras plein d'exemples. A toi de combiner le tout.

-{ Saifer }-
<hr size="2" width="100%" />http://sypher.fr.nf
Messages postés
5
Date d'inscription
mardi 4 avril 2006
Statut
Membre
Dernière intervention
20 janvier 2008

Ok super !
En fait il sagit d'un jeu en flash que m'a envoyé mon frere... Un petit jeu idiot ou il faut cliquer sur des rats pour les tuer...Il m'a mis au defi de faire mieu que lui et comme j'ai pas la patience comme lui de jouer des heures... je me suis dit on va faire un ptit bot  histoire de lui montrer qui es le plus fort Je sais que c'est idiot mais je suis en vacances la alors fo bien trouver une occupation. Bon en fait j'ai pas tt compris mais c'est pas grave je vais essayer de me debrouiller avec ca et je te remercie !!!
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Ben si tu veux impressionner ton frère, fait un programme qui modifira
les scores. Sinon, plus sérieusement, de ce point de vue, c'est presque
mission impossible. Bon alors je vais essayer de comprendre. Corrige
moi si je me trompe. Tu as un jeu flash. Ce jeu est une fenêtre dans
laquel se promène des rats. Il faut cliquer dessus pour les tuers. Bon
déjà là ça s'annoce problematique. Il faudrait savoir comment sont les
rats. Si l'arrière plan est completement différent de la couleur des
rats, tu pourrait faire en effet un printscreen de la fenêtre de
l'application (UNIQUEMENT de l'application) que tu mettera dans un
buffer, repérer tout ce qu'y peut être blanc et de simuler un clic de
souris à l'endroit approprié. Voilà. Si tu veux comprendre comment
fonctionne l'affichage sous Windows, je te suggère de regarder les
sources sur ce site:


Exelente source. Fait par un professionnel. Parfait.
http://www.cppfrance.com/codes/IMPRIMEUR-IMAGES-BMP-API_33749.aspx


Celle-ci est pour comprendre comment récupérer et traiter le buffer image
http://www.cppfrance.com/codes/GET-SETDIBITS_38788.aspx


Si tu connais déjà MSDN, parfait. Tu en aura besoin. Sinon:
http://msdn.microsoft.com/library/

Tu y trouvera toute l'info nécessaire sur les fonctions de l'API win32


En passent, si tu n'a pas la patience de jouer des heures comme ton
frère, tu n'aura probablement pas la patience de faire ce programme ;)
car ça va probablement être long.
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

Ou alors un petit log qui cliquerai n'importe ou (ou a des endroits precis de l'ecran) avec un timer rapide ,je crois que c'est mieux et  + simple.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
L'art de se simplifier la vie. Pas bête. Simuler séquentiellement un clique de souris sur toute la surface de l'écran. Efficasse. Tien, cette source pourrait répondre à une grande partie de tes questions:
http://www.cppfrance.com/codes/SIMULER-SOURIS_19154.aspx

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
Messages postés
5
Date d'inscription
mardi 4 avril 2006
Statut
Membre
Dernière intervention
20 janvier 2008

Oui c'est pas idiot ! Mais j'ai deja essayé ca... avec la meme source d'ailleur le probleme c'est que si je clique à coté de ce rat ca me donne des points en moins...
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

Ton rat est de quelle couleur? gris?

dans ce cas met un font d'ecran vert, tu enregistres l'image du bureau .
une boucle qui lit les couleurs du fichier image, quand il tombe sur un pixel gris (genre r=255 g=255 b=0) il clique sur la position de l'ecran.
Messages postés
5
Date d'inscription
mardi 4 avril 2006
Statut
Membre
Dernière intervention
20 janvier 2008

Ok ca revien à l'idée precedante...Je pense que c'est la bonne solution, j'essai de me lancer dans cette direction... Merci !!!

Il y a aussi un logiciel qui permet de retrouvé l'adresse memoire ou est stoqué une valeur et de modifier cette valeur
ce logiciel s'appelle: RAM Cheat tu pouras modifier ton score avec :)

MaLaDeDeDe 97one