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

Pages: « Précédente 1 2 3 [4]
46
Il faut penser à virer l'ancien logo du forum! Au revoir ancien logo  :P

47
Champagne !  ;D :-* ::)
Félicitations !

49
Projets SFML / Re : X-Blaster Dominator
« le: Mars 23, 2013, 09:25:33 pm »
Magnifique !
Ça fait plaisir de voir que t'as amélioré ton jeu en le passant au C++ / SFML !
Bonne continuation !  :)

50
Général / Re : Problème de métaprogrammation
« le: Février 27, 2013, 07:31:40 pm »
Il n'y a pas forcément un moment où ça va coincer, en tout cas pas si on appelle pas de fonctions membres.
On pourrait très bien créer un manager avec divers types gérés qui n'auraient pas de base commune (sf::Texture, sf::Font, sf::SoundBuffer par exemple).
En résumé, on aurait là une classe conteneur de certains types autorisés, avec un erreur à la compilation si on ose outrepasser cette restriction. De cette classe qui factorise une bonne partie du code, on pourraient dériver des classes managers plus complexes, dès lors qu'on aurait une méthode commune, telle qu'un gestionnaire audio (méthodes de contrôle), ou un gestionnaire de graphe de scene (méthode de rendu).
Tout ça c'est plus par curiosité qu'autre chose, et c'est un bon entraînement pour comprendre les subtilité de la nouvelle norme.

51
Général / Re : [SFML 2] Quelques warning ennuyeux sur VS 2010
« le: Février 27, 2013, 05:44:43 pm »
Salut,

Une petite recherche google donne :

#pragma warning disable -> au début d'un fichier pour désactiver les warnings en rapport avec le code de ce fichier

Project > Properties > Configuration Properties > C/C++ > Advanced > Disable Specific Warnings text box. Enter numbers of the warnings separated by semicolon. -> pour désactiver certains warnings grâce à leur code

Par contre je sais pas si on peut désactiver tous les warning, et de toute façon je te le déconseille (ça permet d'éviter des erreurs ultérieures...) !

52
Général / Problème de métaprogrammation
« le: Février 27, 2013, 05:09:44 pm »
Bonjour à tous,

Je ne sais pas si c'est possible, mais j'essaye actuellement de créer un gestionnaire de ressources sous la forme d'une classe template variadique, possédant une méthode templatisée de création d'une ressource d'un type donné, permettant grâce à une expression constante et une assertion statique de vérifier si le type de ressource spécifié est autorisé par la classe (en le comparant aux types du template variadique) et d'interrompre la compilation dans le cas contraire.

Le problème est que je sèche sur le code de la méthode de vérification du type de ressource.
Voici un bout de code (simplifié) pour vous donner une idée :


template<typename... Types>
class Manager
{
public:

   template<typename Type, typename... Arguments>
   size_t create(Arguments... arguments)
   {
      static_assert(testTypes<Type>(), "Template function does not allow this type !");

      Type* ptr = new Type(Arguments...);
      ...

      return nextId();
   }

   template<typename Type>
   constexpr bool testTypes(); // méthode de vérification du type de ressource

  size_t nextId()
  {
      static size_t id;
      return id++;
  }

   ...
};

typedef Manager<sf::Texture, sf::Font, sf::SoundBuffer> ResourceManager;

ResourceManager resources();
resources.create<sf::Texture>(); // Compilation OK
resource.create<sf::Sprite>(); // Compilation ERROR
 

J'ai quelques pistes pour le code de la méthode testTypes() :

- Pour obtenir le nombre de type passés en template j'utilise -> sizeof...(Types)
- Pour vérifier que deux types sont les mêmes j'utilise -> std::is_same<Type1, Type2>
- Je peut normalement décompresser Types avec l'opérateur ... -> Types...

Maintenant il reste à créer une boucle en méta-programmation (je sais pas si c'est possible),
afin de balayer les types grâce au code :


template <int N, typename... Args> struct ElementType;
 
template <int N, typename T, typename... Args>
struct ElementType<N, T, Args...> {
        static_assert(N < sizeof...(Args) + 1, "overflow!");
        typedef typename elementType<N - 1, Args...>::type type;
};
 
template <typename T, typename... Args>
struct ElementType<0, T, Args...> {
        typedef T type;
};

// Par exemple :

elementType<1, sf::Texture, sf::Font, sf::SoundBuffer>::type>::value // donnera le type sf::Font
 

J'espère que je suis assez clair, et désolé par avance sinon, le sujet est assez difficile je trouve...  :-\




53
Discussions générales / Re : Convertir un jeu XNA vers SFML ?
« le: Février 21, 2013, 07:23:39 pm »
J'ai jamais fait de C# par contre, je vais me renseigner pour savoir les différences par rapport au C++.
Tu peux me contacter par MP, je te donnerai mon Skype, c'est mieux de parler de tout ça sur messagerie instantanée.

54
Discussions générales / Re : Convertir un jeu XNA vers SFML ?
« le: Février 21, 2013, 04:49:29 pm »
Salut, je peux t'aider à convertir ton code si tu veux. C'est sans doute moins long que de tout réécrire !
Tu pourras apprendre à utiliser SFML sur un projet plus simple, c'est plus sage.
Beau jeu sinon !

Pages: « Précédente 1 2 3 [4]