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 :

Déplacement d'objets, perception du temps


Sujet :

C++

  1. #1
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut Déplacement d'objets, perception du temps
    Bonjour à tous et à toutes !

    Mon début de programme avance gentiment... Chaque problème résolu en soulève un nouveau (syndrome du tonneau des danaïdes...)
    Je cherche à :
    1) représenter la position de différents nodes dans un espace 2D discretisé en cases (un échiquier, quoi...)
    2) déplacer ces nodes dans l'espace (ce déplacement est une fonction du temps t et de la distance entre les cases)
    3) après chaque déplacement, effectuer une certaine opération position-dépendante (création/suppression de nodes), là aussi variable selon le temps t
    4) incrémenter le temps, et c'est reparti au point 2

    J'ai commencé à écrire un algorithme procédural (faut bien commencer quelque part ) et maintenant que je vois un peu mieux comment ça se passe je cherche à organiser ça en orienté-objet :
    • Une classe LandPositioner aurait conscience de la position des nodes (implémentation via un multimap), communique les positions aux autres classes, et prend en compte les changements provoqués par les autres classes.
    • Une classe Modificator aurait pour tache de récupérer pour chaque case les nodes présents, supprimmer/ajouter des nodes avec une probabilité dépendante du temps, et communiquer les changements à LandPositioner pour qu'il actualise.
    • Une classe Migrator aurait pour mission de choper chaque node et ses coordonnées, et de proposer un déplacement, lui aussi dépendant du temps, et de communiquer les changements à LandPositioner.


    Mes questions :
    1) Le patron vous semble-t-il débile ?
    2) Quand le comportement de pleins de classes dépend d'une variable temps qu'on incrémente au cours d'une boucle, quelle est la meilleure stratégie à adopter pour utiliser cette même variable au sein de classes très différentes ? Faire un héritage d'interface avec une méthode giveTime() ?
    3) Ailleurs dans le projet il y aura d'autres marcheurs aléatoires qui seront pas forcément en espace discret, pas avec les même modalité de déplacement... Comment généraliser la notion de déplacement ? Faire des classes absraites RandomWalker, WalkerModificator, WalkerMigrator ?

    Merci d'avance pour vos conseils
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Points : 162
    Points
    162
    Par défaut
    Sans passer pour un c**, un gros tu veux faire un tableau bidimensionnel graphique ^^ ? Ou alors j'ai rien compris.. ^^'

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Mue ca ressemble plus a une boucle de gameplay maladroitement overengineere selon moi.
    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.

  4. #4
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Ahahaha que ce soit "maladroitement overengineered" je n'en doute pas

    Merci pour vos réponses, mon explication était sans doute très mauvaise si personne n'a compris : mea culpa.

    Alors le but du programme, c'est faire une simulation, pas pour du gameplay, mais pour un modèle statistique. Oui, c'est un peu moins funky
    Ce que je dois faire, c'est construire un arbre non-binaire en partant des feuilles. Les nodes (initialement les feuilles) se balladent aléatoirement dans un échiquier. Quand plusieurs nodes se rencontrent dans une même case, alors il est possible que plusieurs d'entre eux fusionnent pour donner un node parent, qui à son tour peut se ballader dans l'échiquier.
    L'idée, c'est que toutes les lois de proba (déplacement, fusion) changent à chaque pas de temps. Deux objets qui doivent (obligatoirement) être pré-calculés contiennent ces informations de changement temporel des lois. Du coup à chaque pas de temps, il faut bien leur demander l'info nécessaire pour le déplacement/fusion.

    Comme je n'y connais rien en POO j'ai sans aucun doute fait un patron pas très-très joli, mais qui a l'air de marcher/boiter. C'est pour ça que je vous demandais si il existait une manière classique de traiter ce genre de situation, car je me doute bien que dans les jeux vidéos, des trucs qui bougent sur une map c'est assez récurrent

    Et ne pas faire une solution trop boîteuse (comme celle que j'ai faite ) m'intéresse, car ailleurs et dans d'autres situations, je vais avoir besoin de ré-utiliser la notion de déplacement, donc je demandais si il existait un patron un peu "générique"
    Je m'en remet donc à votre expérience

    Bien cordialement,
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    En fait j'ai rien compris a tes classes et comportements du premier message.
    Mais si tu veux faire une simulation qui fasse evoluer de la meme maniere tous tes acteurs, ton programme devrait avoir cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main() {
      Simulation s;
      int dt = 0;
      while(1) {
        int start = now(); // tu recuperes le timestamp ou quoi que ce soit qui indique le present
        s.update(dt);
        dt = now() - start;
      }
    }
    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.

  6. #6
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Ouais cool ça c'est déjà très chouette, merci !

    Pour le reste bon je m'en dépatouillerai ! J'imagine que débutant il faut passer par des trucs crado à un moment où à un autre, quitte à revoir tout ça au fur et à mesure qu'on gagne des poits d'xp en conception ...

    Merci beaucoup !
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  7. #7
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Seabirds Voir le message
    Ouais cool ça c'est déjà très chouette, merci !

    Pour le reste bon je m'en dépatouillerai ! J'imagine que débutant il faut passer par des trucs crado à un moment où à un autre, quitte à revoir tout ça au fur et à mesure qu'on gagne des poits d'xp en conception ...

    Merci beaucoup !
    Humm, non. A vrai dire, ce n'est absolument pas nécessaire. Le problème, c'est que les débutants
    1. essayent régulièrement de faire des choses qui sont très largement au delà de leurs compétences, ce qui les incite à essayer de trouver des solutions qui n'en sont absolument pas
    2. utilisent régulièrement des cours/tutos inadaptés et obsolètes qui abordent l'apprentissage sous l'angle d'une approche contre laquelle on se bat depuis près de dix ans et qui -- par manque de précision -- leur apprennent un tas d'aneries que l'on devra leur faire oublier par la suite

    Ajoute à cela qu'il existe en réalité très peu de tutos/cours qui suivent une approche moderne et tu comprendras que ce n'est pas un reproche mais plutôt une constatation dépitée, qui nous pousse à fournir de nouvelles ressources. Mais la rédaction de "bons" cours / tutoriaux est malheureusement un processus qui prend du temps... beaucoup de temps
    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

  8. #8
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Ahaha pour le point 1, ça me rappelle quelque chose... x) Malheureusement on n'a parfois guère le temps ni la possibilité de commencer par le début... Quand il faut faire de A à Z un projet en un temps limité, et parfois assez loin des compétences initiales, il faut parfois accepter de faire vite-et-le-moins-mal-possible. C'est dommageable je te l'accorde. Dieu merci je ne code pas le protocole de sécurité des ogives russes.

    Pour le point 2... Oui c'est très étrange, j'ai potassé quelques bouquins, cours, tutos, pour essayer de me former à la POO et au C++, mais les logiques de pédagogie varient beaucoup. Bon, à force de traîner un peu partout j'imagine que j'ai au moins (inch'allah) posé un jour les yeux sur un "bon" tuto ahaha
    D'ailleurs, content d'avoir potassé le bouquin que tu conseilles en signature
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  9. #9
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Seabirds Voir le message
    D'ailleurs, content d'avoir potassé le bouquin que tu conseilles en signature
    Ah, ben, c'est gentil, ca vu que, au cas où cela t'aurait échappé, j'en suis l'auteur
    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

  10. #10
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Ah, ben, c'est gentil, ca vu que, au cas où cela t'aurait échappé, j'en suis l'auteur
    C'est la deuxième fois que je te lis le dire cette semaine. Haaa ! les effets de la célébrité .
    -- Yankel Scialom

  11. #11
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Quel naïf je fais...
    Il manque le smiley groupie/fan "j'admire beaucoup ce que vous faites et j'aimerais teeeeellement vous ressembler un jour..."
    Cela dit, c'est une ressource qui m'a été très utile, merci
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  12. #12
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par prgasp77 Voir le message
    C'est la deuxième fois que je te lis le dire cette semaine. Haaa ! les effets de la célébrité .
    Ben oui, que veux tu

    Je connais l'histoire de mon livre, et il n'y a rien à faire : chaque fois que je reçois des compliments à son sujet, ca me fait vraiment très plaisir... Je me contente de bien peu, non
    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. [mapping] composite key et objet en même temps
    Par Invité dans le forum Hibernate
    Réponses: 5
    Dernier message: 21/09/2006, 14h15
  2. m3g : utilisation de plusieurs objets en même temps
    Par chabfive dans le forum Développement Mobile en Java
    Réponses: 1
    Dernier message: 23/06/2006, 14h00
  3. [Tkinter] déplacement d'objet
    Par airod dans le forum Tkinter
    Réponses: 2
    Dernier message: 02/05/2006, 09h26
  4. [FLASH] Déplacement des objets avec clavier ???
    Par 3adoula dans le forum Flash
    Réponses: 1
    Dernier message: 07/01/2006, 01h03
  5. Déplacement d'Objets
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 6
    Dernier message: 20/09/2003, 14h28

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