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

 Java Discussion :

GUI séparée, interchangeable


Sujet :

Java

  1. #1
    Invité
    Invité(e)
    Par défaut GUI séparée, interchangeable
    Bonjour,

    Je suis en train de faire un "jeu" dans lequel deux troupes de soldats se battent selon une stratégie prédéfinie. La carte du jeu avec la position des soldats est affichée.

    Je voudrais faire une interface graphique composée de deux boutons : "lecture" et "pause", et j'aimerai qu'elle soit séparée du programme principal. En gros, il faut qu'on puisse utiliser le programme avec une autre interface graphique sans rien recompiler. Et j'aimerais aussi qu'on puisse utiliser le porgramme sans interface graphique, juste en tapant les commandes "lecture" et "pause" dans le terminal.

    Je ne sais pas du tout quelle est la bonne manière de faire. J'avais pensé à faire envoyer par l'interface graphique le nom des commandes voulues sur l'entrée standard du programme de base, mais je ne sais pas si le programme de base peut "surveiller" son entrée standard.

    Un autre problème : comment intégrer le "Graphics" produit par le programme de base dans la fenêtre de l'interface graphique, étant donné que ce sont deux programmes différents ? Il ne peuvent donc pas se passer des objets, non ?

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    Le MVC est la solution à ton problème. Il y a pas mal de doc sur le sujet (notamment sur ce site).
    En gros, le Modèle sera "l'état" de ton champ de bataille.
    Les Vues permettront de visualiser ton modèle.
    Le Controlleur enverra les commandes de Lecture/Pause à ton simulateur (le moteur en charge de mettre à jour ton modèle).

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Plus qu'un MVC je me dirigerais soit vers un mécanisme de plugin à la eclipse:

    http://baptiste-wicht.developpez.com...n/application/

    Voir même en te basant sur un mécanismes de plugins standardisé tel qu'OSGI.

    Ou sinon batir une appli client/serveur lancés sur un mêms poste dialoguant via un protocole spécifique. De fait tu pourras avoir N clients totalement différents (basés sur des technos différentes, avec des formes différentes et ainsi de suite)échangeant avec un même serveur.

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Je pense que s'il a juste besoin d'avoir deux interfaces différentes, la structure OSGi est peut-être un peu lourde. Surtout s'il ne connait pas encore MVC.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    D'abord, merci à vous deux pour vos réponses

    Pour ce qui est de l'architecture MVC, c'est à peu près ce que j'ai essayé de faire, seulement, par principe, je veux offrir une alternative "console" à tout appui sur un bouton ... or on peut respecter MVC et ne pas offrir cette possibilité.

    Voici ce à quoi j'ai pensé depuis deux jours : dans le programme principal, faire une boucle infinie constituée d'un System.in.read qui est capable de reconnaitre les deux actions "démarrer" et "pause". La solution "sans boutons" est donc toute trouvée.

    Reste la solution "avec bouton". Il faut faire un programme bouton qui lance le programme principal, et qui écrit sur l'entrée standard de ce dernier les mots "démarrer" ou "pause" lorsque l'utilisateur appui sur le bouton correspondant.

    D'après ce que j'ai compris, je peut le faire soit avec Pipe soit avec Socket. Avec ces deux solutions j'ai un problème : un pipe ne peut se faire qu'entre deux threads du même processus (c'est vrai ?) , et pour les sockets ça ne permettra plus à mon programme de base d'attendre des commandes de son entrée standard. Quoi que ce dernier point peut être résolu en choisissant le mode voulu grâce à un simple argument au lancement du programme de base (donc ça semble être la seule solution envisageable ...).

    ----------------------------------------------------------

    Pour la programmation modulaire, j'ai trouvé le lien très instructif pour la vision "tout est module" de l'auteur. La solution proposée est pas mal, mais elle ne permet toute fois pas de taper les instructions "à la main" (pour voir plus loin : de s'affranchir du langage de programmation).

    Pour l'architecture client/serveur, je trouve cette façon de faire très séduisante, mais je doute de mes capacités à la mettre en oeuvre avant la fin du semestre (1er juin). Aussi, elle ne permet pas de taper les instructions dans le terminal (sauf si j'ai manqué quelque chose).
    Dernière modification par Invité ; 16/03/2010 à 07h01.

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

Discussions similaires

  1. Interchanger un JPanel avec un autre
    Par jfz dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 09/01/2010, 20h38
  2. [Info]gui builder
    Par sonialem2000 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 03/08/2004, 21h13
  3. [Débutante] GUI Postgresql
    Par aidefz dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 07/04/2004, 10h49
  4. [editeur GUI][info]
    Par lunatix dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 26/01/2004, 15h59
  5. [GUI] Ou trouver les standard ?
    Par Braim dans le forum Windows
    Réponses: 5
    Dernier message: 01/10/2003, 08h13

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