#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
void print(int **size, int num);
void copybox(int **one, int **two, int num);
int main()
{
int user_size;
int **real_size, **copy_size;
int i, j;
int count;
srand(time(NULL));
printf("라이프 게임 판 크기 입력 : ");
scanf("%d", &user_size);
real_size = (int **)calloc(user_size+2, sizeof(int *));
copy_size = (int **)calloc(user_size+2, sizeof(int *));
for(i=0; i<user_size+2; i++)
{
real_size[i] = (int *)calloc(user_size+2, sizeof(int));
copy_size[i] = (int *)calloc(user_size+2, sizeof(int));
}
for(i=1; i<=user_size; i++)
{
for(j=1; j<=user_size; j++)
{
real_size[i][j] = rand()%2;
}
}
while(1)
{
print(real_size, user_size);
printf("다음 단계로 가려면 아무키나 누르시오!\n");
getch();
for(i=1; i<=user_size; i++)
{
for(j=1; j<=user_size; j++)
{
count=0;
if(real_size[i-1][j-1]==1) count++;
if(real_size[i-1][j]==1) count++;
if(real_size[i-1][j+1]==1) count++;
if(real_size[i][j-1]==1) count++;
if(real_size[i][j+1]==1) count++;
if(real_size[i+1][j-1]==1) count++;
if(real_size[i+1][j]==1) count++;
if(real_size[i+1][j+1]==1) count++;
if(count==3)
{
copy_size[i][j]=1;
}
else
{
if(count==2)
copy_size[i][j]=real_size[i][j];
else
copy_size[i][j]=0;
}
}
}
copybox(real_size, copy_size, user_size);
}
return 0;
}
void copybox(int **one, int **two, int num)
{
int i, j;
for(i=1; i<=num; i++)
{
for(j=1; j<=num; j++)
{
one[i][j] = two[i][j];
}
}
}
void print(int **size, int num)
{
int i, j;
printf("\n");
for(i=1; i<=num; i++)
{
for(j=1; j<=num; j++)
{
printf("%d ", size[i][j]);
}
printf("\n");
}
printf("\n");
}
'프로그래머의 길 > C & C++' 카테고리의 다른 글
assert() (0) | 2008.04.15 |
---|---|
지뢰찾기 (0) | 2007.06.28 |
마방진 소스 (0) | 2007.06.28 |
오늘의 날짜를 리턴해 주는 함수 <time.h> (0) | 2007.04.12 |
디렉토리 관련 함수 (0) | 2007.04.09 |