Bonjour j'ai un souci avec mon code Fortran pour un Jeu De Vie.
Mon soucis est que j'ai la matrice 3*3 suivante :
1 0 0
1 1 0
0 0 1
Lorsque je passe ma fonction nb_voisins_vivants(i,j,G) sur la case de coordonnée i=1, j=1 j'obtiens bien 2 (voisins).
Cependant dans ma fonction prochain_etat(i,j,G) qui rend la valeur d'une case a la génération suivante, lorsque je PRINT la valeur de nb_voisins_vivants(i,j,G) avec toujours i=1 et j=1 j'obtiens 5 !!!
Puis si je boucle la fonction et que je continue avec les mêmes coordonnées il me donne 11 puis 17 ... (+6 a chaque fois)
Je ne comprends pas pourquoi ?
Y aurait-il un problème avec ma fonction nb_voisins_vivants(i,j,G) ?
Merci d'avance pour votre aide.
Code : 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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! INTEGER FUNCTION prochain_etat(i,j,G) INTEGER, DIMENSION(:,:),INTENT(INOUT) :: G INTEGER, INTENT(INOUT) :: i,j IF (G(i,j)==1) THEN PRINT*, nb_voisins_vivants(i,j,G) IF (nb_voisins_vivants(i,j,G)==2 .OR. nb_voisins_vivants(i,j,G)==3) THEN prochain_etat=1 ELSE prochain_etat=0 END IF ELSE IF (nb_voisins_vivants(i,j,G)==3) THEN prochain_etat=1 ELSE prochain_etat=0 END IF END IF END FUNCTION prochain_etat !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
J'ai joins mon fichier *.f90 dans le zip pour que vous voyez un peu ce que j'ai fais.
Partager