Boucle infinie au clavier...

Messages postés
22
Date d'inscription
lundi 9 décembre 2002
Statut
Membre
Dernière intervention
31 juillet 2003
- - Dernière réponse : 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)
Afficher la suite 

5 réponses

Messages postés
15
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
20 décembre 2002
0
Merci
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);
}
}
Commenter la réponse de JGoldenEye
Messages postés
15
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
20 décembre 2002
0
Merci
ça ressemble à une solution, non ?
Commenter la réponse de JGoldenEye
Messages postés
22
Date d'inscription
lundi 9 décembre 2002
Statut
Membre
Dernière intervention
31 juillet 2003
0
Merci
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)
Commenter la réponse de Geomaster
Messages postés
22
Date d'inscription
lundi 9 décembre 2002
Statut
Membre
Dernière intervention
31 juillet 2003
0
Merci
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)
Commenter la réponse de Geomaster
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
0
Merci
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
Commenter la réponse de JHelp