Lire un son// Lire ligne aleatoire d'un fichier texte
Freedumz
Messages postés
92
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Salut à tous, je suis en train de finir mon jeu du pendu et il me reste 2 petits trucs pour le finir
1./ , je souhaite y inserer des sons à jouer (relativement simple), un petit arrhhhhhhhhhhhhhhhhhh quand mon pendu se fait prendre, et un petit jingle quand il est sauvé, donc pour 2 lignes aussi courtes, je n'ai pas besoin des lignes de code de 100 lignes que je trouve sur le net, j'ai donc trouvé ce code qui me semblait relativement simple:
import java.net.URL;
import java.applet.Applet;
import java.applet.AudioClip;
public test() {
initComponents();
URL url_1 = test.class.getResource( ".//fatality.wav" );
AudioClip ac1 = Applet.newAudioClip(url_1);
ac1.play();
}
Mais au joie, je recois un magnifique message :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
(oui oui, le fichier fatality.wav est a l'endroit indiqué directement dans la racine)
2./our mon pendu, j'ai trouvé un dictionnaire sur un fichier texte, je voudrais pouvoir extraire une valeur au hasard mais j'obtiens tjs la meme :/ (le premier mot de mon .txt revient a chaque fois)
public void motinconnu()
{
ligne = (int)(Math.random()*336530);//génere correctement le nombre
System.out.println(ligne);
try {
file = new File("data.txt");
reader = new LineNumberReader(new FileReader(file));
reader.setLineNumber(ligne);
System.out.println(reader.getLineNumber());
MotCache = reader.readLine();
System.out.println(MotCache);
} catch (IOException ex) {}
}
ici le soucis est qu'il me renvoit a chaque fois le premier mot de mon dico alors que le random s'execute bien :/ (nb: le 336530 vient du fait que mon fichier texte possede 336530 lignes)
Merci d'avance oour votre aide
1./ , je souhaite y inserer des sons à jouer (relativement simple), un petit arrhhhhhhhhhhhhhhhhhh quand mon pendu se fait prendre, et un petit jingle quand il est sauvé, donc pour 2 lignes aussi courtes, je n'ai pas besoin des lignes de code de 100 lignes que je trouve sur le net, j'ai donc trouvé ce code qui me semblait relativement simple:
import java.net.URL;
import java.applet.Applet;
import java.applet.AudioClip;
public test() {
initComponents();
URL url_1 = test.class.getResource( ".//fatality.wav" );
AudioClip ac1 = Applet.newAudioClip(url_1);
ac1.play();
}
Mais au joie, je recois un magnifique message :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
(oui oui, le fichier fatality.wav est a l'endroit indiqué directement dans la racine)
2./our mon pendu, j'ai trouvé un dictionnaire sur un fichier texte, je voudrais pouvoir extraire une valeur au hasard mais j'obtiens tjs la meme :/ (le premier mot de mon .txt revient a chaque fois)
public void motinconnu()
{
ligne = (int)(Math.random()*336530);//génere correctement le nombre
System.out.println(ligne);
try {
file = new File("data.txt");
reader = new LineNumberReader(new FileReader(file));
reader.setLineNumber(ligne);
System.out.println(reader.getLineNumber());
MotCache = reader.readLine();
System.out.println(MotCache);
} catch (IOException ex) {}
}
ici le soucis est qu'il me renvoit a chaque fois le premier mot de mon dico alors que le random s'execute bien :/ (nb: le 336530 vient du fait que mon fichier texte possede 336530 lignes)
Merci d'avance oour votre aide
A voir également:
- Lire un son// Lire ligne aleatoire d'un fichier texte
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Lire fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment lire un message supprimé sur whatsapp - Guide
1 réponse
1) Je ne suis pas expert en Applet, mais dans un code que j'ai sous les yeux j'ai une autre écriture que tu pourrais essayer d'adapter :
2) Plutôt que de relire ton fichier à chaque fois que tu veux un nouveau mot, tu pourrais le lire une seule fois et stocker son contenu en mémoire, ce sera plus rapide.
AudioClip sound; public void init() { sound = getAudioClip(getDocumentBase(), "sound.au"); } public void run() { sound.play(); }
2) Plutôt que de relire ton fichier à chaque fois que tu veux un nouveau mot, tu pourrais le lire une seule fois et stocker son contenu en mémoire, ce sera plus rapide.
ArrayList<String> dico; Random rd = new Random(); public void init() { dico = new ArrayList<String>(336530); Scanner sc = new Scanner("data.txt"); while (sc.hasNextLine()) dico.add(sc.nextLine()); sc.close(); System.out.println("size = "+dico.size()); } public void run() { String motCache = dico.get(rd.nextInt(dico.size()); }