IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Appel d'une classe dans Bataille navale


Sujet :

Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Appel d'une classe dans Bataille navale
    Salut à tous,

    Alors avec des amis on a développé un programme java pour un projet il s'agit d'un touché coulé, et j'aimerais y ajouter une musique à l'ouverture du programme.

    J'ai réussis à faire le programme qui joue ma musique mais je ne sais tout bêtement pas comment l'inclure dans le porgramme final. Genre avec un starf abc=new starf ou je ne sais pas quoi ... :')
    Merci d'avance de l'aide
    Je suis nouveau sur ce site donc je ne sais pas trop comment ça fonctionne je vous met mon programme musique et le debut de mon programe final :

    Programme son :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    import java.io.File;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.Clip;
     
    public class starf {
     
    	public static void main(String[] args)
    	{
    		File Clap = new File ("abc.WAV");
    		PlaySound(Clap);
    	}
     
    	static void PlaySound(File Sound){
     
    		try{
    			Clip clip = AudioSystem.getClip();
    			clip.open(AudioSystem.getAudioInputStream(Sound));
    			clip.start();
     
    			Thread.sleep(clip.getMicrosecondLength()/1000);
     
    		}catch(Exception e)
    		{
     
    		}
    	}
    }
    .................................
    Programme touch coulé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    import java.io.File;
    	import javax.sound.sampled.AudioSystem;
    	import javax.sound.sampled.Clip;
    	import java.util.Scanner;
     
    public class JeuBatailleNavale {
     
     
     
    	public static void main (String args[]) {
     
     
    		Scanner sc = new Scanner(System.in);
     
     
     
    		System.out.println();
    		System.out.println();
    		System.out.println("                   !! TOUCHE COULE !! "); 
    		System.out.println();
    		System.out.println();
    		System.out.println(" Mode de jeu ?"); //Il y a deux mode de jeux, aux joueurs de choisir 
    		System.out.println(" 	|1| - 2 joueurs 			|2| - Solo ");
     
    		boolean f1 = false; // il faut verifier que le joueur rentre bien des informations traitablent 
    		int Type;
     
    		do{
    			Type = sc.nextInt();	 // On demande quel type de jeu le(s) joueur(s) veut jouer  
     
    			if(Type == 1 || Type == 2)
    			f1 = true;
     
    			if(f1 == false){
    				System.out.println();
    				System.out.println(" Veuillez rentrer 1 ou 2");
    			}
    		}while(f1 == false);
     
    		sauterDesLignes();
     
     
    		if ( Type == 1){
     
    			//On explique les règles aux joueurs 
    			System.out.println();
    			System.out.println(" Regles : ");
    			System.out.println(); et après le programme continu ...
    Voila
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai Avatar de EmotionFox
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Services à domicile

    Informations forums :
    Inscription : Mai 2017
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Lors du lancement du son tu fais un Thread.sleep() ce qui risque si ton programme tourne sur le même thread d'arrêter également ton programme, je n'est jamais eu à faire des sons pour le moment mais je sais qu'il existe beaucoup de librairie qui te permettrais de jouer un sons facilement sinon j'ai vue également beaucoup d'exemple sur Google et j'imagine qu'un peu de recherche pourrait t'être bénéfique.

    Ps: Il ne peut y avoir qu'une classe principale dans un programme, il faudrait d'abord commencer par définir un constructeur dans ta classe Starf comme-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public class starf {
     
    public starf(String path)
    {
    File Clap = new File (path);
    PlaySound(Clap);
    }
     
    public void PlaySound(File Sound){
     
    try{
    Clip clip = AudioSystem.getClip();
    clip.open(AudioSystem.getAudioInputStream(Sound));
    clip.start();
     
    Thread.sleep(clip.getMicrosecondLength()/1000);
     
    }catch(Exception e)
    {
     
    }
    }
    }
    puis en suite il suffirait d'instancier ta classe comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Starf starf = new Starf("abc.wav")
    et vue que le son ce joue dés l'instanciation ça devrait fonctionner.

    Ps2: Inutile d'envoyer plusieurs System.out.println("") pour faire des retours à la ligne, un simple System.out.println("\n \n Test") ou System.out.println("\n\nTest") devrait faire l'affaire (\n permettant de faire un retour à la ligne).

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Dacc merci bah je vais tester ça

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    C'est bizzare parce que quand je le compile tout va bien mais après dans le terminal il me dit de definir une classe genre public static void main String ..
    Erreur : la méthode principale est introuvable dans la classe starf, définissez la méthode principale comme suit :
    public static void main(String[] args)
    ou une classe d'applications JavaFX doit étendre javafx.application.Application
    Appuyez sur une touche pour continuer...

    J'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import java.io.File;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.Clip;
     
     
    	public class starf {
     
    public starf(String starf)
    {
    File Clap = new File ("abc.wav");
    PlaySound(Clap);
    }
     
    public void PlaySound(File Sound){
     
    try{
    Clip clip = AudioSystem.getClip();
    clip.open(AudioSystem.getAudioInputStream(Sound));
    clip.start();
     
    Thread.sleep(clip.getMicrosecondLength()/1000);
     
    }catch(Exception e)
    {
     
    }
    }
    }

  5. #5
    Membre à l'essai Avatar de EmotionFox
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Services à domicile

    Informations forums :
    Inscription : Mai 2017
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    C'est normal ta classe Starf ne doit pas être la classe principale de ton projet mais elle l'était avant, sous éclipse tu doit cliquer sur la petite flèche noir (du menu déroulant) à coté de la grosse flèche blanche sur fond vert qui te permet de lancer ton programme, ensuite il faut aller dans "Run Configurations" puis cliquer sur "Starf" (j'imagine, ou sur "JeuBatailleNavale") puis là ou il y a marqué "Main Class:" suivis d'un champ de texte clique sur "Search..." puis choisis ta classe "JeuBatailleNavale" et relance ton programme.

    Ps: Je vois que n'utilise pas le string starf que tu définie via ton constructeur dans ta classe Starf, ce qui auras pour effet de ne jamais pouvoir changer le son joué. Tu devrait plutôt faire comme dans mon exemple en haut si jamais tu a un jour besoin de lancer un autre son.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bah pour le son ça sera un son fixe que je ne changerais jamais.
    Ouais je vois mais du coup je suis sur geany du coup je ne sais pas trop comment l'inclure , je suis désolé d'être lourd comme ça mais je ne m'y connais pas beaucoup merci de l'aide

  7. #7
    Membre à l'essai Avatar de EmotionFox
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Services à domicile

    Informations forums :
    Inscription : Mai 2017
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Alors je vais devoir passer la main à quelqu'un qui utilise ce logiciel parce que je ne le connais pas du tout et je n'ai aucune idée de la manière pour procéder à un changement de classe principale

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    D'acord merci quand même !

  9. #9
    Membre à l'essai Avatar de EmotionFox
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Services à domicile

    Informations forums :
    Inscription : Mai 2017
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Pas de quoi et désolé. Dans le pire des cas il est toujours possible de copier coller tes classes dans un nouveau projet

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu peux très bien jouer ton son en appelant la méthode main que tu avais faite dans ton code initial :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class JeuBatailleNavale {
     
    	public static void main(String args[]) {
     
    		starf.main(args);
     
    		Scanner sc = new Scanner(System.in);
     
                   /* ... reste du code ...*/
    Comme les arguments ne sont pas utilisés dans la méthode de la classe sarf, tu peux aussi les supprimer et appeler la méthode avec un nom qui a plus de sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class starf {
     
    	public static void playSound()
    	{
    		File Clap = new File ("abc.WAV");
    		PlaySound(Clap);
    	}
     
            /* ... reste du code ...*/
    Seulement, comme dit par EmotionFox, le sleep va faire que le son pas se jouer et le menu apparaitra ensuite. Cela peut être voulu, ou pas.
    Mais cette attente est nécessaire pour que le son se joue complètement.

    Tu peux par exemple faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void main(String args[]) {
     
                   System.out.println();
    		System.out.println();
    		System.out.println("                   !! TOUCHE COULE !! ");
    		System.out.println();
    		System.out.println();
     
    		starf.playSound();
    ainsi tu auras une musique d'ouverture, bloquante, mais avec au moins un texte affiché.

    Autre solution, l'exécuter dans un thread. Il y a juste à ajouter à starf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static void playSoundInThread()
    	{
    		new Thread(starf::playSound).start();
    	}
    et dans JeuBatailleNavale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void main(String args[]) {
     
    		starf.playSoundInThread();
     
                   System.out.println();
    		System.out.println();
    		System.out.println("                   !! TOUCHE COULE !! ");
    		System.out.println();
    		System.out.println();
    Geany est juste un éditeur de texte avec quelques fonctionnalités avancées, et qui ne gère pas de projet il me semble. Comme tu n'utilises pas de package dans tes classes, il te suffit de mettre les 2 fichiers .java dans un même dossier. Les .class, obtenues à la compulation, seront également dans un même dossier, et pour exécuter en ligne de commandes, il suffira d'indiquer que le classpath (l'endroit où Java va chercher les classes de ton programme) soit le dossier en question. Si tu lances la commande en étant dans le dossier où se trouve les .class, il suffira de faire java -cp . JeuBatailleNavale. -cp pour classpath, . pour dire que le dossier de classpath est le dossier courant, JeuBatailleNavale la classe avec la méthode main à exécuter.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Appel d'une classe dans un JavaBean
    Par lamur dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/10/2010, 15h58
  2. Appel d'une classe dans une jsp
    Par _ash_ dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 05/07/2009, 13h56
  3. Appel d'une classe dans un autre répertoire
    Par frites.saucisse dans le forum Général Python
    Réponses: 2
    Dernier message: 08/07/2008, 16h05
  4. appel d'une classe dans une fonction
    Par fraisa1985 dans le forum Général Java
    Réponses: 7
    Dernier message: 27/03/2008, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo