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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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

  2. #2
    Membre très actif
    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
    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 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    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 éclairé 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
    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,

  5. #5
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    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 éclairé 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
    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 !

+ 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