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

Android Discussion :

Gestion d'un algorithme de rivière


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut Gestion d'un algorithme de rivière
    Bonjour.

    Après avoir généré une map grâce a l’algorithme Diamond Square, j'aimerais pouvoir gérer un algorithme qui crée des rivière, en fonction de la répartition de la pluie.

    Pour ce faire, je donne à chaque "objet" de terrain qui comporte de la pluie, un objet cible qui va recevoir l'eau accumulé par la pluie. Cet objet "receveur" sera celui qui sera le plus bas alentour.


    Si cet objet "receveur" contient lui même de la pluie, alors cette eau va s'accumuler et le prochain "receveur" va recevoir lui même plus d'eau, jusqu'a ce que cette eau se voit graphiquement par exemple et puisse former une rivière.

    Ex pseudo code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //je trouve l'objet receveur de chaque partie du terrain qui recoit de la pluie
    Pour tous les objets "pluie" P : 
           ObjetLePlusBas OB = chercher le plus bas allentour();
                P.receveur = OB ;
     
    //J'actualise pour créer la répartition de l'eau 
    Pour tous les objets "pluie" P :
         P.actualise() ;
     
    //la fonction actualise de l'objet j'envoie l'eau que l'objet contien sur son receveur :
    actualise() :
           receveur.eaurecu += pluie + eaurecu ;
    Le problème : si un carré reçoit plusieurs sources d'eau, comment exécuter l'algorithme dans le bon ordre pour qu'aucune pluie ne puisse être oublié ?

    C'est un peu floue mais j'espère que vous aurez compris le pb.
    Mon objectif étant de trouver le moyen le plus simple et léger possible pour faire ce calcul...
    Si quelqu'un a une idée merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    C'est un peu le même problème que pour un automate de Conway, il me semble. Comme chaque modification de cellule peut impacter d'autres cellules, il faut procéder avec 2 tableaux de cellules : alternativement, l'une sert de base (on l'a parcourt et on évalue, pour chaque cellule, ou va l'eau qu'elle contient), l'autre sert pour stocker l'évolution (là où l'eau va), et on inverse. Ainsi, les modifications d'une cellule à un tour N n'ont d'effet que le tour suivant N+1 et on peut traiter les cellules dans l'ordre qu'on veut.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    Ok, merci joel.drigo.

    Mais ca reste un peu floue.
    Tu pourrais me montrer un pseudo code pour illustrer ta methode ?

    Quand tu dis "inverser", tu parles du parcour du tableau ? ( en partant du dernier vers le premier )

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Quelque chose comme :

    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    t0 = un tableau L x H
    t1 = un tableau L x H
     
    tant que condition faire
     
        pour i de 1 à H // Java (for i=0; i<H; i++)
            pour j de 1 à L
     
                  q = quantité d'eau en t0[i][j]
     
                  (x,y) = destination de l'eau d'une case (i,j)
     
                  t1[x][y] += q
     
            fin pour
        fin pour        
     
        "afficher" t1
     
        // inverser les 2 tableaux (seules les références sont échangées, donc ça va très vite)
        temp = t0
        t0 = t1
        t1 = temp
     
        // il peut nécessaire de réinitialiser t1 (partiellement pour optimiser, les bords par exemple uniquement, ce qui correspondrait à une arrivée de l''extérieur" de la map)
     
    fin faire tant

    t0 correspond toujours à l'état t-1, et t1 à l'état t, après la double boucle i/j
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Ca a l'air marrant comme code à développer
    Si la réponse vous a aidé, pensez à cliquer sur +1

Discussions similaires

  1. Algorithme de gestion/verification de planning
    Par Arnard dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2007, 14h31
  2. Algorithme de gestion d'objets multiples
    Par aderdu91 dans le forum Développement 2D, 3D et Jeux
    Réponses: 9
    Dernier message: 18/04/2007, 22h11
  3. Cherche algorithme pour gestion d'humains
    Par dontDeleteMe dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 30/01/2007, 23h45
  4. Algorithme pyramidal en gestion
    Par ctl1970 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 15/11/2006, 18h44
  5. Algorithme [Gestion d'un compte bancaire]
    Par Laeticia dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 04/02/2005, 10h57

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