Code:#define LIFE_MATRIX_SIZE_X 100 #define LIFE_MATRIX_SIZE_Y 100 #define DEAD 0 #define ALIVE 1 char life_matrix [LIFE_MATRIX_SIZE_Y][LIFE_MATRIX_SIZE_X]; char life_matrix2[LIFE_MATRIX_SIZE_Y][LIFE_MATRIX_SIZE_X]; void Life_Evolve() { static const int movx[] = { 0, 1, 1, 1, 0, -1, -1, -1 }; static const int movy[] = { -1, -1, 0, 1, 1, 1, 0, -1 }; int i, x, y, xn, yn; int alive_count; for (y = 0; y < LIFE_MATRIX_SIZE_Y; y++) { for (x = 0; x < LIFE_MATRIX_SIZE_X; x++) { alive_count = 0; for (i = 0; i < 8; i++) { xn = x + movx[i]; if (xn < 0) xn = LIFE_MATRIX_SIZE_X-1; else if (xn >= LIFE_MATRIX_SIZE_X) xn = 0; yn = x + movy[i]; if (yn < 0) yn = LIFE_MATRIX_SIZE_Y-1; else if (yn >= LIFE_MATRIX_SIZE_Y) yn = 0; if (life_matrix[yn][xn] == ALIVE) alive_count++; } // for i if (life_matrix[y][x] == ALIVE) life_matrix2[y][x] = (alive_count == 2 || alive_count == 3) ? ALIVE : DEAD; else life_matrix2[y][x] = (alive_count == 3) ? ALIVE : DEAD; } // for x } // for y memcpy(life_matix, life_matrix2, sizeof(life_matrix)); } // Life_Evolve