Forum de la communauté SFML

Aide => Audio => Discussion démarrée par: remi200 le Octobre 04, 2014, 10:15:34 pm

Titre: problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 04, 2014, 10:15:34 pm
Bonjour, j'ai un de sons qui veut pas lancer depuis un Objet.
le programme compile normalement mais quand dans le programme, le son doit etre joué, j'ai un message d'erreur dans la console qui dit :

An internal OpenAl call failed in Sound.cpp (73) : AL_INVALID_NAME, an unaceeptable name has been specified.

Comment faire pour résoudre le problème?
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Laurent le Octobre 04, 2014, 10:38:36 pm
Et qu'est-ce qu'on est censé pouvoir te répondre avec si peu d'informations ?
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 04, 2014, 10:51:56 pm
tu veux quoi comme information?
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 04, 2014, 10:58:38 pm
le header de ma classe Arme
class Arme
{
protetected:

sf::Sound m_sonArme;
sf::SoundBuffer m_bruitArme;
public:
void tirer();
 
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 04, 2014, 11:25:30 pm
une chose que je comprend pas.
j'ai fait une classe Personnage et une classe Arme (pistolet).

quand je lance ma méthode tirer de la classe Arme ex:
revolver.tirer();
 
le son ce lance parfaitement.
quand j'utilise une pointeur pour que le personnage utilise l'arme, la fonction fonctionne mais pas le son.

le header de ma classe personnage est :
class Personnage:
{
protected:
Arme *m_arme;
public:
void tirerAvecArme();
 

le fichier source de ma classe Personnage est :
void Personnage::tirerAvecArme()
{
m_arme->tirer();
std::cout << "le cout fonctionne le message s'affiche bien mais pas le son j'ai l'erreur précédent citer qui apparait " << std::endl;
}
 
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Laurent le Octobre 05, 2014, 09:14:02 am
C'est toujours insuffisant. Là on n'a que des déclarations et des bribes de functions qui ne font qu'appeler d'autres fonctions. Il est évident qu'il n'y a aucune erreur dans ce que tu nous montres.

Il faut que tu écrives un code complet et minimal qui reproduit le problème.

http://sscce.org/
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 05, 2014, 10:32:10 am
le Header de ma classe Arme au complet:

#ifndef ARME_H_INCLUDED
#define ARME_H_INCLUDED

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>

#include "Behavior.h"

class Arme : public Behavior
{
protected:
    std::string m_noms;
    sf::Sound m_sonArme;
    sf::SoundBuffer m_bruitArme;

public:
    Arme();
    void tirer();

};

#endif // ARME_H_INCLUDED

 

le fichier source de ma Clase Arme:

#include <iostream>

#include "Arme.h"

using namespace sf;

Arme::Arme()
{
    m_bruitArme.loadFromFile("sons/bruitage/gunshot5.wav");
    m_sonArme.setBuffer(m_bruitArme);
    std::cout << "chargement son dans objet " << std::endl;

}

void Arme::tirer()
{
    std::cout << "le pistolet a tirer " << std::endl;
    m_sonArme.play();
}


 

et ma fonction ecranJeux :
#include <iostream>
#include <SFML/Graphics.hpp>

#include "ecranJeux.h"
#include "../Class/Behavior.h"
#include "../Class/Personnage.h"
#include "../Class/CurseurSouris.h"
#include "../Class/Arme.h"

using namespace sf;

int ecranJeux()
{
    //creation de la la fenetre fenetreJeux
    RenderWindow fenetreJeux(VideoMode(1280,720),"Aventureland");

    // chargement des texture
    Texture viseurPistoler;
    viseurPistoler.loadFromFile("images/sprite/viseur.png");
    viseurPistoler.setSmooth(true);

    // chargement des BufferSon



    // création des objet et parametrage
    Arme pistolet;

    Personnage jrod;
    jrod.setArme(pistolet);

    CurseurSouris viseur;
    viseur.setTexture(viseurPistoler);
    viseur.setOrigin(37, 37);
    viseur.setColor(Color::Red);


    //creation de objet evenement
    Event event;
    while(fenetreJeux.isOpen())
    {

        while(fenetreJeux.pollEvent(event))
        {
            switch(event.type)
            {
            case Event::Closed:
                fenetreJeux.close();
                break;
            case Event::MouseMoved:
                viseur.updatePosition(fenetreJeux);
            case Event::MouseButtonPressed:
                if(event.mouseButton.button == Mouse::Left)
                    pistolet.tirer();
                if(event.mouseButton.button == Mouse::Right)
                    jrod.tirerAvecArme();

            default :
                break;
            }

        }
       

        fenetreJeux.clear(Color::Blue);
        fenetreJeux.draw(viseur);
        fenetreJeux.display();
    }


    return 0;
}

 
le ficher source de ma classe Personnage :
void Personnage::tirerAvecArme()
{
    std::cout << "le personnage va essayer de tirer " << std::endl;
    m_arme->tirer();
}
 

le header complet de ma classe Personnage :
#ifndef PERSONNAGE_H_INCLUDED
#define PERSONNAGE_H_INCLUDED

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <string>

#include "Behavior.h"
#include "Arme.h"

class Personnage : public Behavior
{
protected:
    std::string m_noms;
    Arme *m_arme;
public:
    Personnage();
    void setArme(Arme seletionArme);
    void tirerAvecArme();

 


};

#endif // PERSONNAGE_H_INCLUDED

 

Si il manque des élément dit lequel, je vous les fournirait .
quand je clic directement avec le clic gauche de la souris tout passe comme prévu mais pas avec le clic droit.
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Laurent le Octobre 05, 2014, 11:10:56 am
Tu as lu le lien que je t'ai donné ? ...
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 05, 2014, 11:23:48 am
non, pas encore.
je vais le lire.
t'as reperer le problème?
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Laurent le Octobre 05, 2014, 02:16:14 pm
Tu étais censé le lire avant de poster du code... Donc non, je n'ai pas encore regardé, y a trop de code sans rapport avec le problème.
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 05, 2014, 03:56:06 pm
j'ai lu le liens que tu ma envoyer.
j'ai modifier quelque ligne de code qui n'avait aucun rapport avec le problème.

j'espere que tu trouvera une solution. vu moi je comprend pas, la méthode marche dans les deux cas, je les tester avec un cout. mais le son veux pas lancer avec jrod.tirerAvecArme(); la fonction marche mais le son ne se joue pas et j'ai un message d'erreur dans la console qui dit :

An internal OpenAL call failed in Sound.cpp (73) : AL_INVALID_NAME, an uncacceptable name has been specified

pas contre avec pistolet.tirer(); ça marche();
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Laurent le Octobre 05, 2014, 10:18:38 pm
Tu fais une copie de Arme dans Personnage::setArme. Mais ta classe Arme n'implémente pas de constructeur par copie, et celui généré par défaut par le compilateur n'est pas correct dans ce cas.
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 06, 2014, 12:10:07 am
j'ai modifier la méthode Personnage::setArme
comme ceci :

void Personnage::setArme(Arme &selectionArme)
{
    m_arme = &selectionArme;
}
 

ça marche.
Merci pour votre aide.

remarque: j'ai remarquer que quand je froller le viseur (souris) au bord gauche de ma fenêtre, l'arme se déclencher automatiquement sans appuie sur les bouton de la souris.
Comment cela ce fait ?
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Laurent le Octobre 06, 2014, 08:12:43 am
Citer
ça marche.
Tu n'as fait que contourner le problème. Il réapparaîtra à la prochaine copie d'une instance de la classe Arme, puisque le constructeur par copie de celle-ci n'est toujours pas correct (ou désactivé).

Citer
remarque: j'ai remarquer que quand je froller le viseur (souris) au bord gauche de ma fenêtre, l'arme se déclencher automatiquement sans appuie sur les bouton de la souris.
Comment cela ce fait ?
Tu as oublié des "break" dans le switch de ta boucle d'évènements.

N'hésite pas à utiliser ton debugger, c'est fait pour ça ;)
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 06, 2014, 11:33:52 am
comment faire un constructeur de copie?
serait pas t-il plus judicieux d'envoyer en paramètre les référence de objet?

j'ai rajouter le "break" qui manqué. mon arme ne tire pu tout seul.
Titre: Re : Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: TheKingArthur le Octobre 06, 2014, 09:42:56 pm
 Pour faire un constructeur de copie tu fait comme un constructeur "normal" mais qui prend en paramètre un objet du même type.

Exemple :

class MyClass
{

public:

MyClass(int attribut)
MyClass(MyClass myclass &) // Constructeur de copie

private:
int attribut;
//...

};

 


mon arme ne tire pu tout seul.
Mon arme ne tire plus* toute* seule*.

Arrête de faire des fautes s'il te plait !!! :-\
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 09, 2014, 06:47:36 pm
et dans le fichier source, je met quoi?
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Laurent le Octobre 09, 2014, 07:02:47 pm
Plutôt que de demander du code à copier / coller, que tu ne comprendras pas complètement, tu ne préfères pas apprendre et essayer par toi-même ? :-\
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 09, 2014, 08:19:03 pm
bien sur, je suis d'accord avec toi. je n'ai jamais fait de constructeur de copie. d'après que j'ai compris :
quand je passe un objet dans une fonction, il en fait une copie en utilisant le constructeur de copie. mais comme je n'est pas de constructeur de copie, le compilateur en fait un automatique avec des erreur.

cela est t'il juste?

je n'ai pas encore compris le fonctionnement .
a tu un liens d'un cours ou c'est bien expliquer avec des exemple?

ps: j'ai commencer a apprendre la programmation sur le site de openclassroom.
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: TheKingArthur le Octobre 09, 2014, 09:07:44 pm
C'est juste quand au cours celui d'open classroom est très bien.

Mais si tu veux plus d'infos va voir sur cplusplus.com : http://www.cplusplus.com/articles/y8hvOpDG (http://www.cplusplus.com/articles/y8hVOpDG)
Titre: Re : Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Eho le Octobre 09, 2014, 10:09:01 pm
C'est juste quand au cours celui d'open classroom est très bien.
pour apprendre Qt, mais pas pour apprendre le C++ moderne.
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Laurent le Octobre 09, 2014, 11:03:24 pm
Un livre (et un de ceux recommandés sur stackoverflow). Internet c'est bien pour la suite, mais pas pour apprendre les bases d'un langage aussi complexe.
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 10, 2014, 09:41:37 am
Citer
Mais si tu veux plus d'infos va voir sur cplusplus.com : http://www.cplusplus.com/articles/y8hvOpDG

La page est non  trouvé, j'ai une erreur 404.
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: remi200 le Octobre 10, 2014, 09:46:59 am
Citer
Un livre (et un de ceux recommandés sur stackoverflow). Internet c'est bien pour la suite, mais pas pour apprendre les bases d'un langage aussi complexe.

Tu conseil quel livre?
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: Laurent le Octobre 10, 2014, 12:05:56 pm
Citer
Tu conseil quel livre?
Je ne sais pas, c'est pour ça que je t'ai aiguillé vers stackoverflow. Il y a un sujet dédié au choix de livre de C++, il ne devrait pas être dur à trouver.
Titre: Re : problème de lancement du sons quand lancer depuis un Objet
Posté par: TheKingArthur le Octobre 11, 2014, 01:02:27 am
Citer
Mais si tu veux plus d'infos va voir sur cplusplus.com : http://www.cplusplus.com/articles/y8hvOpDG

La page est non  trouvé, j'ai une erreur 404.

Cherche "copy constructor cplusplus" sur google tu devrait trouver.