Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - tiouil

Pages: [1]
1
Fenêtrage / Re : TextEntered sfml2.0 et rien
« le: Mars 31, 2013, 12:32:17 pm »
Bonjour et merci.

Effectivement ce n'était pas normal  ;D !

Mais comme il m'affichait le 1er cout pour moi le prolbème n'était pas là.
Du coup mon problème est résolu. Voici le code final de cette partie, si ca peut aider quelqu'un :
void ArchiVue::modifNomJoueur()
{
    _s_nom_joueur = _c_nouveau_nom_joueur;
    supprimeCaractereWstring(_s_nom_joueur, ' ');//Enleve les espaces en fin de chaine
}

bool ArchiVue::treatEvents()
{
     wchar_t _c_nouveau_nom_joueur[25];
     wstring _s_nom_joueur = "";
     int _nb_char_nouveau_nom = 0;

    bool result = false;
    if(_window->isOpen())
    {
        result = true;
        Event event;
        while (_window->pollEvent(event))
        {
            if(event.type == sf::Event::TextEntered)
            {
               
                    if (event.text.unicode == '\b')//Effacement -> backspace
                    {
                        if(_nb_chars_nouveau_nom > 0)
                        {
                            _c_nouveau_nom_joueur[_nb_chars_nouveau_nom-1] = ' ';
                            _nb_chars_nouveau_nom--;
                            modifNomJoueur();
                        }
                    }
                    else if (event.text.unicode < 255)//Ajout d'un caractère même accentué ou espace
                    {
                        if(_nb_chars_nouveau_nom < 24)
                        {
                            _c_nouveau_nom_joueur[_nb_chars_nouveau_nom] = static_cast<wchar_t>(event.text.unicode);
                            _nb_chars_nouveau_nom++;
                            modifNomJoueur();
                        }
                    }
                }
            }
        }
    }
    return result;
}
 

2
Fenêtrage / Re : TextEntered sfml2.0 et rien
« le: Mars 30, 2013, 09:15:14 pm »
Bonsoir et merci du temps que tu va passer pour moi.

Voici le code complet de mon traitement des évènements :
bool ArchiVue::treatEvents()
{
    bool result = false;
    if(_window->isOpen())
    {
        result = true;
        Event event;
        while (_window->pollEvent(event))
        {
            if(event.type == sf::Event::KeyPressed)
            {
                    cout<<"Espion 1 event"<<endl;
                    if (event.type == sf::Event::TextEntered)
                    {
                        cout<<"Here"<<endl;
                        if (event.text.unicode < 128)
                            cout << "Caractere : "<<static_cast<char>(event.text.unicode)<<endl;
                    }
            }
        }
    }
    return result;
}
 

Le problème c'est qu'il m'affiche que "Espion 1 event" il ne m'affiche jamais "Here" et encore moins le texte entré.

C'est normal que le "TextEntered" soit à l'intérieur du "KeyPressed" car ce n'est pas le code complet, et j'ai besoin de le laisser pour éviter qui me fasse 36 tests de if pour une action complètement différente. Ce code à la même action : c'est à dire aucune (sauf le "Espion 1 event" qui s'affiche).

Au cas où, (vu que maintenant je reviendrais que demain matin), voiçi le code complet de cette fonction :
bool ArchiVue::treatEvents()
{
    bool result = false;
    if(_window->isOpen())
    {
        result = true;
        Event event;
        while (_window->pollEvent(event))
        {
            if(event.type == sf::Event::KeyPressed)
            {
                if(event.key.code == sf::Keyboard::Escape)//Appui sur la touche Echap
                {
                    //Reactive l'ecran de veille apres fin execution du programme
                    if(bSaverActive)
                        SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, 0);
                    result = false;
                }
                if(_etat == "Demande nom")
                {
                    cout<<"Espion 1 event"<<endl;
                    bool modifNom = false;
                    if (event.type == sf::Event::TextEntered)
                    {
                        cout<<"Here"<<endl;
                        if (event.text.unicode < 128)
                            cout << "Caractere : "<<static_cast<char>(event.text.unicode)<<endl;
                    }

                }
            }
            else if((event.type == sf::Event::MouseButtonPressed) && (event.mouseButton.button == sf::Mouse::Left))//Clic gauche
            {
                if(_etat == "Menu")
                {
                    if(sourisDessus(_sprite_quitter_select))
                    {//Reactive l'ecran de veille apres fin execution du programme
                        if(bSaverActive)
                            SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, 0);
                        result = false;
                    }
                    else if(sourisDessus(_sprite_nouvelle_partie_select))
                    {
                        _etat = "Demande nom";
                    }
                    else if(sourisDessus(_sprite_charger_select))
                    {
                        _etat = "Charger partie";
                    }
                }
            }
        }
    }
    return result;
}
 

3
Fenêtrage / TextEntered sfml2.0 et rien
« le: Mars 30, 2013, 08:41:33 pm »
Bonjour, je suis passé à la SFML2.0 en début de semaine pour un tout nouveau projet. Après un soucis d'ouverture de fenêtre (le truc de base), me voila avec un soucis de texte entré pas l'utilisateur.

J'ai vraiment fait un copié/collé du code trouvé dans la doc officielle pour l'évènement TextEntered :  http://www.sfml-dev.org/tutorials/2.0/window-events-fr.php mais cela ne fonctionne pas. Il ne passe jamais le premier IF, comme ci il ne voyait pas que c'est un évènement TextEntered.

De plus quels évènements je dois intercepter (Espace, effacement) et comment car je m'embrouille entre les Keyboard:: les Event:: et le reste.

Tout cela c'est pour la saisie d'un prénom pour un jeu donc les accents seraient pas mal, les espaces quasi-obligatoires, les chiffres tolérés, et les "-" ainsi que l'apostrophe et l'underscore.

Sinon j'ai compilé moi même les dernières sources en début de semaine, Mardi 26 Mars 2013 donc.

Merci par avance (à Laurent je pense...).

4
Audio / Re : Capture et analyse d'un son -> souffle SFML et c++
« le: Septembre 24, 2012, 05:25:41 pm »
Non, ce n'est pas un devoir. A vrai dire c'est pour l'anniversaire d'une personne et comme dit précedemment, je souhaite faire souffler la personne sur la bougie pour enchaîner une animation derrière. L'anniversaire c'est le 2 Octobre, j'aimerai bien l'avoir réussi ce jour là pour lui faire une surprise.

Je n'ai pas fait la transformée de fourrier car je ne sais pas comment l'utiliser : donc j'en suis un peu à zéro. Pour ma seconde question sur l'analyse en boucle, je trouverai bien en faisant 4 tests distinct :
- Je ne fait rien
- Je parle puis je souffle
- Je parle, je souffle et je reparle
- je souffle directement

Dans les 3 derniers car l'animation devra se déclencher.

Promis ce n'est pas du tout pour l'université étant donné que j'ai finit en Juin 2012 mes études.

5
Audio / Re : Re : Capture et analyse d'un son -> souffle SFML et c++
« le: Septembre 24, 2012, 04:39:30 pm »
Tu bloques sur quoi exactement ?

Ben je sais récupérer le son mais je ne sais pas comment l'analyser.

De plus je ne sais pas comment le récuperer pour analyses en boucle.

Merci encore.

6
Audio / Capture et analyse d'un son -> souffle SFML et c++
« le: Septembre 24, 2012, 04:13:56 pm »
Bonjour, depuis quelques jours, je recherche activement (et dans l'urgence), comment analyser un son capture avec sf::SoundBufferRecorder.


En fait j'aimerais, pour un programme perso faire souffler l'utilisateur sur une bougie et donc récuperer le son en continue pour faire une action (musique, animation, ...) dès que ce son est un souffle.


D'après mes recherches, il faut que je me serve d'un sf::Int16* contenant le son pour l'analyser. Et aussi (mais ca j'en suis moins sûr) d'une fonction "Transformée de Fourier" pour détecter si le son est très aigu car apparemment cela correspond à la fréquence du son produit par un souffle.


Je ne sais donc pas du tout comment procéder pour l'analyse et en plus cela devient plus qu'urgent. Si une âme charitable passe par là et peut me donner la solution (et même plus si affinité.... un petit bout de code ...).


Merci par avance à tous.


ps : Je code en c++ sous windows (EDI -> CodeBlocks)

Pages: [1]