Bonjour à tous les zérOs!!
J'aurai besoin d'aide par rapport à f-mod.
En fait, je commence à programmer quelques jeux en SDL.
( pas du haut niveau, hein! J'en suis encore à faire des pendus et des "marios-like" ^_^)
Jusque là tout ce passe bien.
Mais c'est au moment d'incorporer de la musique et des sons que ça se gâte :
En effet, je programme en C++, et j'essaie dans la mesure du possible de le faire dans un esprit de POO.
Ce qui fait que j'ai plusieurs classes et fonctions.
Et le problème, c'est que si je suis dans ma fonction principale, par exemple,
et que j'initie f-mod et lance une musique, eh bien, lorsque j'appelle une fonction
(par exemple maClasse.BougerPersonnage(paramètres)), une fois dans la fonction, plus de musique!!
Et une fois de retour dans la fonction appellante, plus de musique non plus!!
Et ce, même si je met en pause avant d'appeller mafonction.
Cela me pose donc bien des problèmes.
J'avais aussi essayer de faire une fonction qui joue les sons :
void maFonctionPourJouerSons(nomMusiqueAJouer);
Seulement, dès le retour de la fonction (qui est presque instantané),
on entend plus rien!!
Voilà...
Donc si quelqu'un peut m'aider, merci d'avance !! ^_^
Mais c'est au moment d'incorporer de la musique et des sons que ça se gâte :
En effet, je programme en C++, et j'essaie dans la mesure du possible de le faire dans un esprit de POO.
Si ce n'est pas déja le cas, utilise plutôt fmodEx, qui elle a déja une interface en c++.
Citation :
Et le problème, c'est que si je suis dans ma fonction principale, par exemple,
et que j'initie f-mod et lance une musique, eh bien, lorsque j'appelle une fonction
(par exemple maClasse.BougerPersonnage(paramètres)), une fois dans la fonction, plus de musique!!
[...]
J'avais aussi essayer de faire une fonction qui joue les sons :
void maFonctionPourJouerSons(nomMusiqueAJouer);
Seulement, dès le retour de la fonction (qui est presque instantané),
on entend plus rien!!
Pas normal ! je n'ai jamais eu ce problème..
du code ?
Pour la version C++ de f-mod, merci de me le dire car, effectivement, je ne savait pas qu'elle existait, je la télécharge dès que possible (je suis en 56k avec un forfait ridicule ...Oui, ça existe encore...malheureusement...)
Pour le code, voilà :
Lorsque j'appèle une fonction d'une autre fonction (ici main), je suis obligé, comme ici, de recommencer la lecture de la musique...
Forcément, si tu fermes fmod à la fin de la fonction, comment veux-tu que la musique continue à être jouée après ?
Citation :
Et de plus, je suis obligé de re-initialiser f-mod dans la fonction appellée si je veux y jouer un son... Meme si je passe "musique" en paramètre...
Non c'est faux ( j'viens de faire une petite batterie de test histoire de m'en assurer )
Ta conception est assez loin de l'esprit POO : On voit une grosse fonction qui se charge elle même de tout initialiser, puis une classe un peu fourre tout (Options) qui gère en même temps l'affichage, le son.. tout ça dans une programmation plus procédural qu'objet finalement.
J'te conseillerais plutôt d'avoir une class spécialisé dans le son, qui initialise fmod dans son constructeur, qui possède des FSOUND_SAMPLE* comme attributs privé ( chargés ou non dans le constructeur suivant tes besoins.. ) Tu vois l'idée ?
voila la structure a utiliser:
début de main
- initialiser fmod
- faire des trucs
- appeler une fonction qui joue un son (cette fonction NE FERME PAS FMod)
- faire des trucs
-fermer fmod
exit(0);
fin de main
tu veux utiliser un son qui est definit dans le main...
1) pourquois char* nomSon???
pourquois pas FSOUND_SAMPLE *nomSon
2)encore mieux pourquois tu ne ferais pas...
class SON {
FSOUND_SAMPLE *m_son; //pointeur de type FSOUND_SAMPLE public: void debutFmod(herts=44100,canaux=32);//je ne souvien plus trop mais tu pouras me corriger lol void chargerSon(constchar *fichier); void jouerSon();//plus de parametre car tu utilisera m_son void effacerSon();//FSOUND_Sample_Free(m_son); void finFmod();// FSOUND_Close(); };
dans ton main il te suffira de mettre SON son[5](exemple)
//seul UNE variable ouvre Fmod,ferme Fmod (et peut servir de son)(j'utiliserais son[0] pour cette noble tache
Utiliser une classe, c'est l'idée que j'ai déja proposé plus haut.
Par contre quit à utiliser un tableau (mieux: un vecteur), mieux vaut en faire un de FSOUND_SAMPLE dans la classe, plutôt qu'un tableau de classe pour chaque son .. ça m'semble plus raisonnable non ?
c'est ce que j'ai fais dans l'exemple (mais si il veut vraiment utiliser un autre pointeur il ne faut pas mettre char* nomSon mais FSOUND_SAMPLE*
(j'ai l'impression de me repeter )
de toutes façon il n'y a pas 36 solutions ici avec les class donc on se repete un peu...
Merci beaucoup pour vos conseils que je vais m'empresser de suivre !! ^_^
Problème avec f-mod pour lire les sons
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
* Un wrapper C++ pour sqlite * Une alternative a boost units