Boucle infinie au clavier...

Geomaster Messages postés 22 Date d'inscription lundi 9 décembre 2002 Statut Membre Dernière intervention 31 juillet 2003 - 10 déc. 2002 à 21:18
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 - 18 déc. 2002 à 20:24
Bon alors je dois etre bete parce que j'arrive pas à faire ce dont j'ai envie... c'est à dire une boucle infinie tant qu'on appuie pas sur la touche entrée ! C'est pourtant pas la fin du monde... !

Help !!

Le Geomaster du Secret des Etoiles :o)

5 réponses

JGoldenEye Messages postés 15 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 20 décembre 2002
11 déc. 2002 à 00:49
import java.io.IOException;

public class exemple
{

public static void main(String[] args)
{
int touche = 0;
print("Attente de touche entree");
do {
try {
touche = System.in.read();
} catch (IOException ioe) {
print("Erreur de lecture...");
print(ioe.getMessage());
}
} while ( ! (String.valueOf(touche).equals("13") ) );
print(String.valueOf(touche));
}

public static void print(String s)
{
System.out.println(s);
}
}
0
JGoldenEye Messages postés 15 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 20 décembre 2002
11 déc. 2002 à 00:50
ça ressemble à une solution, non ?
0
Geomaster Messages postés 22 Date d'inscription lundi 9 décembre 2002 Statut Membre Dernière intervention 31 juillet 2003
11 déc. 2002 à 08:55
Et bien le probleme c'est que tout se passe dans un JPanel dans une JFrame. Alors je ne crois pas que cette méthode puisse fonctionner, si ?

Le Geomaster du Secret des Etoiles :o)
0
Geomaster Messages postés 22 Date d'inscription lundi 9 décembre 2002 Statut Membre Dernière intervention 31 juillet 2003
11 déc. 2002 à 09:00
Exact je viens de tester et ça ne marche pas vu que toute l'action se déroule dans un panel qui est dans une frame et non dans la console... et je ne vois pas commenr reproduire le mm schéma dans un keylistener...

Le Geomaster du Secret des Etoiles :o)
0

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

Posez votre question
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
18 déc. 2002 à 20:24
En fait, c'est une solution, mais une mauvaise solution.
On ne fait pas de boucle infinie sur le clavier, jamais.
Tu peux te débrouiller autrement, je suppose, que tu désires mattre en pause tes personnages, et bien s'il s'agit de thread, tu a les méthodes wait (attend) et notify (reveil) qui font çà très bien. La seule contrainte est de les appelée d'une méthode sychronized. Mais c'est un faux probléme, tu peut creer deux méthodes ainsi :

public synchronized void pause()
{
try{wait();}catch(InterruptedException ie){}
}

public synchronized void reprise()
{
notify();
}

Ainsi, tu met en pause() tout le monde, quand une touche est capturée par le key listener, s'il s'agit de celle que tu attends, tu reveilles tout le monde.

Et fini la boucle infinie.

Pourquoi faut-il éviter une boucle infinie dans un listener ?
Car les instruction qui prennent trop de temps à l'intérieur font tout ralentir et augmente les chances de plantages.
J'ai déjà fiat ce genre d'erreurs et crois moi je m'en suis mordu les doigts.

JHelp
0