Commit 7d52d01

mo khan <mo@mokhan.ca>
2014-12-31 04:49:09
use cell_at.
1 parent 98fa762
src/cell.c
@@ -9,6 +9,7 @@ Cell* cell_create(int number_of_cells) {
 
   for (int i = 0; i < number_of_cells; i++) {
     cells[sizeof(Cell) * i].alive = false;
+    /*cells[sizeof(Cell) * i].index = i;*/
   }
   return cells;
 }
src/cell.h
@@ -2,6 +2,7 @@
 
 typedef struct {
   bool alive;
+  //int index;
 } Cell;
 
 Cell* cell_create(int number_of_cells);
src/world.c
@@ -105,6 +105,7 @@ World* world_evolve(World *world) {
 }
 
 void world_print(World *world) {
+  /*world_each(world, cell_print);*/
   for (int i = 0; i < world_number_of_cells(world); i++) {
     if (i % world->width == 0) { printf("\n"); }
     cell_print(&world->cells[i]);
src/world_test.c
@@ -26,11 +26,11 @@ void any_live_cell_with_fewer_than_two_live_neighbours_dies_as_if_caused_by_unde
   /*{ ' ', ' ', ' ' },*/
   /*{ ' ', ' ', ' ' },*/
   World *world = world_create(3, 3);
-  world->cells[0].alive = true;
+  cell_change_life(world_cell_at(world, 0), true);
 
   World *new_world = world_evolve(world);
-  assert(false == new_world->cells[0].alive);
-  assert(false == new_world->cells[8].alive);
+  assert(false == world_cell_at(new_world, 0)->alive);
+  assert(false == world_cell_at(new_world, 8)->alive);
 }
 
 void any_live_cell_with_two_live_neighbours_lives_on_to_the_next_generation() {
@@ -38,12 +38,12 @@ void any_live_cell_with_two_live_neighbours_lives_on_to_the_next_generation() {
   /*{ ' ', ' ', ' ' },*/
   /*{ ' ', ' ', ' ' },*/
   World *world = world_create(3, 3);
-  world->cells[0].alive = true;
-  world->cells[1].alive = true;
-  world->cells[2].alive = true;
+  cell_change_life(world_cell_at(world, 0), true);
+  cell_change_life(world_cell_at(world, 1), true);
+  cell_change_life(world_cell_at(world, 2), true);
 
   World* new_world = world_evolve(world);
-  assert(true == new_world->cells[1].alive);
+  assert(true == world_cell_at(new_world, 1)->alive);
 }
 
 void any_live_cell_with_three_live_neighbours_lives_on_to_the_next_generation() {
@@ -51,12 +51,12 @@ void any_live_cell_with_three_live_neighbours_lives_on_to_the_next_generation()
   /*{ ' ', 'x', ' ' },*/
   /*{ ' ', ' ', ' ' },*/
   World *world = world_create(3, 3);
-  world->cells[0].alive = true;
-  world->cells[2].alive = true;
-  world->cells[4].alive = true;
+  cell_change_life(world_cell_at(world, 0), true);
+  cell_change_life(world_cell_at(world, 2), true);
+  cell_change_life(world_cell_at(world, 4), true);
 
   World* new_world = world_evolve(world);
-  assert(true == new_world->cells[1].alive);
+  assert(true == world_cell_at(new_world, 1)->alive);
 }
 
 void any_live_cell_with_more_than_three_live_neighbours_dies_as_if_by_overcrowding() {
@@ -64,18 +64,18 @@ void any_live_cell_with_more_than_three_live_neighbours_dies_as_if_by_overcrowdi
   /*{ 'x', 'x', 'x' },*/
   /*{ ' ', 'x', ' ' },*/
   World *world = world_create(3, 3);
-  world->cells[1].alive = true;
-  world->cells[3].alive = true;
-  world->cells[4].alive = true;
-  world->cells[5].alive = true;
-  world->cells[7].alive = true;
+  cell_change_life(world_cell_at(world, 1), true);
+  cell_change_life(world_cell_at(world, 3), true);
+  cell_change_life(world_cell_at(world, 4), true);
+  cell_change_life(world_cell_at(world, 5), true);
+  cell_change_life(world_cell_at(world, 7), true);
 
   assert(5 == world_neighbours(world, 0));
   assert(4 == world_neighbours(world, 1));
   assert(4 == world_neighbours(world, 4));
 
   World* new_world = world_evolve(world);
-  assert(false == new_world->cells[4].alive);
+  assert(false == world_cell_at(new_world, 4)->alive);
 }
 
 void any_dead_cell_with_exactly_three_live_neighbours_becomes_a_live_cell_as_if_by_reproduction(){
@@ -83,12 +83,12 @@ void any_dead_cell_with_exactly_three_live_neighbours_becomes_a_live_cell_as_if_
   /*{ 'x', ' ', 'x' },*/
   /*{ ' ', ' ', ' ' },*/
   World *world = world_create(3, 3);
-  world->cells[1].alive = true;
-  world->cells[3].alive = true;
-  world->cells[5].alive = true;
+  cell_change_life(world_cell_at(world, 1), true);
+  cell_change_life(world_cell_at(world, 3), true);
+  cell_change_life(world_cell_at(world, 5), true);
 
   World* new_world = world_evolve(world);
-  assert(true == new_world->cells[4].alive);
+  assert(true == world_cell_at(new_world, 4)->alive);
 }
 
 void it_returns_the_correct_number_of_living_neighbors() {
@@ -96,10 +96,10 @@ void it_returns_the_correct_number_of_living_neighbors() {
   /*{ ' ', ' ', ' ' },*/
   /*{ 'x', ' ', 'x' },*/
   World *world = world_create(3, 3);
-  world->cells[0].alive = true;
-  world->cells[2].alive = true;
-  world->cells[6].alive = true;
-  world->cells[8].alive = true;
+  cell_change_life(world_cell_at(world, 0), true);
+  cell_change_life(world_cell_at(world, 2), true);
+  cell_change_life(world_cell_at(world, 6), true);
+  cell_change_life(world_cell_at(world, 8), true);
 
   assert(world_neighbours(world, 0) == 3);
   assert(world_neighbours(world, 1) == 4);