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