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

Langage Java Discussion :

Attendre un évènement


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Par défaut Attendre un évènement
    Bonjour,

    J'ai beaucoup cherché sur internet mais je n'arrive à trouver et/ou comprendre comment solutionner mon problème :

    Je réalise un jeu en JAVA. J'ai plusieurs joueurs (ordi ou humain) qui jouent chacun leur tour. Quand c'est un joueur ordi, le traitement est automatique. Par contre, quand c'est un joueur humain, il faut « attendre » un signal envoyé par le joueur avant de faire jouer le joueur suivant. Comment faire ?

    Merci !

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Qu'entend tu par attendre un signal?
    Sinon, pour attendre tu peux bloquer dans dans une boucle jusqu'à ce qu'on ait la confirmation que le joueur a fait son jeu.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Par défaut
    En fait, attendre que le joueur humain ait joué !! et puis comment bloquer dans une boucle ??

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Puisque tu ne nous fournit aucun code, on ne peut deviner ce que tu as fait.
    Sinon, tu peut bien faire un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while (!player.readyToPlay())
    {
    }

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par darrylsite Voir le message
    Puisque tu ne nous fournit aucun code, on ne peut deviner ce que tu as fait.
    Sinon, tu peut bien faire un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while (!player.readyToPlay())
    {
    }
    OUla une attente active c'est pas bon ca pour les ressources...
    Regarde du côté des méthodes wait et notify/notifyAll

  6. #6
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Citation Envoyé par George7 Voir le message
    OUla une attente active c'est pas bon ca pour les ressources...
    Regarde du côté des méthodes wait et notify/notifyAll
    ça fait toujours bouffer mon cpu à 100% .
    mais sinon, je voulais lui proposer de faire dormir son le thread puis le reveiller periodiement pour verifier l'etat de son jeu. Mais vu qu'on ne sais rien sur les methodes qu'il utilise, je lui ai donné seulement l'idée generale

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Par défaut
    Bonsoir,

    Je vais détailler un peu. Je ne donne pas de code parce que c'est un problème de conception. Je m'explique :

    Je fais un jeu de plateau (type dames). Je tiens à séparer le modèle de la vue et du contrôle. Dans le déroulement de la partie, il y a des joueurs humains qui doivent jouer. Comme le modèle est séparé du contrôleur, comment faire pour programmer la méthode « jouer » du joueur humain ? Il faut en fait attendre un « évènement » (le choix du joueur humain) indépendamment de l'interface utilisée (SWING, console...).
    Je reviens donc à ma question initiale : comment programmer en JAVA l'attente d'un évènement ? Le programme doit être en pause jusqu'à ce qu'un évènement «choix du joueur» arrive...

    Merci.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Et bien ca peut être fait différemment suivant ce que tu choisis :
    • tu peux avoir des listeners qui envoient un événement à ton controller et qui réagit à cet événement
    • tu peux avoir ton controller dans un thread à aprt qui tourne tout le temps et qui fait un wait quand il doit attendre qu'un joureur joue. Le joueur réveille le thread avec un notify (bon en l'écrivant ca me parait bizarre de faire ca, mais j'ai pas approfondi)

    Bref à toi de voir, moi je ferais avec des listeners je pense, mais encore une fois : c'est une idée comme ca et j'ai pas réfléchi plus que ça

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Par défaut
    Bonsoir,

    J'avais bien pensé aux listeners mais je ne vois pas trop comment faire :

    Le modèle a une suite d'actions à réaliser. Quand vient l'action de jouer pour un joueur humain il doit attendre un évènement du contrôleur avant de passer à la suite. En fait, si j'ai bien compris, l'évènement doit venir du contrôleur et le fait d'avoir un listener dans le modèle n'empêchera pas de passer aux actions suivantes. Ou alors il faudrait programmer : tant que le listeners n'a pas reçu d'évènement (en provenance du contrôleur), attendre, c'est possible ?

    Merci.

  10. #10
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Par défaut
    personne n'a une idée ?

  11. #11
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Je pense que tu prends le problème à l'envers.
    Le début d'une action humaine est initiée par l'interface graphique : réception touche clavier, souris ou autre. C'est donc dans le listener que l'action humaine à effectuer va être démarrée. Ca peut être réveil d'un Thread ou création d'un Thread, modification d'une variable...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. blocage d'une fonction en cours pour attendre un évènement
    Par lucyz dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 20/01/2009, 13h37
  2. Réponses: 3
    Dernier message: 12/07/2007, 03h40
  3. Réponses: 3
    Dernier message: 13/06/2007, 17h47
  4. Attendre un évènement
    Par ToTo13 dans le forum Langage
    Réponses: 6
    Dernier message: 08/06/2007, 14h03
  5. Attendre un évènement pour continuer l'exécution
    Par vinzzzz dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 22/11/2006, 22h42

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