bonsoir,
je continue dans mon jeu de la vie en camllight a avoir quelques soucis techniques car je maitrise encore tres mal les subtilités du langage
voila ou j'en suis
a savoir je considere qu'une cellule vivante contient un 1 et une morte un 0
et que la matrice est de dimensions n*p
je crois savoir d'ou vient le probleme mais ne sais pas le resoudre : je voudrais en fait creer une copie de la grille d'origine pour eviter justement ce qui se produit i.e. que la grille soit modifiée cellule par cellule et non pas d'un coup comme je le voudrais
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
26
27
28
29
30
31
32
33
34
35
36 (* donc la c'est la fonction qui permet de calculer le nombre de voisins a une case *) let nb_voisins grille n p i j = let x = ref (-(grille.(i).(j))) in for k=(i-1) to (i+1) do for t=(j-1) to (j+1) do x:=!x+(grille.((k+n) mod n).((t+p) mod p)) done done; !x;; (*ici je cree une grille comprenant dans chaque cellule le nombre de cellule vivantes voisines*) let grille_tremplin grille n p = let grille_aux = make_matrix n p 0 in for i=0 to (n-1) do for j=0 to (p-1) do grille_aux.(i).(j)<-(nb_voisins grille n p i j) done done; grille_aux;; (*et la c'est ici que ca se gate je veux une fonction qui renvoie la grille apres une premiere evolution*) let au_pas grille n p = let grille_aux = grille in for i=0 to (n-1) do for j=0 to (p-1) do if ((grille_tremplin grille_aux n p).(i).(j)=2) then grille.(i).(j)<-grille.(i).(j) else if ((grille_tremplin grille_aux n p).(i).(j)=3) then grille.(i).(j)<-1 else grille.(i).(j)<-0 done done; grille;;
enfin bon j'ai essayé mais je ne vois pas trop a part creer ce double hors de la fonction, mais ca c'est pas terrible ^^
donc je ne suis pas contre un autre petit coup de pouce =D
Partager