Lire un son// Lire ligne aleatoire d'un fichier texte

Fermé
Freedumz Messages postés 92 Date d'inscription mercredi 3 novembre 2010 Statut Membre Dernière intervention 27 septembre 2015 - 6 janv. 2013 à 12:21
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 6 janv. 2013 à 15:05
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
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
6 janv. 2013 à 15:05
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 :

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());
}
0