Repaint dans une boucle for...

marques83 Messages postés 3 Date d'inscription mercredi 29 novembre 2006 Statut Membre Dernière intervention 29 novembre 2006 - 29 nov. 2006 à 22:09
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 29 nov. 2006 à 23:53
Bonsoir,

j'ai écrit un jeu "The game of Life"... dans ce jeux j'ai besoin de faire un refresh, ou mieu
dit en langue de programmation un repaint() dans un boucle...ou même il pourrai être en dehors si j'appel cette fonction récursivement comme je l'ai fait...J'ai même fait une pause de 1 sec. pour que la modification de l'image soi visible...Le problème est que le rapaint n'est exécuté qu'à la fin de la boucle...comment puis-je faire pour avoir un refresh après chaque itération?

Merci pour toute aide!!

P.S. voici la partie du code:

pause(numberauto);      // cette ligne est dans une autre classe...
                                    // number auto est le nombre d'itérations

 public void pause(int N){
   int i;
    if (N > 0){
     dessin.m.iteration();
     dessin.m.print();
     dessin.repaint();
     try { Thread.sleep(1000);
          dessin.repaint();
     } catch(InterruptedException e2) { dessin.repaint();
     e2.printStackTrace();
     }
     if (numberauto>0){
      numberauto--;
      pause(numberauto);
     }
     else{}
    }
 }

P.S.S. Malgré tout ces repaint() le repaint n'est exécuté qu'à la fin de toutes ces itérations...

6 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
29 nov. 2006 à 23:03
Salut:

void gameLoop () {
    while (true) {
       // Mettre à jour ta scène
       // dessiner la scène
       repaint ();
       try {
          Thread.sleep (1000);
       }
       catch (InterruptedException e) {
       }
    }
}

Je te conseille d'abondonner cette technique archaique d'effacer l'écran puis d'afficher et ainsi de suite.
Je te conseille d'utiliser la technique de double buffering elle est déja supportée par Java.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
29 nov. 2006 à 23:07
Salut:

Dernier mot le double buffering te permet une meilleure qualité de graphisme (clair, fluide, ...) c'est d'ailleurs la technique de Jeu 3D
0
marques83 Messages postés 3 Date d'inscription mercredi 29 novembre 2006 Statut Membre Dernière intervention 29 novembre 2006
29 nov. 2006 à 23:15
merci pour ta réponse aussi rapide ;)
pourrai tu seulement m'indiquer un expemple ou où je peux trouver un exemple de double buffering?
merci
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
29 nov. 2006 à 23:34
Salut,

déporte ton traitement
dans un thread par ce que la il y a des chances que tu sois dans le
thread main et donc tant que tu n'as pas rendu la main les repaints
ne se feront pas(c'est le thread main qui fais affiche une fenetre et
execute les repaint dedans)....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marques83 Messages postés 3 Date d'inscription mercredi 29 novembre 2006 Statut Membre Dernière intervention 29 novembre 2006
29 nov. 2006 à 23:40
merci!!!
exactement....tant que j'ai pas rendu la main ca ne fonctionne pas...
comment je peux le déporter dans un thread? excusez-moi...mais je suis encore un peu débutant en java
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
29 nov. 2006 à 23:53
Salut,

ba ne sachant pas comment est fait ton code et de quel sont tes variable je ne peux te donner un exemple mais voici un tutos sur les thread en java : http://alwin.developpez.com/tutorial/JavaThread/

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Rejoignez-nous