diff --git a/perso/galaxy.c b/perso/galaxy.c
index ac6ee68251692741a3a88402564ab35738f01811..5fa2caeadad0e8277694eaf3fae7a85783f67137 100644
--- a/perso/galaxy.c
+++ b/perso/galaxy.c
@@ -40,7 +40,8 @@ int main(int argc, char **argv) {
         printf("\n\n");
         tests();
 
-        Box box_initial = new_box(0.0, 0.0, 10.0, 10.0);
+        double zone = 1e10;
+        Box box_initial = new_box(-zone, zone, zone, -zone);
         // Galaxy* galaxy = create_and_init_galaxy(nb_stars, box_initial, DELTA_T);
 
         
@@ -49,7 +50,6 @@ int main(int argc, char **argv) {
 
 
         /*
-        gestion_de_la_ligne_de_commande();
         allocation_mémoire_et_initialisation_de_la_galaxie();
         itérations_temporelles {
             liberation_des_etoiles_qui_sortent_du_domaine();
@@ -81,28 +81,67 @@ int main(int argc, char **argv) {
 
 Galaxy* create_and_init_galaxy(int nb_bodies, Box box, double delta_t) {
     Star* list_stars = malloc(sizeof(Star) * nb_bodies);
-        // on crée une étoile en (0;0) qui a comme masse 10^6 * masse solaire 
-        // Star* sun = new_star_vel(new_vec(0, 0), speed, acc, 1e6 * MASSE_SOLAIRE, DELTA_T);
-        // list_stars[0] = sun;
+    Vector* v_null = new_vec(0, 0);
+    Star* temp;
 
-        for (int i = 1; i <= nb_bodies; i++) {
-            // Star* temp = new_star_vel();
+    for (int i = 0; i < nb_bodies; i++) {
+        
+        if (i == 0) {
+            // on crée une étoile en (0;0) qui a comme masse 10^6 * masse solaire
+            temp = new_star_vel(*v_null, *v_null, *v_null, 1e6 * MASSE_SOLAIRE, 0.0);
+
+        } else {
+            double m_i = random_mass();
+            Vector r_i = random_position();
+            // si pos est dans box
+            Vector v_i = random_speed(r_i, m_i);
+
+            temp = new_star_vel(r_i, v_i, *v_null, m_i, 0.0);
         }
+        
+        list_stars[i] = *temp;
+
+        // on regarde comment cette étoile se fait attirer par le "soleil"
+        // update_acc(list_stars[i], list_stars[0]);
+    }
+
+
+    Galaxy* galaxy = malloc(sizeof(Galaxy));
+    galaxy -> nb_bodies = nb_bodies;
+    galaxy -> stars = list_stars;
+    galaxy -> box = box;
+
+    return galaxy;
 }
 
 
 void reset_acc_galaxy(Galaxy* galaxy) {
-    printf("bla");
+    Vector* v_null = new_vec(0, 0); 
+
+    for (int i = 0; i < galaxy -> nb_bodies; i++) {
+        galaxy -> stars[i].acc = *v_null;
+
+        /*if (galaxy -> stars[i] != NULL) {
+        }*/
+    }
+
+    free(v_null);
 }
 
 
 void update_pos_galaxy(Galaxy* galaxy, double delta_t) {
-    printf("bla");
+    for(int i = 0; i < galaxy -> nb_bodies; i++) {
+        update_pos_star(&(galaxy -> stars[i]), delta_t);
+    }
 }
 
 
 void free_galaxy(Galaxy* galaxy) {
-
+    /*
+    for (int i = 0; i < galaxy -> nb_bodies; i++) {
+        free(galaxy -> stars[i]);
+    }
+    */
 }
 
 
diff --git a/perso/star.c b/perso/star.c
index 8263e07a52446b45ab5ef1c86e377263eb12c0b3..7925780fd94c538adbe358a5e20c1f51a963d2cc 100644
--- a/perso/star.c
+++ b/perso/star.c
@@ -59,11 +59,18 @@ void reset_acc(Star* star) {
 
 
 void update_acc(Star* target, const Star* const s2) {
-	// target se fait attirer par s2
+	Vector* rj_ri = sub_vec(&(s2 -> pos), &(target -> pos));
+	int G_mi_mj = FORCE_GRAVITATION * target -> mass * s2 -> mass;
+	Vector* temp = mul_vec(rj_ri, G_mi_mj);
+	
+	target -> acc = *mul_vec(temp, (1 / pow(norm(rj_ri), 3)));
+
+	free(rj_ri);
+	free(temp);
 }
 
 
-void update_pos(Star* star, double delta_t) {
+void update_pos_star(Star* star, double delta_t) {
 	// new_position = (2 * pos) - previous_pos + (acc * delta_t * delta_t)
 	star -> pos = *(mul_vec(&(star -> pos), 2));
 	star -> pos = *(sub_vec(&(star -> pos), &(star -> previous_pos)));
@@ -100,13 +107,13 @@ Vector random_position() {
 }
 
 
-Vector random_speed(Star* star) {
+Vector random_speed(Vector r_i, double m_i) {
 	// math.sqrt(FORCE_GRAVITATION * (star -> mass + )) * chaque composante du vecteur v(-sin(phi) ; cos(phi))
 	// où phi = atan2(star -> position.y / star -> position.x) // tan⁻¹
 
-	Vector* p_norm = new_vec(star -> pos.x, star -> pos.y);
-	double temp = sqrt(FORCE_GRAVITATION * (star -> mass + (1e6 * MASSE_SOLAIRE)) / norm(p_norm));
-	double phi = atan2(star -> pos.y, star -> pos.x);
+	Vector* p_norm = new_vec(r_i.x, r_i.y);
+	double temp = sqrt(FORCE_GRAVITATION * (m_i + (1e6 * MASSE_SOLAIRE)) / norm(p_norm));
+	double phi = atan2(r_i.y, r_i.x);
 
 	Vector speed;
 	speed.x = temp * (-sin(phi));
@@ -116,7 +123,7 @@ Vector random_speed(Star* star) {
 }
 
 
-// il faut deja faire une liste de stars qui se trouvent dans une box
+
 Star* super_star(Star* list_stars, int size_list) {
 	Star* super_star = malloc(sizeof(Star));
 
@@ -131,7 +138,6 @@ Star* super_star(Star* list_stars, int size_list) {
 
 		// masse 
 		super_star -> mass += list_stars[i].mass;
-
 	}
 
 	// ne donne pas la même chose si on fait /= 2 pour chaque boucle for
@@ -145,6 +151,34 @@ Star* super_star(Star* list_stars, int size_list) {
 }
 
 
+Vector* resultante(Vector* list_stars, int size_list) {
+	Vector* Fi = new_vec(0.0, 0.0);
+
+	for (int i = 0; i < size_list; i++) {
+		for (int j = 0; j < size_list; j++) {
+			if (j != i) {
+				/*
+				Vector* rj_ri = sub_vec(&(list_stars[j] -> pos), &(list_stars[i] -> pos));
+				int G_mi_mj = FORCE_GRAVITATION * list_stars[i] -> mass * list_stars[j] -> mass;
+				Vector* temp = mul_vec(rj_ri, G_mi_mj);
+
+				Fi = add_vec(Fi, temp)
+				*/
+			}
+		}
+	}
+	
+	Fi -> x /= size_list;
+	Fi -> y /= size_list;
+
+	return Fi;
+}
+
+void new_position(Star* star, Vector resultante) {
+	star -> acc = *(add_vec(&(star -> acc), &resultante));
+}
+
+
 
 
 int random_10() {
diff --git a/perso/star.h b/perso/star.h
index 1216c3b638b9c521eb00fa970980d392020a1cd2..c841dd2d1e4ddaac77978e92dc9b5690f6fe8853 100644
--- a/perso/star.h
+++ b/perso/star.h
@@ -48,10 +48,10 @@ void update_pos_star(Star* star, double delta_t);
 void print_star(const Star* const star);
 
 
-// calcule la force résultante d'une liste de vecteurs
-Vector resultante(Vector** list_vectors);
+// retourne l'accélération d'une étoile d'après toutes les autres d'une liste
+Vector* resultante(Vector* list_stars, int size_list);
 
-// calcule la position de la étoile après avoir subi la force résultante des autres vecteurs (deuxième loi de Newton)
+// calcule la position de l'étoile après avoir subi la force résultante des autres vecteurs (deuxième loi de Newton)
 void new_position(Star* star, Vector resultante);
 
 // calcule l'accélération
@@ -66,7 +66,7 @@ int random_mass();
 Vector random_position();
 
 // retourne une vitesse aléatoire
-Vector random_speed(Star* star);
+Vector random_speed(Vector r_i, double m_i);
 
 
 // calcule une super etoile d'après le poids et la position d'un groupe d'étoiles