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

C Discussion :

Analyse d'une donnée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2015
    Messages : 7
    Par défaut Analyse d'une donnée
    Bonjour à Tous !

    Etant nouveau dans le monde de la programmation mais néanmoins motivés a progresser, je souhaite à partir du moment ou j'aurais les connaissances requises créer un programme qui serait capable d'analyser une donnée a l'écran (un nombre, une phrase ) pour ensuite effectuer des actions en fonctions de cette dernière.
    Enfaite, il faudrait que le programme puisse "voir" la donnée affiché sur l'écran, (la donnée ne serait en aucun cas stocker quelque part) pour ensuite prendre des décisions en fonction de la valeur de la donnée(if.....else).

    Par exemple : le programme" voit" afficher 35° sur l'écran alors il ordonne à la climatisation de baisser la température? ou alors la température étant à 10° le programme ordonne au chauffage d'augmenter cette dernière.

    PS : Mon but n'est pas de créer un programme domotique c'est juste un exemple !
    De plus, j'aimerais que m'on programme soit capable devant une liste de phrase écrite de la même couleur, avec la même police, de reconnaitre une d'entre elle choisit au préalable; par exemple : le programme ce retrouve devant une liste comme la suivante :
    -drapeau rouge
    -drapeau blanc
    -drapeau vert
    -drapeau jaune

    je lui demande de cliquer sur "drapeau rouge" , cependant lors de chaque "tirage" l'ordre des phrases change. existe-t-il une manière d'analyser les phrases en "repérant" le mot "rouge" par exemple ?

    J'ai pris connaissance qu'il était possible de reconnaitre des couleurs en analysant des pixels avec autoit, mais je ne sais pas si il existe une fonction en autoit(ou autre langage) capable de réaliser une analyse de donnée d'un chiffre ou d'une phrase entière sans l'avoir stocké.
    Ayant acquis les bases du langage C je me demande si il serait judicieux de plutôt passer sur de l'autoit pour réaliser ce "projet".
    C'est donc âpres avoir fouiller Google que je m'adresse à vous dans le but de trouver de l'aide, Merci d'avance !

    Cordialement,

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Bonjour et bienvenue,

    Ce que tu cherches à faire est possible mais cela dépend beaucoup du contexte et, selon les cas, l'exercice peut être trivial comme extrêmement difficile : reconnaître une plaque d'immatriculation sur une photographie, par exemple, a nécessité un peu de recherche en traitement de l'image et en reconnaissance de caractères (OCR). Il a également fallu que les machines deviennent suffisamment puissantes pour le faire même si les ressources nécessaires n'étaient pas mirobolantes…

    L'ennui, c'est qu'il n'y a rien de standard en C pour faire cela, car cela dépend essentiellement du framework dans lequel tu travailles. Concrètement :

    — soit tu travailles en « mode texte », c'est-à-dire dans un mode directement géré par la carte vidéo, et dans lequel ton écran est divisé en un nombre fixe de colonnes et de lignes (par exemple 80×25), comme par exemple ici ou ici. Dans ce cas, le rendu des caractères est directement pris en charge par ladite carte. Chaque « case » à l'écran a les même dimensions que toutes ses voisines et contient exactement un caractère. Le code ASCII du caractère est déposé dans un octet de la mémoire vidéo et c'est la carte qui se sert de ce code comme index au sein d'un bitmap pour effectuer son rendu à chaque balayage. Lire le texte à l'écran est alors trivial : il suffit presque de lire directement la mémoire vidéo comme s'il s'agissait d'une zone de données. Maintenant, lire cette mémoire vidéo était très facile sur les 8 bits et du temps du DOS. Aujourd'hui, il faudra passer par les interfaces dédiées de ton système d'exploitation et ce sont elles qu'il faut aller étudier. Tu peux jeter un œil du côté du framebuffer sous Linux.

    — soit tu travailles en mode graphique mais à chasse fixe : il est encore possible de comparer l'état de l'écran au bitmap fixe qui sert de générateur de caractères. Autant que je sache, ça ne se faisait que sous BASIC car le langage définissait une fonction SCREEN(x,y) qui servait à faire ce que tu veux faire. Sauf à utiliser de très vieux environnements dans des émulateurs, tu ne devrais plus rencontrer ce cas de figure ;

    — soit tu travailles en mode graphique, ce qui est le cas le plus courant aujourd'hui : dans ce cas, il n'y a rien de facile car les caractères que tu lis ont non seulement une chasse variable, mais sont « dessinés » à l'écran par le gestionnaire de l'interface graphique, exactement comme tu le ferais depuis un logiciel de dessin en bitmap. Il est même probable que le système en question fasse de l'anti-aliasing en comblant le crénelage des glyphes avec des dégradés de gris pour adoucir leur aspect, ce qui rend leur détection encore plus difficile ;

    — soit encore, tu travailles au sein d'un terminal virtuel style X-Term sous UNIX ou d'une boîte DOS en ligne de commande sous Windows. Dans ce cas, il s'agit d'un mode texte « émulé » censé être présenté sur une machine distante de celle où fonctionne ton application. Il est parfois possible de demander expressément au terminal en question de provoquer un dump de son écran entier à des fins d'impression, mais rien n'est garanti.

    Pourtant, quand tu utilises un navigateur web, le bloc-notes ou un traitement de texte, tu restes capable de sélectionner une partie du texte et d'en faire un copier-coller autre part : c'est dû au fait que ces logiciels conservent les chaînes de caractères en mémoire et construisent des objets de toutes pièces pour en faire le rendu. Il est alors possible de demander au gestionnaire graphique de faire l'équivalent d'une sélection à la souris pour récupérer ces infos. Sinon, il faut essayer de dialoguer directement avec le logiciel concerné.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2015
    Messages : 7
    Par défaut
    Merci de ta réponse,

    Avec toutes ces "solutions" je ne sais pas par ou commencer.
    Tout d'abord pourraient tu me conseiller sur le langage à utiliser pour réaliser ce programme (plus adapté) sachant que j'ai les bases du c, tu parles aussi du "Framework" mais je ne pense pas en avoir utilisé jusqu’à présent donc je ne sais pas lequel prendre.

    Voila donc j'aimerais que tu me dirige vers la bonne direction (langage à utilisé, Framework).
    Merci de ton aide.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Comme je te le dis, l'approche à suivre va dépendre énormément du contexte et surtout de ton objectif final.

    Présenté comme cela, il semblerait que tu cherches à écrire un cheat bot pour les jeux vidéos en ligne. Bien que légal, c'est très mal vu par les éditeurs et par les joueurs, qui risquent de te bannir. Si en revanche, tu veux réellement analyser des captures d'écran, le mieux est de provoquer la capture d'écran (en demandant au système), puis de lancer un logiciel OCR existant en le paramétrant correctement. Les résultats peuvent être longs mais ils seront plus efficaces.

    Dis-nous déjà avec quel système d'exploitation tu travailles : les appels sont très différents si tu travailles sous Windows, sous MacOS, ou sous un Unix quelconque avec X-Window.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2015
    Messages : 7
    Par défaut
    En effet, mon but final serait d'écrire un cheat bot lié à un jeux vidéo, cependant ce n'est pas mon unique objectif, je prend seulement ca comme un moteur de progression.

    En parlant de jeux, je me demandais si la donnée (par ex : un chiffre) ne serait pas stocké quelque part et aurait on moyen de l'utiliser ?

    PS : je suis sur Windows 8.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par magorik Voir le message
    En effet, mon but final serait d'écrire un cheat bot lié à un jeux vidéo, cependant ce n'est pas mon unique objectif, je prend seulement ca comme un moteur de progression.
    Ça pourrait être intéressant dans le principe mais c'est très difficile à réaliser, principalement parce que les jeux concernés ne sont généralement pas conçus pour être exploités de la sorte.

    En parlant de jeux, je me demandais si la donnée (par ex : un chiffre) ne serait pas stocké quelque part et aurait on moyen de l'utiliser ?
    Si, et effectivement, c'est la première voie qu'il faut explorer.

    Malheureusement, ça va aussi beaucoup dépendre du type de jeu vidéo que tu veux prendre en main : si c'est un jeu web, soit c'est du HTML5 et, dans ce cas, c'est presque facile : il faut écrire un programme en Javascript à l'écoute des événements sur le DOM de la page en cours. Sinon, dans presque tous les cas, il faudra utiliser les facilités de déboguage quand elles existent. Si c'est en Flash, il faudra écrire ton programme en ActionScript et monitorer l'exécution du logiciel en question.

    Si c'est une application lourde comme un jeu vidéo 3D, il se peut que celle-ci s'appuie sur un « moteur » qui serve d'infrastructure générique à tout un tas de jeux différents. Dans ce cas, tu pourras trouver son API quelque part et écrire une application cliente qui puisse lui réclamer les infos dont elle a besoin. À défaut, il se peut que certaines applications éditeurs comme Steam propose une « console » à activer expressément, et qui te permette elle-aussi de récupérer certaines informations.

    Si rien de tout cela fonctionne, alors tu peux tenter de déboguer l'application en binaire, en créant une application qui « s'attache » au processus concerné comme le font les débogueurs. De là, tu auras accès à tout l'espace mémoire du processus et, donc, virtuellement, à toutes les informations nécessaires, mais retrouver la bonne nécessite d'avoir déjà beaucoup de pratique en développement, donc clairement pas un projet d'apprentissage. D'autres stratégies consistent, elles, à écouter le trafic réseau à destination du client : celui-ci est forcément constitué de petites instructions concises et synthétiques qui doivent transiter rapidement par le réseau sans l'engorger. Il est donc parfois plus facile d'interpréter directement ces informations comme le fait le client lui-même, surtout si les informations à cibler sont restreintes : nul besoin de faire de la reconnaissance d'image si tout ce que l'on veut savoir est si l'on est mort ou pas, par exemple.

Discussions similaires

  1. Comment afficher l'analyse d'une table ?
    Par Fildz dans le forum Oracle
    Réponses: 1
    Dernier message: 17/11/2006, 09h48
  2. dernière analyse d'une table
    Par big1 dans le forum Oracle
    Réponses: 7
    Dernier message: 04/09/2006, 17h31
  3. [Appli] Analyse d'une application J2EE
    Par ericw78 dans le forum Java EE
    Réponses: 3
    Dernier message: 09/11/2005, 10h09
  4. [Debutant(e)] Analyse d'une chaîne de caractères
    Par maire106 dans le forum Langage
    Réponses: 6
    Dernier message: 22/03/2004, 15h04

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