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 :

Problème de gestion de calculs


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut Problème de gestion de calculs
    Bonjour à tous !

    Voila, j'aimerai avoir vos avis/conseil/méthode pour réaliser des calculs au sein d'une classe ( je m'explique ) .

    En fait, je doit faire pas mal de calcul différent ( +,-,%,*,/) sur divers variable . Le problème est que je finit par me perdre sévèrement, car j'ai une quantité de calcul qui se ressemble mais ne sont bien sur pas identique . De plus, je manipule des tableau quasi identique ( mais pas tout à fait ) dont les indice de début sont a 0 pour certain , 1 pour d'autre ...

    Enfin , aprés 1 semaine de programmation acharné , j'en ai eu marre de me perdre dans mes calculs, et je suis entrain de reprendre le problème à la base , histoire d'y voir plus clair et de faire les choses plus proprement .

    Est-il ar exemple necessaire de mettre toute mes valeur multiplicative ( enfin qui interviennet dans mes opérations quoi ) dans des variables dont le nom est explicatif ?

    Enfin ... heu, je suis preneur de toutes vos petites astuces liés a ce genre de problème

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Sans savoir un peu le domaine d'application, c'est pas évident.

    Si tu fais beaucoup de boucles sur tes tableaux, peut-être peux tu faire de tes tableaux des classes sur lesuqelles ont peut effectuer les opération de manière globale (classes de matice par exemple, où l'on peut aisément ajouter un nombre à tous les éléments).

    Si tes calculs ressemblent à des évaluations de polynomes, fait une classe polynomes.

    ...

    Autre chose, dans certains cas, il peut être intéressant de définir les calculs non pas directement dans le programme, mais dans un fichier de configuration, à l'aide d'un langage spécifiquement dédié au problème. C'est un investisement qui peut rapporter car :
    - Un langage dédié sera forcément plus compréhensible à la relecture
    - Eventuellement, un non développeur pourra utiliser lui même ce langage sans devoir passer par toi pour toutes les évolutions
    - C'est amusant et instructif à faire
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    Je précise un peu :

    Je travail sur l'affichage , le dessein, le chargement et la sauvegarde de "map" . Des "map" au sens jeux-video, en 2D , composé de petit carré "tile".

    Le problème est que les calcul de quoi est affiché ou, comment, et a quel indice deviennet vite TRES casse-geule .

    Exemple :

    Avant je chargeait mes identifiant de Tile ( un entier ) dans un tableau simple . Et j'y accédais par des chose genre [ x + y*LargeurDeMap ] .
    On ajoute a sa le scrolling , ca deveint déja moins drole .
    On ajoute a sa le fait que je manipule deux ensemble différent ( des tiles "normaux" et des tiles plus gros, composé de quatre petit tile ( ( donc variation en X et en Y ) .
    On ajoute a cela que souvent je manipule aussi des "paquet" de 12 gros tile.
    Je fait donc sans arrêt des conversion de coordoné entre tout ces paquets, et ca part vite en vrille .

    En plus, je gère la selection des "tile" que l'utilisateur va mettre sur la map dans une petite fenetre a part . A la sélection, j'enregistre le numéro du "paquet de 12 tile" auquel il appartient .
    Puis j'ai pas mal d'opération a faire

    Enfin bref ... spa jolie du tout ^^

    J'ai donc reprit a zéro avec l'idée de faire plus simple .

    Je me suis dit que ca peut surement me simplifier la vie que de mettre déja un tableau a deux dimension pour les tiles de ma map, auquel j'accéderai en [x][y]

    Ensuite je vais voir ( je n'ai encore jamais fait, donc ce sera en même temps didactique ^^ ) si il ne serait judicieux d'implémenter l'opérateur d'indexation pour la classe qui gere mon "tileset" ( ensemble de tile, dont les id se retrouve dans la map ) .

    A méditer :p

  4. #4
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Tu pourais utiliser des structures de classe pour te simplifier la vie, comme par exemple :
    class Title;
    class Big_Title : public title;
    class Packet_Title;(Classe qui contien un vecteur de title et divers fonctions de trètement).

    Ensuite pour aficher un title sur l'écran avec SDL par exmeple :
    MonPacketDeTitle[X][Y].blitsurface(screen);
    //[X] retourne un objet Packet_Title
    //[Y] un objet Title
    //.blitsurface envoi la tuile sur l'écran au position x et y a l'intérieur de Title
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    Tout d'abord :
    Ensuite pour aficher un title sur l'écran avec SDL par exmeple :
    MonPacketDeTitle[X][Y].blitsurface(screen);
    //[X] retourne un objet Packet_Title
    //[Y] un objet Title
    //.blitsurface envoi la tuile sur l'écran au position x et y a l'intérieur de Title
    Je suis pas sur que ce soit l'idéal , car on ne tient pas compte de la position x,y du début/fin de la map ( la map a affiché ne prend pas tout l'écran ) , ni du scrolling .... ou alros j'ia pas comprit ton idée

    Sinon concernant l'idée de dérivée mes classes je ne vois pas trop l'intéret, car en réalité mes paquet/ gros tile/ petit tile, sont tous contenu les uns dans les autres , ce ne sont pas 3 type d'objet séparé .

    Par contre, je pourrait peut-etre gérer des fonctions me permettant de trouver des correspodance entre petit/gros tile et le paquet auxquel ils appartiennent, ca allègerai un peu le reste des calculs je pense ...

    Enfin bon, je m'y remet histoire d'y voir un peu plus clair
    merci .

  6. #6
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    J'ai fait sa pour donner une idée. Sinon comme Gros title est come un title, qui est juste un peut lus gros(qui a donc la particulariter d'avoir une taille diférente), le reste est identique et donc un éritage permet de conserver les caractéristiques 'un title. Ensuite la classe Block_Title contien toute les fonction de gestion des titles qui sont contenu dedan, par exemple des itérateur et algorithmes de ta création. Enfin une classe plus grande contiendra les block, que tu pouras par exemple apeller Map. Cette classe permettra de gèrer les diférents bloc, de simplifier divers opération, d'ajouter et de suprimer des bloc, des titles ect. En plus grace au fait que Big_Title est dériver de Title un pointeur Title* peut contenir un Big_Title.

    Ensuite l'utilisation de [] est a éviter dans ces cas, ou en tout cas auras une utiliter moindre comparer a des fontions du genre :
    get(int x, int y)
    ou encore
    template<T>
    find( T val )

    Ensuite tu peut dévelloper, pour rajouter a ta class Title des fonctions pour charger les images depuis des fichier, et les coller contre une surface. C'est ce que je suis en train de faire pour gèrer des map de jeux vidéo avec la sdl. Je prend en compte la trensparence, la taille des titles(32*32 par défaut mais grace a l'éhitage j'aurais des titles avec taille Non-Fixe et position a base de pixel et non multiple de 32). Je peut ainsi bien gèrer la colision avec la même classe qui gère l'afichage, l'enregistrement de la map dans un fichier texte et le chargement ^^
    Si tu veut jetter un coup d'oeuille a ce que j'ai fait :
    http://www.developpez.net/forums/viewtopic.php?t=404351
    http://t4cwebserver.free.fr/src_fp.zip
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    Bon merci ^^ je vais méditer tout ca
    Je reviens un peu plus tard, pour vous tenir au courant

Discussions similaires

  1. problème de gestion d'erreurs
    Par champijulie dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/05/2005, 17h18
  2. Problème de gestion d'un octree
    Par MaxPayne dans le forum OpenGL
    Réponses: 9
    Dernier message: 06/04/2005, 10h17
  3. problème de gestion de fenêtre
    Par clemsouz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/11/2004, 14h35
  4. Problème de gestion fichiers
    Par glutock dans le forum ASP
    Réponses: 2
    Dernier message: 08/04/2004, 11h55
  5. [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Par xherault dans le forum Composants VCL
    Réponses: 5
    Dernier message: 23/05/2003, 15h35

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