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

avec Java Discussion :

Attendre un évènement souris


Sujet :

avec Java

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut Attendre un évènement souris
    Bonjour,

    Je ne sais pas par quel bout prendre ce problème et j'ai même des difficultés à l'exprimer simplement.

    Donc j'ai un programme java qui est un jeu à deux joueurs. l'un des jouers est l'ordinateur et l'autre est un humain qui utilise une souris.

    J'utilise une boucle de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
             position = initialiserJeu();
             while (position.continue)
             {
                    listeCoupsPossibles = creerListeCoupsPossibles();
                    if (position.joueur = ORDINATEUR) position = choixCoup();
                    else ????
              }
    Donc on continue à jouer tant que la partie n'est pas finie. On crée la liste de tous les coups possibles. Si c'est à l'ordinateur de jouer on choisit un de coups possibles. Si c'est à l'humain de jouer on attend qu'il clique sur une des cases et le programme vérifie que la case choisie correspond à un coup possible. Si c'est le cas on joue ce coup sinon on continue à attendre que l'humain veuille bien cliquer sur un coup possible.
    Je sais que ce problème est classique mais je ne vois pas comment le coder.
    Merci.
    C'est en respectant les autres que l'on se fait respecter.

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est du Swing ?
    Je pense que tu ne devrais pas faire une boucle infini de la sorte...



    Tu devrais plutôt conserver un état pour savoir qui doit jouer, puis réagir uniquement sur les évènements souris.


    • Si le joueur clique pendant que ce n'est pas à lui de jouer, tu ignores simplement son clic et tu ne fait rien.

    • Sinon, tu vérifies son coup et les conditions de victoire... et tu lances le coup de l'ordinateur dans la foulée.



    a++

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    C'est du Swing ?
    Je pense que tu ne devrais pas faire une boucle infini de la sorte...



    Tu devrais plutôt conserver un état pour savoir qui doit jouer, puis réagir uniquement sur les évènements souris.


    • Si le joueur clique pendant que ce n'est pas à lui de jouer, tu ignores simplement son clic et tu ne fait rien.

    • Sinon, tu vérifies son coup et les conditions de victoire... et tu lances le coup de l'ordinateur dans la foulée.



    a++
    Tout d'abord merci de ta réponse.
    Donc c'est en effet en Swing.
    Je garde bien l'état du jeu dans l'objet position.
    En effet si ce n'est pas au joueur qui a cliqué de jouer j'ignore le clic
    Si c'est à lui, je sais vérifier son coup et décider si la partie est finie ou non. mais comment gérer le jeu autrement que par la boucle tant que jeu pas fini, continuer
    C'est en respectant les autres que l'on se fait respecter.

  4. #4
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Tu fais une méthode qui vérifie si le jeu est terminé qui renvoie un booleen, puis tu mets le test dans ta boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while(testSiJeuEstFini()){
    //actions liées au jeu
    }
    Tu peux étoffer avec un nombre de coups maximum dans ton test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while(testSiJeuEstFini() && nombreDeCoup<20) {
    //actions liées au jeu
    }
    Comprends tu ce que je veux dire ?
    F*ck it ! Do it !

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Patrice Henrio Voir le message
    mais comment gérer le jeu autrement que par la boucle tant que jeu pas fini, continuer
    Le problème avec la boucle, c'est que tu ne peux pas savoir quand le joueur va cliquer.
    En plus tu bloques le thread graphique...
    Ou alors il faut faire un système multi-thread et passer les infos de l'un à l'autre ca risque d'être complexe.


    Je pense que ce serait plus simple via les évènements.
    Lorsque le joueur joue un coup :
    • Tu vérifies que le coup soit correct.
    • Tu effectues le coup et vérifies les conditions de victoire.
    • Si la partie est gagné, tu déclenches la fin du jeu.
    • Sinon tu déclenches le coup de l'ordinateur.


    Puisqu'il semble s'agir d'un jeu au tour à tour, l’ordinateur jouera forcément après chaque coup du joueur...


    a++

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

Discussions similaires

  1. [JTextPane] Ajouter un évènement souris sur un mot
    Par soad dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 20/03/2007, 15h12
  2. Réponses: 2
    Dernier message: 17/11/2006, 13h48
  3. [Débutant]Gestion des évènements souris
    Par bubu251 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 06/10/2006, 11h49
  4. [FLASH MX2004] Les actions des événements souris ne fonctionnent plus
    Par Demco dans le forum ActionScript 1 & ActionScript 2
    Réponses: 7
    Dernier message: 21/04/2006, 21h37
  5. [wxpython] problème avec les événements souris
    Par kalimero dans le forum wxPython
    Réponses: 2
    Dernier message: 13/11/2005, 15h42

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