游戏算法-生命游戏
2012-04-02 11:40
197 查看
游戏算法-生命游戏
生命游戏又称细胞自动机。反映了生命演化的规则。
生命游戏原理:生命生活在二维环境中,每个生命生活在一个方格中,每个细胞在下一个时刻的状态取决于周围8个细胞的活着或死了的状态。
1) 如果周围活着的细胞数量少于设定的值,细胞将孤独而死。
2) 如果周围活着的细胞数量多于设定的值,细胞将拥挤而死。
状态机举例:
生命游戏又称细胞自动机。反映了生命演化的规则。
生命游戏原理:生命生活在二维环境中,每个生命生活在一个方格中,每个细胞在下一个时刻的状态取决于周围8个细胞的活着或死了的状态。
1) 如果周围活着的细胞数量少于设定的值,细胞将孤独而死。
2) 如果周围活着的细胞数量多于设定的值,细胞将拥挤而死。
状态机举例:
#include <stdio.h> #include <stdlib.h> #define BOARD 10 char world[BOARD][BOARD] = { 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0, 0,0,0,1,1,1,0,0,0,0, 0,0,0,1,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0, 0,0,0,0,0,1,0,0,0,0, 0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0 }; void game_run(char world[10][10], int nLive) { int i = 0, j = 0; int nAliveCnt = 0; int nContinue = 0; for (i=0; i< 10; i++) { for (j = 0; j < 10; j++) { printf("%d ", world[i][j]); } printf("\n"); } printf("***********************************\n\n"); while (1) { for (i = 0; i < BOARD; i++) { for (j = 0; j < BOARD; j++) { nAliveCnt = 0; if ((i-1>0)&&(j-1>0)&&(world[i-1][j-1]) > 0) { nAliveCnt++; } if ((i-1>0)&&(world[i-1][j]>0)) { nAliveCnt++; } if ((j+1<BOARD)&&(i-1>0)&&(world[i-1][j+1] >0)) { nAliveCnt++; } if ((j-1>0)&&(world[i][j-1]>0)) { nAliveCnt++; } if ((j+1<BOARD)&&(world[i][j+1]>0)) { nAliveCnt++; } if ((i+1<BOARD)&&(j-1>0)&&(world[i+1][j-1]>0)) { nAliveCnt++; } if ((i+1<BOARD)&&(world[i+1][j]>0)) { nAliveCnt++; } if ((i+1<BOARD)&&(j+1<BOARD)&&(world[i+1][j+1]> 0)) { nAliveCnt++; } if ((world[i][j] == 0) && (nAliveCnt == 3)) { world[i][j] = 1; nLive++; } else if (world[i][j] == 1) { if (nAliveCnt != 2) { world[i][j] = 0; nLive--; } } } } for (i=0; i < 10; i++) { for (j =0; j < 10; j++) { printf("%d ", world[i][j]); } printf("\n"); } printf("===========================\n"); scanf("%d", &nContinue); if ((nLive == 100) || (nLive == 0)) { printf("Live: %d\n", nLive); break; } } // end of while } int main() { int n = 0; printf("\n"); game_run(world, 8); scanf("%d", &n); return 0; }
相关文章推荐
- 康威生命游戏的简单实现
- 每天一道LeetCode-----生命游戏
- 生命游戏
- 康威生命游戏 第一部分-基本功能实现(C++ & Windows SDK)
- C++ 生命游戏
- 生命游戏小游戏开发报告
- LeetCode 289 Game of Life(生命游戏)(Array)
- 元胞自动机 生命游戏 Matlab实现 GUI
- GTK实现生命游戏小结
- C++版生命游戏
- 女儿编的第2个C程序: 生命游戏
- 用c语言演绎“生命游戏”
- Algorithm Gossip(10) 细胞生命游戏
- 生命游戏
- 生命游戏(c/python)
- C++: 生命游戏(模拟细胞群演化)
- 生命游戏——一个简单的元胞自动机
- Java版生命游戏
- 刷屏新工具:史上最壮观的生命游戏构造图
- 生命游戏(c语言)