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 - yhu420

Pages: [1] 2 3 ... 5 Suivante »
1
Général / Re : Problème de collisions
« le: Août 28, 2016, 03:02:24 pm »
Ok, désolé pour la réponse plutôt lente, mais j'ai finalement trouvé la source du problème :)

Voilà la fonction corrigée:
//this will check if any point of second is inside first
bool shapesCollideCustom(const sf::ConvexShape & first, const sf::ConvexShape & second)
{
        for (std::size_t i = 0; i < first.getPointCount(); i++)
        {
                //Point A = tab[i];
                sf::Vector2f B;
                if (i == first.getPointCount() - 1)  // si c'est le dernier point, on relie au premier
                        B = first.getTransform().transformPoint(first.getPoint(0));
                else           // sinon on relie au suivant.
                        B = first.getTransform().transformPoint(first.getPoint(i + 1));

                const sf::Vector2f A(first.getTransform().transformPoint(first.getPoint(i)));

                //vector D = vector AB
                const sf::Vector2f D(getVectorTwoPoints(A, B));

               
                for (std::size_t j = 0; j < second.getPointCount(); j++)
                {
                        const sf::Vector2f T(getVectorTwoPoints(A, second.getTransform().transformPoint(second.getPoint(j))));
                        if (D.x*T.y - D.y*T.x < 0)
                        {
                                if (j == second.getPointCount() - 1)
                                        return false;
                        }
                        else
                        {
                                j = second.getPointCount();
                        }
                }
        }
        return true;
}

avec

sf::Vector2f inline getVectorTwoPoints(const sf::Vector2f& A, const sf::Vector2f& B)
{
        return sf::Vector2f(B.x - A.x, B.y - A.y);
}

2
Général / [Résolu]Problème de collisions
« le: Août 19, 2016, 05:27:26 pm »
Bonjour tout le monde,

Je viens d'implémenter une fonction pour gérer les collisions entre deux formes convexes. Après deux heures de relecture, je ne parviens toujours pas à trouver le problème, pourtant je suis certain que ça ne tient pas à grand chose.
La fonction suivante renvoie systématiquement 'false'.

bool shapesCollideCustom(const sf::ConvexShape & first, const sf::ConvexShape & second)
{
        //https://openclassrooms.com/courses/theorie-des-collisions/formes-plus-complexes
        //article is in french, but is really helpful
        //Way easier and faster than the SAT everyone seem to talk about

        const std::size_t pointCount1 = first.getPointCount();
        const std::size_t pointCount2 = second.getPointCount();

        for (std::size_t i = 0; i < pointCount2; i++)
        {
                //Vector AB is vector point[i]point[i+1]
                //Here we are setting point A and point B

                //Point A = tab[i];
                sf::Vector2f B;
                if (i == pointCount2 - 1)  // si c'est le dernier point, on relie au premier
                        B = second.getTransform().transformPoint(second.getPoint(0));
                else           // sinon on relie au suivant.
                        B = second.getTransform().transformPoint(second.getPoint(i + 1));

                //vector D = vector AB
                const sf::Vector2f D(getVectorTwoPoints(second.getTransform().transformPoint(second.getPoint(i)), B));

                //Vector T = vector AP
                for (std::size_t j = 0; j < pointCount1; j++)
                {
                        const sf::Vector2f T(getVectorTwoPoints(second.getTransform().transformPoint(second.getPoint(i)), first.getTransform().transformPoint(first.getPoint(j))));

                        if (D.x*T.y - D.y*T.x < 0)
                                return false;  // un point à droite et on arrête tout.
                }
        }
        return true;  // si on sort du for, c'est qu'aucun point n'est à gauche, donc c'est bon.
}

Je vous remercie d'avance pour vos suggestions!  :D

3
Général / Re : Eviter 'Ne réponds pas'
« le: Juin 20, 2016, 09:29:19 pm »
Ok, merci, j'ai contourné le problème en utilisant ce code (lui aussi, peu orthodoxe):
        std::cout << message << std::endl;
        std::cout << "Press enter to continue.." << std::endl;
        while (!sf::Keyboard::isKeyPressed(sf::Keyboard::Return))
        {
                point_to_window->pollEvent(*point_to_event);
                point_to_window->display();
                std::this_thread::sleep_for(std::chrono::milliseconds(10));
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(100));

Merci encore pour ton aide  :D

4
Général / [Résolu]Eviter 'Ne réponds pas'
« le: Juin 20, 2016, 03:51:02 pm »
Bonjour,
Je suis en train de développer un petit projet, et j'autilise souvent une méthode qui ressembe à cela:
void ErrorManager::displayImportantConsole(const std::string& message)
{
        std::cout << message << std::endl;
        std::cout << "Press a key to continue.." << std::endl;
        while (!std::cin.get())
        {
                point_to_window->pollEvent(*point_to_event);
                point_to_window->display();
        }
        fflush(stdin);
}

La boucle a pour seul rôle de faire en sorte que la fenêtre continue de répondre en même temps que la console... en vain.
Je sais bien que ce n'est pas la manière conventionnelle d'utiliser SFML, mais là je cherche juste à comprendre ce qu'il se passe pour la fenêtre.
Ma connaissance sur la gestion des évènements n'est sûrement pas assez grande pour pouvoir résoudre ce problème, alors je compte sur vous  ;D
Merci

5
Général / Conseils pour collisions
« le: Avril 21, 2016, 09:03:26 pm »
Bonjour,
J'aurai besoin d'aide sur un problème de collision.
J'aimerai pouvoir déterminer si oui ou non deux convexshapes sont en collision, ou un convexshape et un floatrect.

Un personnage a une hitbox en forme de triangle ( un convexShape ), comment faire pour tester si cette convexshape est en collision avec soit une bounding box, soit une autre convexshape?

Je sais que pour un drawable, on a généralement la méthode intersects, mais elle ne permet que de comparer deux floatrects.

Si vous avez besoin d'informations supplémentaires ou si je n'ai pas été clair, dites le moi  ;D

Merci

6
Merci de vos conseils :)
Je recommencerai des recherches dès que j'en aurai le temps !

7
Général / Re : Microsoft visual studio "unable to start program.."
« le: Mars 23, 2015, 08:58:28 pm »
As-tu des erreurs de build? Aussi, Le fichier spécifié est introuvable." Y a t il un fichier .exe dans ton dossier de projet? En gros c'est ton IDE qui le trouve pas ou l'exe qui n'est pas généré?

8
Général / Re : Problème de rotation
« le: Mars 05, 2015, 08:48:55 pm »
Je ne pense pas pouvoir être très utile, mais pense peut-être à effectuer plusieurs tests, quant au point d'origine que tu donnes. Utilises-tu "setRotation" ou "rotate"?
Aussi, pourrait-on avoir un peu de code?
Merci

9
Général / Re : Impossible de compiler
« le: Février 27, 2015, 03:49:00 pm »
Avant j'ai essayé de compiler SFML moi même avec windows 7 64bits en utilisant codeblocks, j'ai tout essayé, j'y ai passé des heures sans jamais y arriver.
J'ai finalement fini par télécharger VS 2012, très volumineux, mais au moins avec lui, j'ai très rarement eu de pépin. Je te souhaite quand même bonne chance pour ton problème, je ne vois pas de là où ça pourrait venir..

10
Projets SFML / [Recherche de devs, graphistes]Projet de de jeu type shmup
« le: Février 27, 2015, 12:01:46 am »
Bonjour à tous,
Cela fait un bout de temps que j'avais en tête de programmer un  jeu à l'aide de SFML. Il se trouve maintenant que j'ai fini les bases du jeu, soit le menu, le shop, les crédits, etc, et je me rends compte que j'aurais sûrement besoin d'aide!
Le jeu n'étant pas vraiment commencé, la part d'un volontaire dans l'équipe serait assez importante.
J'ai bien dit volontaire, car en effet, je ne souhaite pas dépenser 1 centime pour la conception de ce jeu! Si je souhaite créer un jeu c'est pour le plaisir (comme c'est mignon  ::) )... et aussi pour faire bien sur mon futur CV, en effet je suis jeune (17 ans) et avoir développé un jeu avant même d'avoir son bac semble pouvoir être un point positif.
Je n'ai pas vraiment d'idée fixe en tête, j'ai donc besoin d'un copilote, voire pilote pour mener à bien ce projet.
Pas besoin d'être un malade de C++ pour pouvoir oser m'envoyer un PM, j'avoue être également un galèrien de temps à autres, je suis encore en train d'apprendre. Je tiens aussi à noter qu'un graphiste serait également une aide dont je ne pourrais me passer.
Bref, si vous êtes intéréssé(e)(s)  ;D envoyez moi un PM ou commentez, ça me ferait super plaisir!
Merci d'avance

PS: Merci aussi de m'indiquer si ce topic n'est pas à sa place, ou si ce forum est inapproprié!

11
Général / Re : Problème .. inconnu ?
« le: Février 22, 2015, 06:56:39 pm »
Merci beaucoup de ta réponse plutot vague, en rebuildant en mode debug mon programme, j'ai trouvé la source de mon problème! C'est tout simplement que j'avais commencé mon projet avec SFML 2.1, j'ai mis a jours SFML vers 2.2, mais j'ai oublié de remplacer les DLL!
Merci à toi pour ton aide, encore une fois  8)

12
Général / Re : Saccades au démarage
« le: Février 21, 2015, 05:45:14 pm »
Si l'exe marche correctement en dehors de ton compilo, a priori ça doit venir de ca.. Essaye peut être de modifier le "working directory" de ton jeu, et de mettre a jour ton ide. Si possible, essaye de remplacer sfml 2.1 par la version 2.2, on sait jamais, il y a eu beaucoup de bugfixes..

13
Général / [Résolu]Problème .. inconnu ?
« le: Février 21, 2015, 05:41:31 pm »
Bonjour tout le monde,
Je n'arrive pas à comprendre la source de mon problème, tout simplement, ce n'est pas même forcément lié à SFML, je n'ai aucune idée d'où l'erreur vient...
Vous remarquerez que j'ai pété un plomb avec le debugger, et que j'ai donc débuggé comme un bleu à coup de cerr  ;D. Assez parlé, voila le code
//Dans Menu.hpp

virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const
        {
                if(isAtMain)
                {
                        //...
                        std::cerr << "0 - mainvessel exists : " << (bool)mainVessel;
                        target.draw(*mainVessel);
                        std::cerr << "1";
                        target.draw(*Play);
                        std::cerr << "2";
                        //...

protected:
FullSprite *mainVessel;
};
 
Dans fullsprite.hpp
class FullSprite : public sf::Drawable //Used to be a struct, that's why it is not, well, traditional
{
public:
        virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const
        {
                target.draw(*m_sprite); //m_sprite est un sf::sprite
                std::cerr << "sprite exists: " << (bool)m_sprite;
        }
 

Pour expliquer tout ca: la console affiche "mainvessel exist: 1", ce qui signifie que l'instruction executée est bien celle désirée. L'instruction suivante ( target.draw(*mainVessel);) va être exécutée. Pour voir plus en détail les instructions suivantes, il faut donc se rendre dans la méthode draw de FullSprite. Les deux lignes qui constituent cette méthode sont vien exécutées, la console indique que le sprite existe.
A présent, la prochaine instruction qui doit être exécutée est
std::cerr << "1";
si je ne me trompe pas, pas d'erreur jusqu'ici, non?
Eh bien non, mon programme crashe entre les deux dernières instructions, visual studio m'indiquant en chemin :
Aucun symbole n'a été chargé: /*bla bla*/
Emplacement d'origine: C:\Users\monNom\Projets\SFML\DatBlaster\Release\sfml-graphics-2.dll

Je trouve cela étrange puisque j'ai déjà réussi à faire tourner mon programme sans soucis, les modifications dernières n'ayant aucun rapport avec cette partie du code.
Je suis sous Windows 7 x64 avec SFML 2.2.
Dites moi si vous avez une idée, ou simplement besoin de plus d'infos
Merci d'avance

14
Discussions générales / Re : Compatibilité 2.1 -> 2.2
« le: Février 02, 2015, 06:49:00 pm »
Merci de ta réponse, ca m'a sorti d'affaire
Bonne continuation vers sfml 3.0  8)

15
Discussions générales / Compatibilité 2.1 -> 2.2
« le: Février 02, 2015, 01:51:06 pm »
Bonjour tout le monde,
Ca fait un bail que j'ai commencé un projet avec SFML 2.1, je voulais savoir si il est possible de le reprendre dans visual studio 2012 avec SFML 2.2. Si oui, quelle version télécharger?
Merci beaucoup  :)

Pages: [1] 2 3 ... 5 Suivante »