Modélisation d'une avalanche
Résolu
mgkextension
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
MGKextension -
MGKextension -
Bonjour, dans le cadre de mes etudes, je dois réaliser un programme qui simule une avalanche type grain de sable ou flocon de neige. Je suis débutant en VBA.
J'ai pensé à travailler sur une grille carré en vue du dessus en plaçant dans chaque cellule de façon aléatoire un nombre de grain précis tombant de façon aléatoire grain par grain en fonction du nombre obtenu aléatoirement. Voici ce que j'ai fais pour simuler aléatoirement un nombre:
Sub nombreAleatoireDansPlageValeurs()
Dim Mini As Integer, Maxi As Integer
Mini = 1
Maxi = 5
Randomize
MsgBox Int((Maxi - Mini + 1) * Rnd + Mini)
End Sub
Ensuite, au fur et à mesure que la grille se remplie, je veux effectuer des conditions sur chaque cellule, si la cellule contient plus de 4 grains, elle s'écroule en en laissant un seul dans cette cellule, le reste s'éparpille autour de la cellule, et ainsi de suite jusqu'a ce qu'il y est un seul grain qui tombe en dehors de la grille, dans ce cas le programme s'arrête.
Je pense qu'il faut faire une boucle dans un boucle et introduire les if puis faire un programme principal qui appelle le programme plus haut puis fait les conditions et réitère le procédé.
Merci d'avance.
J'ai pensé à travailler sur une grille carré en vue du dessus en plaçant dans chaque cellule de façon aléatoire un nombre de grain précis tombant de façon aléatoire grain par grain en fonction du nombre obtenu aléatoirement. Voici ce que j'ai fais pour simuler aléatoirement un nombre:
Sub nombreAleatoireDansPlageValeurs()
Dim Mini As Integer, Maxi As Integer
Mini = 1
Maxi = 5
Randomize
MsgBox Int((Maxi - Mini + 1) * Rnd + Mini)
End Sub
Ensuite, au fur et à mesure que la grille se remplie, je veux effectuer des conditions sur chaque cellule, si la cellule contient plus de 4 grains, elle s'écroule en en laissant un seul dans cette cellule, le reste s'éparpille autour de la cellule, et ainsi de suite jusqu'a ce qu'il y est un seul grain qui tombe en dehors de la grille, dans ce cas le programme s'arrête.
Je pense qu'il faut faire une boucle dans un boucle et introduire les if puis faire un programme principal qui appelle le programme plus haut puis fait les conditions et réitère le procédé.
Merci d'avance.
A voir également:
- Modélisation d'une avalanche
- Logiciel de modélisation 3d gratuit - Guide
- Sweet Home 3D - Télécharger - Architecture & Déco
- Modélisation 3d sketchup - Télécharger - 3D
- Blender modelisation - Télécharger - 3D
- Modelisation 3d iphone - Guide
3 réponses
Bonjour
le reste s'éparpille autour de la cellule
c a d ?
aléatoire , contigûe et/ou proche ?
taille de la grille (environ) ?
Ordre de remplissage ?
Dans une cellule ayant récupéré un grain suite à l'opération précédente, peut-on refaire un tirage ?
sens de la pente :diagonal, vertical ?
Michel
le reste s'éparpille autour de la cellule
c a d ?
aléatoire , contigûe et/ou proche ?
taille de la grille (environ) ?
Ordre de remplissage ?
Dans une cellule ayant récupéré un grain suite à l'opération précédente, peut-on refaire un tirage ?
sens de la pente :diagonal, vertical ?
Michel
Bonjour,
en utilisant la récursivité (réactions en chaîne) avec éboulement vers le bas de la pente (aléatoire sud,sud ouest, sud est)
la ligne du bas est forcément supérieure à 4 flocons : impossible de descendre + bas comme toute avalanche
http://www.cjoint.com/c/ELzsof2JkB5
en utilisant la récursivité (réactions en chaîne) avec éboulement vers le bas de la pente (aléatoire sud,sud ouest, sud est)
la ligne du bas est forcément supérieure à 4 flocons : impossible de descendre + bas comme toute avalanche
http://www.cjoint.com/c/ELzsof2JkB5
Je voudrais maintenant faire pareil mais vu du dessus. Le programme donne une avalanche vue de face dirons nous. Serait il possible de faire pareil vue du dessus avec les mêmes conditions, en rajoutant la condition sur les bords de la grille: le programme s'arrête si il y a plus de 4 grains de sable strictement sur les bords. ?
bonjour
petite erreur ( pas enregistré la dernière fois
dans la procédure "repandre" ajouter End if à la fin
Quant à ta 2° demande, c'est non:
j'ai passé pas mal d'heures sur ta 1° demande car VBA n'aime pas beaucoup les récursivités de procédures: bien que sur les forums d'entraide, on ne fait pas "à la place", mais on aide sur des points précis (genre mon erreur indiquée + haut), Ce problème m'avait branché.
Donc, tu as le principe "de l'avalanche", à toi de jouer pour la sortie du cadre d'un flocon. tout se passe dans la proc"dure "répandre" dans la partie "possibités"
petite erreur ( pas enregistré la dernière fois
dans la procédure "repandre" ajouter End if à la fin
Case 3 'sud-est
If Lieu.Offset(1, 1) = "" Then Nbre = Nbre + 1
Lieu.Offset(1, 1) = Lieu.Offset(1, 1) & "T"
If Len(Lieu.Offset(1, 1)) = 5 Then: Call Repandre(Lieu.Offset(1, 1), Lig + 1, Col + 1)
End Select
Loop Until Len(Lieu) = 1
End If
Nbsens = 0
End Sub
Quant à ta 2° demande, c'est non:
j'ai passé pas mal d'heures sur ta 1° demande car VBA n'aime pas beaucoup les récursivités de procédures: bien que sur les forums d'entraide, on ne fait pas "à la place", mais on aide sur des points précis (genre mon erreur indiquée + haut), Ce problème m'avait branché.
Donc, tu as le principe "de l'avalanche", à toi de jouer pour la sortie du cadre d'un flocon. tout se passe dans la proc"dure "répandre" dans la partie "possibités"
2eme étape: si la valeur de la case est supérieur strictement à 4 alors il y a redistribution des particules de sable sur les sites voisins les plus proches de manière àléatoire.
Attention on peut avoir des réactions en chaîne.
Pour les particules se trouvant sur un des bords (hors coin), le modèle considère que si la pile dépasse la valeur critique, il y a redistribution de 3 grains et perte de 1 grain.
Dans le cas des quatre sites du coin du réseau, 2 grains sont perdus et 2 sont redistribués.
On remplit grain par grain aléatoirement dans la grille, les grains s'additionnent au fur et à mesure dans les cellules. A chaque fois on garde la grille précédente auquel on ajoute un nouveau grain de manière aléatoire.
Le sens de la pente: c'est comme un puissance 4 vue du dessus, la pente est donc vertical. 4 grains dans la même cellule et la pile s'écroule.
Merci de votre temps
ou
4 grains dans la même cellule et la pile s'écroule.
?
marrant!, ca nous changera des calculs de TVA
remarque que j'ai l'impression que ca va attirer pas mal de mes petits camarades de CCM !
Passez de bonnes fêtes de Noël et merci