AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -50%
-50% sur les sacs à dos pour ordinateur ...
Voir le deal
19.99 €

 

 La façon dont vous aimeriez coder un jeu en C++

Aller en bas 
+3
D-z
Qual
onilink_
7 participants
AuteurMessage
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyJeu 13 Sep 2012 - 17:36

Bonjour, je propose un thread ou vous écrirez un code C++ qui selon vous serais le plus élégant, pratique et puissant.
Vous pouvez inventer les fonctions que vous voulez, indiquer les outils utilisés en dehors du code, etc.
Le but étant de faire un code contenant le plus d'outils utilisés dans le jv: images, animations, maps, audio, etc.
Et tant qu'a faire, vous pouvez aussi modifier/améliorer les codes des autres, histoire d'avoir la meilleur structure possible.

Un petit exemple :
Code:
#include <xxxxxx>

namespace Obj
{

class Link : public GameObject
{
   public:
   Link();
   
   void step();
   void draw();
};

} // namespace

int main()
{
   xx::Window win(640, 480, "My Game");
   
   // Images normales, contenant les planches de sprites
   xx::StringList resImg[] =
   {
      "Images/link_sprite.png", "Link",
      "Images/monster_sprite.png", "Monster",
      "Images/gui_sprite.png", "Gui",
      "Images/menu_sprite", "Menu"
   };
   
   // Animations éditées sous un logiciel externe
   // (comparables aux sprites de GM, mais groupés dans un seul fichier)
   xx::StringList resAnim[] =
   {
      "link.anm", "Link",
      "monster.anm", "Monster"
   };
   
   xx::StringList resSnd[] =
   {
      "link_hurt.wav", "Link Hurt",
      "link_sword.wav", "Link Sword",
      "menu_open.wav", "Menu Open",
      "menu_close.wav", "Menu Close"
   };
   
   xx::StringList resMusic[] =
   {
      "title.ogg", "Title",
      "world.ogg", "World"
   };
   
   // Rooms éditables dans un logiciel externe
   // Contiennent des liens vers les fichiers de tiles, instances
   xx::StrinList resRooms[] =
   {
      "village.rm", "Village",
      "plain.rm", "Plain",
      "ruins.rm", "Ruins",
      "castel.rm", "Castle"
   };
   
   //xx::RessourcesAdd(ressource type, path, filenames & id_names, number);
   xx::ressourcesAdd(xx::rc_image, "", resImg, 4); // Le dossier de chargement a déjà été indiqué
   xx::ressourcesAdd(xx::rc_anim, "Animations", resAnim, 2); // On prend les ressources dans le dossier Animations
   xx::ressourcesAdd(xx::rc_sound, "Sounds", resSnd, 4);
   xx::ressourcesAdd(xx::rc_music, "Musics", resMusic, 2);
   xx::ressourcesAdd(xx::rc_room, "Rooms", resSnd, 4);
   
   // charges toutes les ressources
   xx::ressourcesLoad(xx::rc_anim);
   // ou une a une
   xx::ressourceLoad(xx::rc_image, "Link");
   xx::ressourceLoad(xx::rc_image, "Menu");
   xx::ressourceLoad(xx::rc_room, "Village");
   
   xx::roomLoad("Village");
   
   while(win.isOpened())
   {
      win.updateEvents();
      win.clearScren(xx::c_black);
      
      if(xx::keyPressed(xx::vk_escape))
         xx::gameEnd();
      
      xx::engineStep();
      /*
      Cette fonction affiche les instances des objets dérivés de GameObject,
      les tiles de la room courrante, gère les collisions et les vues.
      */
      
      win.display();
   }
   
   return win.close(); // ferme la fenetre et libère les ressources
}

// GameObject(object_name, id_sprite, id_anim)
Obj::Link::Link() : GameObject("Link", "Link", "Link")
{
   setMaskAABB(0, 0, 16, 16);
   setObjectFollowing();
}

void Obj::Link::step()
{
   if(xx::keyCheck(xx::vk_left))
   {
      animIndex = "Walk Left";
      animSpeed = 0.2;
      if(placeFree(x-1, y))
         x--;
   }
   // etc
}

void Obj::Link::draw()
{
   drawSprite(spriteIndex, animIndex, x, y);
}


_________________
La façon dont vous aimeriez coder un jeu en C++ Runningpotato1La façon dont vous aimeriez coder un jeu en C++ TvF6GED La façon dont vous aimeriez coder un jeu en C++ MdetltS
Revenir en haut Aller en bas
Qual
Utilisateur confirmé: Rang ****
Qual


Messages : 1450
Projet Actuel : Tower Defence

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyJeu 13 Sep 2012 - 21:08

draw_spr(spr_car1,0,x,y) crossa

_________________
La façon dont vous aimeriez coder un jeu en C++ Icone_114
Revenir en haut Aller en bas
http://www.brainwizz.fr
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyJeu 13 Sep 2012 - 21:39

C'est un poco le bordel.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyJeu 13 Sep 2012 - 23:51

Bah justement, a toi de modifier ce qui va pas x)

Edit:
D'ailleurs pour les ressources, ce serais mieux un truc du genre nan?

Code:
<images path="Images">
    "link_sprite.png" > "Link" > 1
    "monster_sprite.png" > "Monster" > 0
    "gui_sprite.png" > "Gui" > 0
    "menu_sprite" > "Menu" > 1
</images>

<anims path="Animations">
      "link.anm" > "Link" > 1
      "monster.anm" > "Monster" > 1
</anims>

<sounds path="Sounds">
      "link_hurt.wav" > "Link Hurt" > 0
      "link_sword.wav", "Link Sword" > 0
      "menu_open.wav", "Menu Open" > 0
      "menu_close.wav", "Menu Close" > 0
</sounds>

<musics path="Musics">
      "title.ogg" > "Title"
      "world.ogg" > "World"
</musics>

<rooms path="Rooms">
      "title.rm" > "Title" > 1
      "village.rm" > "Village" > 1
      "plain.rm" > "Plain" > 0
      "ruins.rm" > "Ruins" > 0
      "castel.rm" > "Castle" > 0
</rooms>

Code:
#include <xxxxxx>

namespace Obj
{

class Link : public GameObject
{
  public:
  Link();
 
  void step();
  void draw();
};

} // namespace

int main()
{
  xx::Window win(640, 480, "My Game");
  xx::loadRessources("ressources.xml");
 
  xx::roomGoto("Title");
  xx::musicPlay("Title");
 
  while(win.isOpened())
  {
      win.updateEvents();
      win.clearScren(xx::c_black);
     
      if(xx::keyPressed(xx::vk_escape))
        xx::gameEnd();
     
      xx::engineStep();
      /*
      Cette fonction affiche les instances des objets dérivés de GameObject,
      les tiles de la room courante, gère les collisions et les vues.
      */
     
      win.display();
  }
 
  return win.close(); // ferme la fenetre et libère les ressources
}

// GameObject(object_name, id_sprite, id_anim)
Obj::Link::Link() : GameObject("Link", "Link", "Link")
{
  setMaskAABB(0, 0, 16, 16); // le masque de collision (Axis Aligned Bounding Box)
  setObjectFollowing(); // la vue doit suivre cet objet
}

void Obj::Link::step()
{
  if(xx::keyCheck(xx::vk_left)) // si on appuie sur la touche flèche gauche
  {
      animIndex = "Walk Left"; // on choisis l'animation
      animSpeed = 0.2; // et sa vitesse
      if(placeFree(x-1, y)) // et si la gauche est libre on se déplace
        x--;
  }
  // etc
}

void Obj::Link::draw()
{
  drawSprite(spriteIndex, animIndex, x, y); // affiche le sprite, en fonction de l'animation
}

_________________
La façon dont vous aimeriez coder un jeu en C++ Runningpotato1La façon dont vous aimeriez coder un jeu en C++ TvF6GED La façon dont vous aimeriez coder un jeu en C++ MdetltS
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro


Messages : 1482
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyVen 14 Sep 2012 - 19:40

Un problème que je me suis poser. C'est à propos de l’itération entre les différents objets (dérivant de l'objet Objet par exemple)

J'aurais tendance à vouloir mettre ces interactions dans la classe des objets eux-même. Mais tout les objets n'ont pas les même interactions avec les autres. Et on est souvent forcé de mettre le code dans le gestionnaire d'objet.
Avec une liste d'objet (pointeur ou référence ) , il est difficile de traiter ces éléments en temps que qu'enfant d'objet.
On à tendance à faire une liste de chaque type d'objet mais c'est la pagaille ensuite.

_________________
La façon dont vous aimeriez coder un jeu en C++ PochetteLa façon dont vous aimeriez coder un jeu en C++ Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyVen 14 Sep 2012 - 20:06

J'ai pas bien suivis la.
Quand tu parle d'interaction, tu parle de quoi? Collisions? T'aurais un exemple?
Sinon pour la liste bah tu fait une liste du type Object* et tu met toutes les adresses des instances dedans.
C'est sensé marcher, juste que tu peut pas accéder aux attributs et méthodes des objets dérivés sans cast.
(après je sais pas si c'est très propre de cette manière, mais je vois pas vraiment mieux la)

_________________
La façon dont vous aimeriez coder un jeu en C++ Runningpotato1La façon dont vous aimeriez coder un jeu en C++ TvF6GED La façon dont vous aimeriez coder un jeu en C++ MdetltS
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptySam 15 Sep 2012 - 0:23

Non, il ne faudrait jamais avoir à accéder à une méthode d'une classe dérivée dans la boucle principale. Sinon c'est que la collection hétérogène est mal foutue.

En fait il suffit d'une méthode update(delta_temps) et d'une affiche(contexte_graphique) dans la classe Object, qui seront surchargée par les objets. Pour un système à la GM, rajouter des membres héritables tels que x, y, depth (auquel cas il faudrait trier la liste par depth pour l'affichage), et une fonction template collision.

Code:
class Object
{
    // ...
protected:
    // ...
    Hitbox getHitbox();
    template<class O> void collision(O other, Hitbox hitZone);
    void update(int dt);
    void draw(/* ? */);
}

Note : ces fonctions sont protected car elles ne devraient pas être appelées ailleurs que par la boucle principale du programme, qui sera elle dans le ticker, déclaré friend.

Idée très flexible mais pas nécessairement optimisée : une interface Hitbox permettant de manipuler des masques de collision génériques. On aura par exemple des PointHitbox, des RectHitbox, des RasterHitbox, des EllipseHitbox, et surtout un CompositeHitbox. Chacune de ces classes étant capable de retourner si oui ou non elle est en collision avec une autre Hitbox. Ainsi, on peut avoir un truc de ce genre :

Code:
class MonBonhomme : public Object
{
    // ...
private:
    Hitbox tete, brasG, brasD, torse, jambeG, jambeD, corps;
}

Et dans le .cpp :

MonBonhomme::MonBonhomme()
{
    // ...
    corps = new CompositeHitbox(tete, brasG, brasD, torse, jambeG, jambeD);
}

Hitbox MonBonhomme::getHitbox()
{
    return corps;
}

Ce qui fait que Bidulon fournit son masque composite complet au moteur de jeu lors de l'étape "résolution des collisions", et si un (ou plusieurs) bout(s) de son corps sont en contact avec un autre objet, on lui dit lequel ainsi que la Hitbox concernée. Si je me trompe pas, il suffit de surcharger la fonction template, et si Bidulon n'est pas prévu pour réagir à un certain objet il se rabattra sur la fonction d'Object (qui elle ne fait rien).

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptySam 15 Sep 2012 - 13:25

Tu pourrais expliquer vite fait en quoi consiste une 'collection hétérogène' ?
J'ai regardé sur le net mais j'ai pas trop trouvé de réponses. Sinon pour la ligne
template<class O> void collision(O other, Hitbox hitZone);
je vois pas pourquoi tu fait une fonction template.
En principe la collision se ferais entre deux objets dérivés de Object non?

En tout cas l'idée des 'composite hitbox' est vraiment sympa. Juste qu'a implémenter (et optimiser surtout) c'est une autre histoire Razz
Pour un engine qui gère les animations a la rayanim ça pourrais être super pratique. Et le top pour les jeux de combats.

Par contre
corps = new CompositeHitbox(tete, brasG, brasD, torse, jambeG, jambeD);

C'est possible de faire ça en C++? On a le droit d'utiliser un nombre de paramètres variable? Ou ce serais encore un truc a coup de template (jamais utilisé pour ma part, je connais vite fait le fonctionnement. Ouai je code comme un codeur C mrgreen2 )

_________________
La façon dont vous aimeriez coder un jeu en C++ Runningpotato1La façon dont vous aimeriez coder un jeu en C++ TvF6GED La façon dont vous aimeriez coder un jeu en C++ MdetltS
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro


Messages : 1482
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptySam 15 Sep 2012 - 15:09

Un collection hétérogène, c'est un conteneur d'instance de différents objet.
Avec une list<objet*> ont peux y poser toute instance dérivant de l'objet objet.

Une solution à mon problème, c'est de donner à chaque élement de la list une référence (ou pointeur) du manager d'objet. Et ainsi chaque objet à accès au manager qui à accès au objets, la boucle est bouclé. ( mais moyen je trouve)

Dz, j'utilise la même chose que toi. Seulement, je voudrais n'effectuer que les tests de collisions nécessaire. Et de plus, lorsqu'il y a une collision, accéder directement à l'objet enfant.

Mais j'ai maintenant une idée qui ferait l'affaire.
Tous les objets ont une fonctions
Code:

collisionWith(Objet& obj)
Cette fonction est surchargé par les enfant
Code:

collisionWith(Vaisseau& v);
collisionWith(Missille& m);

Quand il y a collision entre deux objets a et b, le manager d'objet appelle
Code:

    a.CollisionWith(b)  // objet::CollisionWith(Objet&)

mais si a est un Vaisseau, la définition de Vaisseau::CollisionWith(Objet& b) est :
Code:

    b.CollisionWith(*this);

Par exemple, il se trouve que b est un Missille.
On a donc appellé la dernière fois la fonction Missille::CollisionWith(Vaisseau& ); qui est la bonne.
-----------------------------------
Je ne sais pas si je me suis fait comprendre.
Dans l'ordre voici les fonctions appelé:

Objet::CollisionWith(Objet&)
Vaisseau::CollisionWith(Objet&)
Missile::CollisionWith(Vaisseau&);

----------------------- ( le même mais avec nos deux objet a et b

a(objet) . CollisionWith( b(objet))
b(vaisseau) . CollisionWith (a(objet))
a(missile) . CollisionWith( b(vaisseau))

C'est pas très long à implémenter, juste 3 fonctions:

Code:

Objet::CollisionWith(Objet& obj)
{
    obj.CollisionWith(*this);
}
Vaisseau::CollisionWith(Objet& obj)
{
    obj.CollisionWith(*this);
}
Missile::CollisionWith(Objet& obj);
{
    obj.CollisionWith(*this);
}
Vaisseau::CollisionWith(Missile& missile)
{
    // ici le code pour gérer les collision entre vaisseau <-> missile
}
Missile::CollisionWith(Vaisseau& vaisseau)
{
    vaisseau.CollisionWith(*this)  // on applique la fonction du dessus entre les deux
}

Quand dite vous?

_________________
La façon dont vous aimeriez coder un jeu en C++ PochetteLa façon dont vous aimeriez coder un jeu en C++ Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptySam 15 Sep 2012 - 23:45

Une collection hétérogène, c'est une collection d'instances qui ne sont pas de la même classe. Donc en général (et faire le contraire serait une très, très mauvaise idée) on y stocke des objets implémentant la même interface (donc héritant de la même classe mère en C++).

Le template permet de "surcharger" la méthode dans les fils avec des références sur des descendants d'Object, plutôt que sur Object.
Pourquoi ? Parce qu'il faut une méthode par objet rencontré, on ne réagit pas pareil à un bonus ou à un tir en pleine tête. Et tout bourrer dans une fonction avec un *Object en paramètre, mauvaise idée. D'autant que le phénomène de masquage de méthodes sera beaucoup plus simple à gérer avec un template : la méthode sera appelée uniquement avec la classe pour laquelle tu as défini le comportement, point.
Et, au début je voulais faire un équivalent du <O extends Object> de Java, mais apparemment le C++ le gère carrément tout seul à la compil' : en fait la méthode accepte tout objet, mais si ensuite ça génère une erreur (donc si l'objet n'implémente pas une des méthodes que tu appelles), alors le compilo gueule et tu ne peux pas utiliser cet objet. En gros l'interface est implicite et devinée par le compilo en regardant le corps de ta fonction.

Pour les varargs... ben je me suis dit qu'un truc aussi basique et pratique existe forcément en C++, non ? Après je dis pas que mon code est compilable direct, c'est plus un squelette conceptuel qu'autre chose.

Implémenter les Hitbox, ça ne devrait pas être si dur. Au mieux tu auras C(2, n) fonctions à définir avec n le nombre de Hitbox différentes (il faut déterminer une fonction pour chaque paire de Hitbox). CompositeHitbox c'est juste un alien (proprement caché par l'encapsulation) qui se contente d'appeler les méthodes de ses parties (une LinkedList fera très bien l'affaire). À nouveau une méthode template dans la classe mère. C'est bien les template.

Arthuro, sauf erreur de ma part, collisionWith(Vaisseau& v) et collisionWith(Missile& m) ne surchargent PAS collisionWith(Object& obj) ! Du coup si tu envoies une Object& muette venue de la collection du ticker, il me semble que ça appelle systématiquement celle avec Object&. Par contre le template force la résolution dynamique de la référence.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptySam 15 Sep 2012 - 23:48

Moi j'aimerais bien un système de stockage/chargement de ressources performant et optimisé.
J'avais pensé faire ceci (sous gm) :
- Les ressources sont stockées en "bibliothèques" (qui sont des archives 7z)
- Chaque bibliothèque possède un index (couple [identifiant,nom de fichier])
- Pour charger une ressource, load_ressource(bibliothèque,identifiant)
Pour les ressources externes ce serait plus simple, et ça éviterait de faire 36 000 fichiers. Tout en ne se préoccupant pas de l'arborescence.

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptySam 15 Sep 2012 - 23:57

Boh, une arborescence de répertoires c'est pas si mal ? Avec la possibilité de l'inclure dans le .exe et de l'extraire avant exécution.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro


Messages : 1482
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyDim 16 Sep 2012 - 1:02

Code:

Arthuro, sauf erreur de ma part, collisionWith(Vaisseau& v) et collisionWith(Missile& m) ne surchargent PAS collisionWith(Object& obj) ! Du coup si tu envoies une Object& muette venue de la collection du ticker, il me semble que ça appelle systématiquement celle avec Object&. Par contre le template force la résolution dynamique de la référence.
Il y a bien surcharge mais pas masquage(ou plutôt choix dynamique de la bonne version de la fonction). C'est surtout un masquage que j'utilise.

je fais un récap:
On a:

Objet::CollisionWith(Objet& a)
// fonction vide

Vaisseau::CollisionWith(Objet& a) masquage de la précédente
// a.CollisionWith(*this) // on appelle: Objet::CollisionWith(Vaisseau)

Missile:CollisionWith(Objet& a) masquage de la sur précédente
// a.CollisionWith(*this) // on appelle Objet::CollisionWith(Missile)

Objet::CollisionWith(Vaisseau& v)
// v.CollisionWith(*this) // on appelle Objet::CollisionWith(Vaisseau)

Objet::CollisionWith(Missille& m)
// m.CollisionWith(*this) // on appelle Objet::CollisionWith(ùissile)

On à l'impression qu'on tourne en rond.
Sauf qu'on masque Objet::CollisionWith(Vaisseau&) par
missille::CollisionWith(Vaisseau&)
{
....
}


Bon c'est un peu particulier, je m'y perd aussi un peu.
Ceci à un seul défault, c'est qu'il faut définir les fonctions vide : Objet::CollisionWith(Vaisseau&) et Objet::CollisionWith(Missile&)


Sinon pour rester dans le sujet.
Il faudrait quelque chose de portable pour lister les fichiers dans un dossier.
Il y a Boost::FileSystem mais c'est tellement ****** à installer.
Il y a les inclusion <dirent.h> <sys/types.h> <sys/stat.h> sous un système Unix. Cela marche sous windows avec un compilateur GNU qui implémente ces fonctions pour que ça marche

Un truc qui gérerait cela serait pas mal (vu le temps que j'ai perdu à cela ^^)


_________________
La façon dont vous aimeriez coder un jeu en C++ PochetteLa façon dont vous aimeriez coder un jeu en C++ Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyDim 16 Sep 2012 - 11:08

Wow arthuro x)

Je suppose que ça marche, mais quel bricolage :p

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Morwenn
Très bonne participation
Morwenn


Messages : 151
Projet Actuel : Icare

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyDim 16 Sep 2012 - 17:05

@arthuro : Boost::FileSystem devrait bientôt être admise dans le standard (enfin, d'ici 3 à 5 ans). Comme ça, tu n'auras plus à installer Boost pour l'avoir ; ce sera fourni avec n'importe quel compilateur décent. D'ailleurs, il me semble que la dernière version de Microsoft Visual C++11 (référence) l'inclut via le header filesystem. Rien pour le moment du côté de GCC ou Clang ceci dit^^

_________________
La façon dont vous aimeriez coder un jeu en C++ 37115040594310152086589335317875357842n
Dur Dabla, pour qui voudrait écouter un brin de metal celtique.
Revenir en haut Aller en bas
daminetreg
Administrateur
daminetreg


Messages : 16998
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyLun 17 Sep 2012 - 13:14

Et puis boost_filesystem, c'est pas très compliqué à installer, tu télécharges boost, tu démarres bjam. Tu laisse builder le tout et ensuite il suffit de linker vers boost_filesystem.

Je ne vois rien de compliquer en cela, par exemple dans CMake pour linker boost_filesystem :
Code:

find_package(Boost 1.51 REQUIRED)
link_directories ( ${Boost_LIBRARY_DIRS} )
include_directories ( ${Boost_INCLUDE_DIRS} )

# Source files to compile with executable
file(GLOB_RECURSE TONAPPLICATION_SOURCE_FILES *.cpp)

ADD_EXECUTABLE(tonApplication ${TONAPPLICATION_SOURCE_FILES})
TARGET_LINK_LIBRARIES(tonApplication
   boost_filesystem)

Et à partir de cela tu peux générer un Makefile, un projet Visual Studio, un projet eclipse... avec cmake -G "Unix Makefiles" / cmake -G "Visual Studio"...

_________________
Mon CV : fr - de - en
Le CBNA Tous Ensemble! Réalisons!
La façon dont vous aimeriez coder un jeu en C++ U3dfr2
Revenir en haut Aller en bas
http://lecbna.org/
arthuro
Utilisateur confirmé: Rang ****
arthuro


Messages : 1482
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyLun 17 Sep 2012 - 22:45

Mouais, j'ai déjà essayer, j'ai souffert pendant un après midi. gnii
Mais bon quand on l'à déjà fait une fois, après ça roule c'est sur. Je vous fait confiance.

A l'époque j'avais pas réussit à utiliser bjam. (ou Cmake après), ils me renvoyaient des erreurs, j'ai pas du bien m'y prendre.

_________________
La façon dont vous aimeriez coder un jeu en C++ PochetteLa façon dont vous aimeriez coder un jeu en C++ Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
daminetreg
Administrateur
daminetreg


Messages : 16998
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyMar 18 Sep 2012 - 10:05

arthuro a écrit:
Mouais, j'ai déjà essayer, j'ai souffert pendant un après midi. gnii
Mais bon quand on l'à déjà fait une fois, après ça roule c'est sur. Je vous fait confiance.

A l'époque j'avais pas réussit à utiliser bjam. (ou Cmake après), ils me renvoyaient des erreurs, j'ai pas du bien m'y prendre.
Sinon si tu es sur linux tu peux simplement faire un apt-get install libboost-filesystem-dev, le seul truc gênant c'est qu'ils ne sont pas nécessairement autant à jour que boost.org, il sont pour le moment à la 1.48 alors que boost.org propose la 1.51. Et il y a eu du changement entre temps.

_________________
Mon CV : fr - de - en
Le CBNA Tous Ensemble! Réalisons!
La façon dont vous aimeriez coder un jeu en C++ U3dfr2
Revenir en haut Aller en bas
http://lecbna.org/
arthuro
Utilisateur confirmé: Rang ****
arthuro


Messages : 1482
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ EmptyMar 18 Sep 2012 - 16:38

Merci.
C'est vrai qu'avec un paquet qui fait tout à ma place, j'ai plus raison de dire que c'est difficile.
Quoique, j'utilise boost seulement pour obtenir quelque chose de portable, l'installer pour un environnement qui cross-compile de linux->windows, ça risque d'être plus compliqué. happy1 (un petit tuto pour plus tard)

_________________
La façon dont vous aimeriez coder un jeu en C++ PochetteLa façon dont vous aimeriez coder un jeu en C++ Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
Contenu sponsorisé





La façon dont vous aimeriez coder un jeu en C++ Empty
MessageSujet: Re: La façon dont vous aimeriez coder un jeu en C++   La façon dont vous aimeriez coder un jeu en C++ Empty

Revenir en haut Aller en bas
 
La façon dont vous aimeriez coder un jeu en C++
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Votre façon de coder
» Quel sorte de logiciel aimeriez-vous créer ?
» Era of the Beast - Livre dont vous êtes le héros électronique (Unity)
» Coder les résolutions
» Préparatif pour le 100K GM Pack , Et vous? Que faites-vous?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: