程序功能
实现一个简单的元胞自动机,可以自定义初始状态、运行规则。以此基础实现一个能自动绘制大量万花筒图像的程序。
注:为了防止二维数组输出时画面闪烁,采取双屏幕缓冲区轮流显示。将缓冲区写好后一次性输出可以防止数组循环输出方式会导致的画面闪烁。
效果
生命游戏中的“滑翔机(gliders)”:
万花筒:
代码
#include
#include
#include
#include
#include
#include
#include
#define BLACK 0
#define WHITE 15
#define GREEN 10
#define YELLOW 14
#define RED 12
#define BLUE 9
#define CYAN 11
#define PURPLE 13
#define INCI(x) (((x)+1)%(COL))
#define DECI(x) (((x)+COL-1)%(COL))
#define INCJ(x) (((x)+1)%(RAW))
#define DECJ(x) (((x)+RAW-1)%(RAW))
#define MODE "mode 82,42"
#define COL 41
#define RAW 41
using namespace std;
int ct=0;
HANDLE hOutput, hOutBuf;//控制台屏幕缓冲区句柄
COORD coord={0,0};
WORD att;
DWORD bytes=0;
char data[COL][RAW];
int clr[8]={BLACK,WHITE,GREEN,YELLOW,RED,BLUE,CYAN,PURPLE};
int a[COL][RAW]={0},b[COL][