Le jeu de la vie

julienen Messages postés 9 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 16 mars 2008 - 16 mars 2008 à 10:43
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 17 mars 2008 à 02:05
Bonjour , je suis entrain de faire une application du jeu de la vie sous Vba , mais je bloque sur une procédure qui doit générer la génération suivante .
Je sais qu'il y plusieurs procédure avec des select case mais je voudrais une qui soit optimisée , j'ai une idéé la dessus mais je ne suis pas sur du code  :

Sub genererSuivante(ByVal n As Integer)


Dim Tvi As Boolean
Dim i As Integer
Dim j As Integer
Dim cell As Integer


      
For i = 1 To n
    Tvi = False 'attribue la valeur false par défaut
Next i


For j = 1 To n
Do While j <= n
Randomize
cell = (Int(Rnd() * n))
    If Tvi = False Then
        Tvi = True
         End If
        j = j + 1
    Loop
Next j
End Sub

Merci

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 mars 2008 à 11:13
Salut,

Petite remarque qui n'a rien à voir : fait attention à ceci :
Randomize
cell = (Int(Rnd() * n))

Il ne faut pas faire le randomize à chaque tour de boucle car tu risque de toujours tirer les même nombres !

Fait le randomize une bonne fois pour toute avant ta boucle suffira et te donnera plus de chance d'avoir des nombres aléatoires !
______________________________________
DarK Sidious
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
16 mars 2008 à 14:19
Aussi...

TVI n'étant pas un tableau, ça me paraît superflu de faire une boucle pour lui attribuer la valeur False
<strike>For i = 1 To n</strike>
    Tvi = False 'attribue la valeur false par défaut
<strike>Next i</strike>

De toutes façons, Tvi sera False par défaut en entrant dans cette procédure.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 mars 2008 à 02:05
salut,

OUTCH !!!!!

For i = 1 To n
    Tvi = False 'attribue la valeur false par défaut **pourquoi en boucle?
Next i

For j = 1 To n
Do While j <= n ** pourquoi? t'es déjà dans le FOR
Randomize ** pas besoin en boucle, une seule fois suffit
cell = (Int(Rnd() * n)) **pourquoi fait, tu ne l'utilises pas
    If Tvi = False Then
        Tvi = True ** alors pourquoi tester si de toutes façons tu le passes à true
         End If        j j + 1 ** pourquoi faire, tu est déjà dans une FOR !! sinon juste For j 1 To n STEP 2
    Loop
Next j
End Sub

une faute par ligne et je ne saisis pas le but...., quelle est la question?
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous