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 :

Jeu Java contre ordinateur


Sujet :

Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Israël

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Jeu Java contre ordinateur
    Bonjour a tous!

    Je voulais vous poser une question un peu basique peut être mais je reste coincée sur le sujet
    Je suis en train de créer un jeu de logique entre un joueur et l'ordinateur
    lorsque le joueur a joué je désire le faire patienter quelque secondes ,lui montrer l'état actuel du tableau et ensuite faire jouer l'ordinateur
    j'ai essayer avec sleep , le problème c'est qu'il se met en marche avant même d'afficher le tableau
    quelle technique me conseiller vous d'utiliser pour que ce jeu soi d'un bon niveau et professionnel et pour qu'il exécute ce que j'ai écris ci dessus ?merci

    Voici la fontion evenement des boutons du tableau du jeu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    public void actionPerformed(ActionEvent e) {
     
     
            JButton buttonCliked;
           buttonCliked=(JButton)e.getSource();
     
           if (myGame.getTurn()==0){
          myGame.Move(buttonCliked.getName());
           UpdateBoard();
     
           }
            if (myGame.isGameOver()){
            ShowGameOver(); 
      }
            else{
     
      myGame.MoveComputer(highGame);
                try {
                    sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(myPanelGame.class.getName()).log(Level.SEVERE, null, ex);
                }
     UpdateBoard();
     
     
     
     
       if (myGame.isGameOver()){
             ShowGameOver();
     
          }
            }
     
     
        }

  2. #2
    Membre du Club
    Inscrit en
    Février 2013
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 34
    Points : 43
    Points
    43
    Par défaut
    Le code des listeners est exécuté dans le thread graphique.
    Tu ne peux pas rafraichir l'affichage pendant qu'il est exécuté.
    Il te faut englober ce code dans un nouveau thread.
    New thread(new runnable() { public vous run(){ ton code ici incluant des thread.sleep}).start()

    Met ça dans ton actionperformed

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    On pourrait le faire dans un thread effectivement, mais il faudrait ensuite faire exécuter la méthode updateboard() dans le thread graphique, vu, qu'à priori, elle est censée mettre à jour l'interface graphique (vu son nom), ce qui se fait par appel de SwingUtilities.invokeLater().

    On peut faire ça plus simplement avec un javax.swing.Timer.

    Le problème dans les deux cas, c'est que ça ne bloque pas du tout l'interface graphique (justement le but est ne pas bloquer l'interface, affichage, comme interactivité). Si tu as besoin d'empêcher l'utilisateur d’interagir avec ton board, il y a au moins 2 façons de faire :

    • utiliser la méthode setEnabled(boolean), qui permet d'interdire l'interactivité (par setEnabled(false)) sur un composant, et de la rétablir par setEnabled(true).
    • Utiliser un GlassPane


    Le choix dépendant de la structure de ton interface, et de ce qu'il faut bloquer (tout ou une partie)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Idée de jeu Java
    Par ez3kiel dans le forum Général Java
    Réponses: 5
    Dernier message: 31/01/2008, 11h53
  2. Code source jeu Java ME
    Par apone dans le forum Java ME
    Réponses: 3
    Dernier message: 05/04/2007, 11h37
  3. Développement d'un jeu Java
    Par akito dans le forum Graphisme
    Réponses: 10
    Dernier message: 05/03/2007, 19h43
  4. Jeu java pour portable
    Par shugarrr dans le forum Développement Mobile en Java
    Réponses: 1
    Dernier message: 04/03/2006, 01h19

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