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

Interfaces Graphiques en Java Discussion :

[THREAD] Implémentation d'une attente


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut [THREAD] Implémentation d'une attente
    Bonjour à tous,

    Je vous explique brièvement mon problème, j'ai développé (non sans mal) un jeu de puissance 4 en Java. Il est fondé sur le Design Pattern MVC.

    Une classe Main lance la fonction statique main qui elle-même instancie le contrôleur qui contient le modèle et la vue. Ma séparation est bonne étant donné que je peux changer de bibliothèque (je peux faire une vue AWT ou SWT sans toucher aux données).

    Voilà le problème, dans le modèle, il y a une boucle principale, qui teste la validité, si un joueur a gagné, etc., et surtout elle appelle une méthode play(), je m'explique :
    Comme on doit pouvoir jouer contre l'ordinateur j'ai implémenté deux classes Human et Computer qui héritent d'une troisième classe abstraite que j'ai nommé Player. Ces deux classes implémentent une méthode qui s'appelle play(Game game) qui prend le modèle en paramètre.
    Lorsqu'on crée une partie, la boucle principale est lancée et elle demande alternativement à chaque joueur, le choix qu'il ont fait pour continuer, ce choix est contenue dans la méthode play().

    Si l'objet est un ordinateur, pas de problème, la méthode play() appelle elle-même une méthode calculateMyMove() qui renvoie un numéro de colonne après une analyse du jeu. Par contre, si c'est un objet Human, je ne sais pas du tout comment récupérer la valeur choisie par l'interface graphique.

    J'ai pensée à faire une boucle infinie, en attendant que l'interface graphique rende son jugement mais je trouve ça un peu moisi et j'aimerais faire quelque chose de bien. Alors voilà, j'ai pensé aux threads...

    Est-ce qu'il serait possible que mon objet Human "attende" la réponse de l'interface sans "bloquer" celle-ci ?

  2. #2
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Voir cette discussion

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    Merci beaucoup.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    Je reprends le topic...

    Si j'utilise la technique qui se trouve sur le lien que tu m'as envoyé mon interface graphique est littéralement bloquée et je ne peux pas l'utiliser pour choisir la colonne à renvoyer au programme en attente.

    J'ai l'impression que l'interface et le programme principal sont liés et que lorsque je bloque le programme principal pour attendre le choix du joueur, la fenêtre qui affiche mon programme ne répond plus et donc ce choix ne peut pas être fait.

    Je ne sais pas si je m'explique bien...

    En fait je crois que pour faire ce que je veux faire, il faut que ma vue et mon modèle s'exécutent dans des threads séparés mais gardent un moyen de communication.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    Personne pour m'aider de nouveau... Merci quand même.
    J'ai fini par trouver une solution seul pas très élégante et pas exactement correspondante à ce que j'aurais souhaité, la boucle se termine après récupération d'un coup null et reprend sur une demande de l'interface (click de souris).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/03/2012, 08h27
  2. Implémenter des timers ou des threads timers sous une application windows dotnet
    Par bruce-willis dans le forum Développement Windows
    Réponses: 16
    Dernier message: 09/09/2011, 11h43
  3. Réponses: 8
    Dernier message: 18/07/2010, 21h16
  4. [Threads] Implémenter une pile de processus
    Par Invité dans le forum Général Java
    Réponses: 7
    Dernier message: 30/07/2007, 12h14
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15

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