bonjour a tous
voila je développe un petit jeu en réseau (jeu du yin-yang, pas très connu mais très intéressant)
j'en suis a envoyé mes coups par le réseau, cela marche très bien mais j'ai un probleme au niveau de l'affichage
chaque joueur fait a tour de rôle office de serveur et de client
un coup se passe de cette manière
1) j1 choisi un coup
2)execution du coup chez j1
des labels, des images sont censés changé sur ma vue
3) envoie du coup a l'autre joueur j2
lorsque l'autre joueur recoit le coup on l'execute, la vue est bien mis a jour chez lui
4)attente chez j1 de reception du coup de l'autre joueur
c'est la que ca doit bloquer, tant qu'on n'a pas recu le coup de l'autre joueur la vue ne se met pas a jour, du coup quand on recoit le coup il fait l'affichage du coup qu'on a envoyer puis l'affichage du coup qu'on vient de recevoir

ce que j'ai essayé pour l'instant:
-faire une pause dans le programme pour que la vue ai le temps de se mettre a jour: Thread.sleep(1000);:ne marche pas
-forcer l'affichage de la jframe
majframe.repaint;:marche pas

voila j'ai plus trop de solution

je vous met un peut de code si ca peut vous aider
merci d'avance pour vos réponse

execution graphique du coup:
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
leCoup.executer();
      //on maj le label graphique en se servant de l'attribut imageicon du pion
      if (leCoup.getCasedepart().estvide())
      {
          plateauG.get(getindice(leCoup.getCasedepart())).setIcon(ICtransp);
      }
      else
      {
          plateauG.get(getindice(leCoup.getCasedepart())).setIcon(leCoup.getCasedepart().getpion(leCoup.getCasedepart().getListpion().size()-1).getImage());
      }
      plateauG.get(getindice(leCoup.getCasearrive())).setIcon(leCoup.getCasearrive().getpion(leCoup.getCasearrive().getListpion().size()-1).getImage());
      if (leCoup.getCasedepart().getNumcase()==1)
      {
          pionsJ1.setText(String.valueOf(leCoup.getCasedepart().getListpion().size()) + " pions restant");
      }
      else if (leCoup.getCasedepart().getNumcase()==2)
      {
          pionsJ2.setText(String.valueOf(leCoup.getCasedepart().getListpion().size()) + " pions restant");
      }
      txt_historique.setText(txt_historique.getText() + "\n" +leJoueur.getNom()+" -> pion déplacé de la case "+leCoup.getCasedepart().getNumcase()+" à la case "+leCoup.getCasearrive().getNumcase());
      leJoueur=autrejoueur();
      labelJcourant.setText(leJoueur.getNom()+" A VOUS DE JOUER !");
envoie du coup a l'autre joueur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
                      try
                      {
                          socket = new Socket(leJoueur.getAdresse(), 7776);
                          // construction de flux objets à partir des flux de la socket
                          output = new ObjectOutputStream(socket.getOutputStream());
                          output.writeObject(leCoup);
                      }
                      catch (Exception e)
                      {
                          JOptionPane.showMessageDialog(this, "la liaison est rompu"+e);
                          //fermer la partie
                      }
attente du coup de l'autre joueur
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
labelJcourant.setText("en attente de "+ leJoueur.getNom());
        //on fait une pause pour l'affichage des labels
        //Thread.sleep(10000);
        //this.repai
        //on attend le coup de l'autre joueur
        serverSocket = new ServerSocket(7776);
        //on considère que le joueur a 30s pour jouer
        //voir a mettre un timer de son coté
        serverSocket.setSoTimeout(30000);
        // se met en attente de connexion de la part d'un client distant
        socket = serverSocket.accept();
        // connexion acceptée : récupère les flux objets pour communiquer
        // avec le client qui vient de se connecter
        input = new ObjectInputStream(socket.getInputStream());
        // attente les données venant du client
        leCoup = (coup)input.readObject();