📄 life_game.cpp
字号:
// life_game.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "windows.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXROW 35
#define MAXCOL 50
#define DEAD 0
#define ALIVE 1
int map[MAXROW][MAXCOL], newmap[MAXROW][MAXCOL];
void init(); int neighbors(int, int);void outputMap();
void copyMap();
void auto_init();
bool isStatic();
int _tmain()
{
int row, col;
char ans;
auto_init();
/*
int rd=rand();
printf("%d ",rd);
rd=rand();
printf("%d ",rd);
*/
while(1)
{
outputMap();
for(row = 0; row < MAXROW; row++)
{
for(col = 0; col < MAXCOL; col++)
{
switch (neighbors(row, col))
{
case 0:
case 1:
case 4:
case 5:
case 6:
case 7:
case 8:
newmap[row][col] = DEAD;
break;
case 2:
newmap[row][col] = map[row][col];
break;
case 3:
newmap[row][col] = ALIVE;
break;
}
}
}
copyMap();
/*
printf("\nContinue next Generation ? ");
getchar();
ans = toupper(getchar());
if(ans != 'Y')
break;
*/
Sleep(100);
system("cls");
}
getchar();
return 0;
}
void init()
{
int row, col;
for(row = 0; row < MAXROW; row++)
for(col = 0; col < MAXCOL; col++)
map[row][col] = DEAD;
puts("Game of life Program");
puts("Enter x, y where x, y is living cell");
printf("0 <= x <= %d, 0 <= y <= %d\n", MAXROW-1, MAXCOL-1);
puts("Terminate with x, y = -1, -1");
while(1)
{
scanf("%d %d", &row, &col);
if(0 <= row && row < MAXROW && 0 <= col && col < MAXCOL)
map[row][col] = ALIVE;
else if(row == -1 || col == -1)
break;
else
printf("(x, y) exceeds map ranage!");
}
}
void auto_init()
{
int row, col;
int seed;
printf("Please input a integer as a random seed: ");
scanf("%d",&seed);
for(int i=0;i<seed;i++)
{
rand();
}
for(row = 0; row < MAXROW; row++)
for(col = 0; col < MAXCOL; col++)
map[row][col] = ((int)rand())%2;
printf("auto init suceed!");
}
int neighbors(int row, int col)
{
int count = 0, c, r;
for(r = row-1; r <= row+1; r++)
for(c = col-1; c <= col+1; c++)
{
if(r < 0 || r >= MAXROW || c < 0 || c >= MAXCOL)
continue;
if(map[r][c] == ALIVE)
count++;
}
if(map[row][col] == ALIVE)
count--;
return count;
}
void outputMap()
{
int row, col;
//printf("\n\n%20cGame of life cell status\n");
for(row = 0; row < MAXROW; row++)
{
printf("\n%20c", ' ');
for(col = 0; col < MAXCOL; col++)
if(map[row][col] == ALIVE)
putchar(1);
else
putchar(' ');
}
}
void copyMap()
{
int row, col;
for(row = 0; row < MAXROW; row++)
for(col = 0; col < MAXCOL; col++)
map[row][col] = newmap[row][col];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -