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 :

Communication entre deux programmes


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 53
    Par défaut Communication entre deux programmes
    Bonjour,

    Je travaille actuellement sur un projet d'intelligence artificielle qui devra jouer à la place d'un joueur humain, dans une sorte de bataille navale, dans le monde de Star Trek. 'fin bref.

    J'ai récupéré les sources du jeu, mais impossible de le compiler avec un autre compilateur que Borland 5.5 bcc32, sans avoir de bugs. Et le code de l'algorithme de l'IA a été développé pour GCC.

    Mon problème donc, c'est comment faire pour faire communiquer l'IA avec le jeu. C'est un remake d'un vieux jeu qui a avait été développé sur PDP-11 je crois, et donc, c'est tout en texte en mode console, avec des printf et scanf pour entrer les commandes. J'ai donc besoin que mon IA puisse lire ce que le jeu affiche et entrer les commandes dans le jeu.
    Ce que je pensais faire c'est utiliser la fonction system(char*) pour lancer le jeu en dérivant la sortie vers un fichier et ensuite faire lire ce fichier à mon IA pour connaître la situation du jeu. Mais le problème c'est comment faire pour entrer les commandes par mon IA de cette manière ? Est-il possible de dériver l'entrée standard de windows vers un autre fichier ?

    Ou alors, pensez-vous qu'il vaut mieux que je fusionne les deux codes, en espérant que j'aurais pas de problème avec bcc32. Mais même dans ce cas là, comment faire pour accéder au contenu de la sortie et entrée standard par mon IA ? à moins de changer les printf/scanf en fprintf/fscanf ?

    Merci d'avance
    GPZ{^_^}

  2. #2
    Membre très actif

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    578
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 578
    Par défaut
    Salut,

    Généralement quand je veux faire communiquer deux programmes indépendants entre eux , j'utilise les socket.

    @+

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Sous windows je peux pas t'aider. Si c'était sous linux/unix je verrais deux façons de faire. Peut-être que ça peut t'aider, les même mecanismes sont probablement disponibles sous windows :

    1) Communiquer par pipes. Tu ouvres deux pipes, que tu connectes l'un à l'entrée standard du programme, l'autre à sa sortie standard. Ensuite tu utilises une fonction du genre select pour scruter ces deux pipes et ton entrée standard, et faire ce que tu as à faire quand l'un deux est disponible.

    2) Utiliser les pseudo-tty.

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 53
    Par défaut
    Merci, de vos réponses. Je pense pas que les pseudo-tty existe sous windows, mais je vais essayer les pipes. Et si j'arrive toujours pas, mais je vois pas pkoi j'y arriverais pas, j'utiliserais des sockets.

    Merci !

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 53
    Par défaut Problème avec les pipe
    Bonjour,

    Je reposte, car j'ai des problèmes à faire fonctionner les pipes comme je le souhaiterais.

    Je me suis tourné vers l'utilisation de pipe anonymes. Mon programme lance mon jeu en paramétrant son stdout et stdin vers les pipes. Et ensuite je fais ReadFile(...) en boucle infini sur la pipe du stdout.
    Mais ça fonctionne pas comme je veux, c'est pas synchrone. Le jeu au départ affiche un scénario et des informations mais ça s'affiche seulement petit à petit quand j'appuie sur la touche entrée. Alors que normalement tout s'affiche d'une traite :/

    Je ne comprends pas d'où vient le problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Communication entre deux programmes
    Par Kyoshinou dans le forum VB.NET
    Réponses: 2
    Dernier message: 26/12/2011, 16h51
  2. Communication entre deux programmes c# par USB
    Par Sylvain_31 dans le forum C#
    Réponses: 1
    Dernier message: 14/04/2010, 00h27
  3. Communication entre deux programmes Java. http ? Rmi ? WS ? Autres ?
    Par tiboudchou dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 26/03/2009, 13h50
  4. communication entre deux programmes
    Par Invité dans le forum C
    Réponses: 19
    Dernier message: 12/10/2008, 13h07
  5. Débutant, Communication entre deux programmes
    Par Madalen dans le forum Langage
    Réponses: 5
    Dernier message: 23/05/2007, 23h27

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