Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2855 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problème de lag pour un jeu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de lag pour un jeu

n°1401326
Chidori
Posté le 05-07-2006 à 18:01:46  profilanswer
 

Bonjour tout le monde, je vous expose mon problème :
 
Je suis actuellement en train de faire un jeu simple, le principe est le suivant : au lancement du jeu, une JFrame apparaît de manière aléatoire toutes les 2s(le temps diminuera quand j'aurais réglé mon problème) et il faut cliquer dessus, cependant, lors du lancement, cette JFrame fait laguer toutes les autres fenêtres donc impossible d'arrêter l'application à part un ctrl+alt+suppr(et encore, je dois m'acharner) sauf quand je suis sous Eclipse, j'arrive encore à l'arrêter à 2s d'intervalle. Bien évidemment, je n'ai pas ce problème si je ne mets pas la boucle qui fait apparaître ma JFrame.
J'ai cherché comment résoudre mon problème mais je ne trouve pas, je pense qu'il faut gérer des threads mais comme j'en ai jamais utilisé, je galère un peu là. Voici le code source :
 

Code :
  1. public void clic() {
  2.  JFrame fin = new JFrame("Options du jeu" );
  3.  fin.setUndecorated(true);
  4.  fin.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
  5.  fin.setLayout(new GridLayout(1, 3));
  6.  JButton finJeu = arrete();
  7.  JButton debutJeu = demarre();
  8.  fin.add(debutJeu);
  9.  fin.add(finJeu);
  10.  fin.add(jtf);
  11.  fin.setLocation(850, 0);
  12.  fin.setPreferredSize(new Dimension(300, 70));
  13.  fin.pack();
  14.  fin.setVisible(true);
  15. }
  16. public JButton arrete() {
  17.  JButton jrb = new JButton("Stop" );
  18.  jrb.addActionListener(new ActionListener() {
  19.   public void actionPerformed(ActionEvent ae) {
  20.    stop = true;
  21.   }
  22.     });
  23.     return jrb;
  24. }
  25. public JButton demarre() {
  26.  JButton jrb = new JButton("Go" );
  27.  jrb.addActionListener(new ActionListener() {
  28.   public void actionPerformed(ActionEvent ae) {
  29.    touche = 0;
  30.    stop = false;
  31.    JFrame attrape = new JFrame();
  32.    toucheCarre touche = new toucheCarre();
  33.    attrape.addMouseListener(touche);
  34.    attrape.setUndecorated(true);
  35.    attrape.setPreferredSize(new Dimension(30, 30));
  36.    attrape.setBackground(Color.RED);
  37.    while(stop == false) { //Le problème est ici
  38.     attrape.setBackground(Color.RED);
  39.     attrape.setLocation((int)(Math.random()*1000), (int)(Math.random()*1000));
  40.     attrape.pack();
  41.     attrape.setVisible(true);
  42.     try {
  43.      sleep(4000);
  44.     } catch (InterruptedException e) {
  45.      e.printStackTrace();
  46.     }
  47.    }
  48.   }
  49.     });
  50.     return jrb;
  51. }


 
Merci d'avance pour vos réponses.


Message édité par Chidori le 05-07-2006 à 18:36:18
mood
Publicité
Posté le 05-07-2006 à 18:01:46  profilanswer
 

n°1401566
moi23372
Posté le 05-07-2006 à 23:13:26  profilanswer
 

pour faire un thread c'est simple
 
faut que la classe dérive de Thread
Cette classe doit posséder une méthode run
 
public void run()
 
ensuite pour lancé le Thread
maClass.Start();
 
et c'est parti ;-)
 
donc suffit de créer une nouvelle classe contenant ta boucle et c'est bon, bien entendu tu peux passer des références au constructeur de ta classe dérivant de thread afin de pouvoir jouer sur les composants graphiques. Voila tu devrais avoir tout ce qu'il te faut...

n°1401571
darklord
You're welcome
Posté le 05-07-2006 à 23:14:54  profilanswer
 

implements Runnable hein :o


---------------
Just because you feel good does not make you right
n°1401588
Chidori
Posté le 05-07-2006 à 23:25:05  profilanswer
 

Merci de vos réponses, j'essaierais dès que possible et je vous tiens au courant. Par contre, j'extends déjà en Thread mais je voyais pas trop comment le gérer à part la méthode sleep().


Message édité par Chidori le 05-07-2006 à 23:28:21
n°1401608
Chidori
Posté le 05-07-2006 à 23:50:25  profilanswer
 

Bon voilà une capture du menu du jeu, ça fait exactement pareil que ce que je vous avez dit : http://img275.imageshack.us/img275/6228/jeu2ej.jpg
 
J'ai essayé 2 façons au cas où, maClasse extends Thread implements Runnable avec le morceau de code au-dessus et le start() dans la méthode clic() puis appel à cette méthode pour lancer le jeu et l'autre façon avec la même en-tête mais ma boucle dans le constructeur et lancement avec maClass.start().
Dans le 2nd cas, on voit même pas les options du jeu.
J'ai ma JFrame qui bouge aléatoirement comme ça l'était initialement mais j'ai toujours pas accès à mon menu de jeu, il reste bloqué et impossible de cliquer dessus.


Message édité par Chidori le 05-07-2006 à 23:51:14
n°1404973
Chidori
Posté le 11-07-2006 à 20:55:08  profilanswer
 

Un petit up comme je ne vois toujours pas de réponse.
 
En attendant, j'ai crée un autre jeu lol, un jeu de mémoire et j'ai le même problème, apparemment ça viendrait de la fonction sleep(). Lorsque je l'utilise, l'affichage se fige tant que la durée en paramètre n'est pas écoulée et malheureusement, dans mon premier jeu, cette fonction est dans une boucle while qui s'arrête quand je clique sur Stop mais comme je ne peux pas cliquer dessus... Voilà, j'espère avoir d'autres réponses.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problème de lag pour un jeu

 

Sujets relatifs
Probleme de liaison entre une list et des textproblème avec mon formulaire perl/cgi (debutant)
problème compilation mpich - LinuxProblème de type dans une requête SQL
[MYSQL] Probleme de creation de table[Problème] - Template affichage :??:
Problème envoi mailprobleme ON UPDATE CASCADE MYSQL
probleme avec un import fichier texte dans mysql 
Plus de sujets relatifs à : Problème de lag pour un jeu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR