1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2018
    Messages : 7
    Points : 8
    Points
    8

    Par défaut Compréhension d'un programme (création de "beaucoup" d'objets)

    Bonjour,

    Tout d'abord, je ne suis pas une flèche en C++ mais je me débrouille, et j'ai pas mal de notions de développement/scripting avec d'autres langages.
    J'ai un petit soucis avec un programme que j'aimerai développer, mais pour le moment, j'en suis à la phase réflexion, schéma etc..
    Il est en rapport avec un jeu, il s'agit en quelque sorte d'un "Optimiseur".

    Dans ce programme, l'utilisateur aura la possibilité d'alimenter lui même une petite "base de données" (brut, un fichier avec les données formaté d'une certaine manière, il n'est pas question ici de base SQL ou autres) avec, par exemple, les armes/armures etc.. en donnant quelques précisions (comme l'attaque, la défense...).

    Ensuite, le programme s'occupera d'effectuer quelques petits calculs pour déterminer les meilleures combinaisons d'items que le personnage peut équiper, avec la possibilité de trier cette liste en fonction de la stats qu'il veut prioriser.

    Mon problème est le suivant, d'après vous, comment dois-je traiter chacun des items que l'utilisateur va ajouter à cette petite base ? Dois-je créer un objet pour chaque items ? Si c'est le cas, est-ce que ça ne va pas faire usine à gaz dans le cas ou l'utilisateur entre 200, 300 ou même 1000 items ?

    En fait, j'ai du mal à imaginer la manière dont je vais gérer ces items dans mon code, car pour chacun d'entre eux, je dois pouvoir accéder à leurs statistiques etc.. du coup, même si les données sont conservées dans un fichier, je ne vois pas comment faire sans créer une classe pour chaque catégorie (e.g arme, armure...) puis un objet par item.

    J'espère avoir été clair, et je vous remercie d'avance pour vos réponses !

    Bonne journée.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 318
    Points : 22 622
    Points
    22 622

    Par défaut

    Salut,
    Citation Envoyé par Astak Voir le message
    je ne vois pas comment faire sans créer une classe pour chaque catégorie (e.g arme, armure...) puis un objet par item.
    Quel est le probleme avec ca ? Comment comptes-tu traiter tes objets autrement ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2018
    Messages : 7
    Points : 8
    Points
    8

    Par défaut

    Le problème est que je ne vois pas comment faire pour que tout ces objets puissent se créer "tout seul" lorsque l'utilisateur en a besoin (puisque je ne sais pas à l'avance combien d'items il y aura).
    Enfin après avoir fait quelques tests, un tableau de pointeur avec des new serait la solution ?

    Jusqu'ici j'avais très peu utiliser de langage orienté objet, du coup même si je comprend le principe, j'ai toujours un peu de mal à visualiser mon code.
    Désolé pour ce post inutile du coup, je demande rarement de l'aide et quand j'en demande, je me rend compte que c'est moi qui ne réfléchis pas beaucoup

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    Consultant informatique
    Inscrit en
    octobre 2004
    Messages
    10 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : octobre 2004
    Messages : 10 845
    Points : 24 886
    Points
    24 886

    Par défaut

    Salut,

    Je vien un peu "après la bagarre", mais, dans le cas présent, une approche de type "ECS" (Entity Component System) me semble des plus adéquate.

    En effet, l'approche orientée objets classique va très vite atteindre ses limites, car tu voudrais sans doute partir du "plus petit commun multiple" qu'est la notion ... d'objet.

    Puis tu voudrais sans doute dériver de cette notion d'objet pour obtenir les notions de "potions", de "ingrédients" (pour créer des potions), de "armes", de "armures", et de "gemmes" (qui vont sur les armes et les armures).

    Puis, pour les armes, tu voudras sans doute ajouter les notions de "arme à une main" et de "arme à deux mains", auxquelles tu voudras ajouter les notions de "arme de jet" et de "arme de maintient" (pour faire opposition aux armes de jets ).

    Bien sur, les armes de jets se subdiviseront en "arcs et autres arbalettes" et en "lances, pics et autres javelots", oui, mais là, va y avoir un problème, car arcs et arbalettes sont des armes à deux mains, alors que lances, piques et autres javelots sont ... des armes à une main

    De la même manière, nous aurons sans doute des catégories comme "arme d'estocs" (épées), "armes contondantes"(batons, massue et marteaux) et "armes tranchantes" (haches) dans les armes "de maintient".

    Oui, mais, encore une fois, tu auras le (la) petit(e) baton /marteau (épée / hache) d'entrainement, qui sera une arme à une main, et la SuperEpeeDeLaMortQuiTue qui sera une arme à deux mains!

    Et je n'ai même pas encore parlé de la possibilité d'avoir des objets magiques! Mais cela te donne une bonne idée du foutoir que cela pourra représenter dans ta hiérarchie de classes

    L'idée est donc de se dire que chaque objet pourra être identifié de manière unique (par un identifiant). Ce sera notre notion d'enté

    Ensuite, nous travaillerons exactement de la même manière que si nous voulions créer une base de donnée. Chaque composant le nombre de dégats, la résistance, la protection (d'estoc / contondante / de coupe/ de feu / de gel, ...), le niveau requis pour l'utilisation, ... représente un "enregistrement" dans une table particulière qui permet de le mettre en relation avec l'entité à laquelle il correspond.

    De cette manière, si tu t'intéresse aux "dégâts du feu" que peut provoquer une arme, il te "suffira" d'aller voir dans la table "degats_de_feu" les différentes entités associées aux enregistrements qui s'y trouvent; étant bien entendu que toutes les armes qui ne disposent pas de la capacité de faire de telles dégats en seront forcément absentes.

    Et il en ira de même si tu t'intéresse aux objets qui t'offrent une résistance à la foudre, qui augmentent ta santé, ta mana ou ton intelligence, en étant simplement bien d'accord sur le fait que tu chercheras ces éléments dans la table adéquate
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/03/2013, 18h33
  2. Compréhension d'un programme
    Par wahidred dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/11/2010, 22h53
  3. Réponses: 3
    Dernier message: 24/02/2010, 14h17
  4. Problème de compréhension d'un programme C
    Par soso78 dans le forum Débuter
    Réponses: 8
    Dernier message: 28/01/2009, 19h13
  5. programme qui consomme beaucoup de memoire
    Par gaut dans le forum Windows
    Réponses: 10
    Dernier message: 01/02/2005, 20h33

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