Boucle infinie au clavier...

Signaler
Messages postés
22
Date d'inscription
lundi 9 décembre 2002
Statut
Membre
Dernière intervention
31 juillet 2003
-
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
-
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

Messages postés
15
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
20 décembre 2002

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);
}
}
Messages postés
15
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
20 décembre 2002

ça ressemble à une solution, non ?
Messages postés
22
Date d'inscription
lundi 9 décembre 2002
Statut
Membre
Dernière intervention
31 juillet 2003

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

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)
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
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