IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Demande de petits conseils sur une idée de programme pour un jeu


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Demande de petits conseils sur une idée de programme pour un jeu
    Tout d'abord, Bonjour !

    Voila, dans le cadre d'un entrainement au C++, j'ai décidé de créer une sorte de générateur de facture pour faire du role play dans un jeu.
    Basiquement, c'est un jeu dont il y a 4 ressources, dont les valeurs dépassent celle des long int.

    Le prix des objets ne varie pas et que malheureusement, la valeur du prix doit pouvoir être supérieure à 2^32, je pense donc utilisé la librairie GMP.

    Le prix étant en plusieurs ressources, j'avais pensé faire une classe par objet du jeu qui est 'généré' lorsque la valeur de l'objet du jeu est supérieure à zéro (afin d'éviter de créer une classe pour rien), avec une classe NbObjet contenant le nombre de chaque objets du jeu.
    Lors de la 'validation', le calcul se fait entre le nombre d'objet du jeu et les valeurs dans la classe correspondantes.

    L'idée basique était de stocker les classes (d'objets du jeu) utilisés dans un tableau. Mais je dois avouer que quelque chose me gène.

    Jusque la, est ce que mon principe est bon ?

    Il y a environ une trentaine d'objets.
    Les prix sont entre 500 et 30 Millions par objets (unités), on peux monter facilement à 100Millions d'objets (deja vu pour certains objets).
    Je pense que le tableau va me bouffer énormément de mémoire pour pas grand chose finalement.

    Je vais essayer de poster un (pseudo)diagramme UML si ce n'est pas clair.

  2. #2
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Pourquoi ne stockes tu pas les prix avec pour unité le million ?
    Par exemple si ta variable "prix" contient 2 ça veut dire que le prix est de 2 millions.
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  3. #3
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    unsigned long long, ça ne t'irait pas (entier non signé codé sur 64 bits).
    Sinon, pourquoi des prx si faramineux ? Combien tu gagnes dans ton jeu ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    Bonjour,

    Tout d'abord un double peu faire l'affaire en unsigned vu que tu as que des valeurs positives.

    Ensuite tu peux faire un classe Objet qui contient le nb d'objet, le prix et d'autres valeurs communes a tous tes objets.

    Ensuite tu fais des classes dérivées qui sont plus spécialisé a tes objets.

    Ta classe objets peux être une interface et ce qui te force a l’appeler via les classes spécialisées. Et donc dans les constructeurs faire l'initialisations de toutes tes valeurs en fonction de l'objets.

    Ensuite ton tableau d'objet ne stocke qu'une classe par objets et le compteur interne te donne le nombre que tu as pour ce type d'objet.

    Ensuite pour les appelés tu peut te plancher sur une factory method (design pattern).

    Et je crois que pour cette partie tu as le plus gros.

    Bonne journée

  5. #5
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par jouana Voir le message
    Bonjour,

    Tout d'abord un double peu faire l'affaire en unsigned vu que tu as que des valeurs positives.
    Unsigned n'est pas applicable aux types flottants.

    Je pense que la suggestion de unsigned long long (qui est dispo dans VS et GCC il me semble) est la plus simple.

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Lai,

    Je peine à comprendre pourquoi des prix si élevés.

    La seule explication que je trouve serait que quelque part dans le jeu, il y ait des prix ajustés à quelques centimes, et là, je me dis qu'une telle précision par rapport à des prix > 10^6 ou 10^7 est ridicule (ramène cette précision au prix d'un litre d'essence, et regarde la différence sur un plein, et même sur le prix de l'essence pour l'année !).
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Re-bonjour,

    Les prix vont de 500 à environ 30 Millions, prendre comme base le million me posera quelques soucis au niveau du 500 (par exmple ^^)

    Pour l'unsigned long long, je dois avouer que cela m'était sortit de la tête (comme quoi, demander des conseils, ça a du bon ^^ ).

    Pourquoi des prix élevés ? C'est une grande question: le fait est que le jeu existe depuis plusieurs années, le développeur a fait en sorte qu'il y a 3 stades de développement (débutant, moyen, joueur développé ): les débutants et les joueurs expérimentés n'ont pas les mêmes armes ni la même puissance, pour l'expérimenté, produire 500 Millions par exemple, cela se fera en une journée (voir moins), alors que pour le débutant, il lui faudra au moins plusieurs semaines.
    (C'est un bon jeu, souvent mis-à-jour, avec une bonne ambiance et assez équilibré à mon avis.)

  8. #8
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    OK, donc tu ne maitrises pas les prix, en fait.
    Sinon, au niveau architecture, je dirais un classe mère Objet, qui a pour membre les coûts dans les différentes ressources (donc 4 membres de coût) et un nom. Chaque objet est donc une instance de cette classe, et si ces objets doivent exposer des comportements particuliers, il suffit de dériver cette classe mère pour exposer ces comportements (si pas de comportement particulier, pas besoin de dériver et on garde l'empreinte mémoire minimale de la classe Objet).
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  9. #9
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci, c'est pas bête.

    J'ai toujours tendance à me compliquer la vie pour pas grand chose (ca c'est vu, je pense ^^').

  10. #10
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Les prix vont de 500 à environ 30 Millions, prendre comme base le million me posera quelques soucis au niveau du 500 (par exmple ^^)
    tu dois te douter que j'avais compris que tes valeurs devaient être entre 500M et 30M ...
    Concernant ton problème tu n'as qu'à stocker ta valeur sur plusieurs variables afin de gérer le dépassement.
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    Si tu lis un peu plus haut ce que j'ai dit.
    J'expose l'idée de dragonjoker59 en un peu plus poussé

  12. #12
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    TheGzD, je me suis douté que tu avais pensé ça, c'est pour ça que j'ai précisé ^^ (je dois avouer qu'après mettre relu, ca me semblait évident... que c'était entre 500M et 30M xD)

    Jouana, je ne suis pas spécialement doué en C++ alors tu sais les interfaces, designs paterns ect.. c'était un peu flou pour moi même si j'avais saisi le concept général.

    Je pense que ca devrait aller un peu mieux maintenant. Merci en tout cas

  13. #13
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    J'ai bien réfléchis et j'ai quelques autres petites questions sur le même sujet, en espérant que vous pourrez continuer à m'aider.

    Tout d'abord, je code sous Windows (actuellement) avec QTCréator (pour l'IHM), par conséquent, je me demande si il existe une bibliothèque qui gère l'unsigned long long int (je sais que GCC est le compilateur linux et pour VS, c'est une bonne question ^^")


    Ma seconde question est plutot un doute en fait: si je multiplie un unsigned long long int par un float et que je met le résultat dans un long long int, je récupèrerais juste la partie entière mais bien le bon résultat, non ?


    Par avance, Merci encore

  14. #14
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Visual Studio et gcc gèrent tous deux très bien unsigned long long.
    Pour ta 2ème question, la réponse est oui, si tant est que le résultat ne dépasse pas les bornes d'un unsigned long long.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/01/2012, 16h02
  2. Avis et conseils sur une idée de projet
    Par betsprite dans le forum Qt
    Réponses: 15
    Dernier message: 20/10/2010, 16h22
  3. Cherche avis sur une idée d'IA pour un rpg...
    Par Neolander dans le forum Intelligence artificielle
    Réponses: 12
    Dernier message: 31/03/2008, 07h19
  4. Conseils sur une demande d'emploi à temps partiel
    Par Pollux dans le forum Emploi
    Réponses: 5
    Dernier message: 06/02/2006, 12h50
  5. copier une petite texture sur une grosse texture
    Par gaut dans le forum DirectX
    Réponses: 5
    Dernier message: 15/10/2004, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo