C语言---动态图或者生命
修改参数就可以修改生命演进过程
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<windows.h> #define High 20 #define Width 50 int cell[High][Width]; void HideCursor() { // if cursor CONSOLE_CURSOR_INFO cursor_info= {1,0}; //second value is 0 mean hide cursor SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); } void gotoxy(int x, int y) { // move mouse to x,y position, similer clear screen HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(handle, pos); } void startup() { // init data int i,j; for(i=0; i<High; i++) for(j=0; j<Width; j++) cell[i][j] = rand() % 2; HideCursor(); } void show() { // show windows gotoxy(0,0); //move mouse to 0,0 origin point, and redraw screen int i, j; for(i=0; i<High; i++) { for(j=0; j<Width; j++) { if(cell[i][j] == 1) printf("*"); //show bird * else printf(" "); //show nothing } printf("\n"); } } void updateWithoutInput() { int neighbernum=0,i,j,tempcell[High][Width]; for(i=0; i<High; i++) for(j=0; j<Width; j++) tempcell[i][j] = cell[i][j]; for(i=1; i<High-1; i++) for(j=1; j<Width-1; j++) { neighbernum = cell[i-1][j-1] + cell[i-1][j] + cell[i-1][j+1] + cell[i][j-1] + cell[i][j] + cell[i][j+1] + cell[i+1][j-1] + cell[i+1][j] + cell[i+1][j+1] ; if(neighbernum == 3) tempcell[i][j] = 1; else if(neighbernum == 2 || neighbernum == 4) tempcell[i][j] = cell[i][j]; else tempcell[i][j] = 0; } for(i=0; i<High; i++) for(j=0; j<Width; j++) cell[i][j] = tempcell[i][j] ; } void updateWithInput() { char input; if(kbhit()) { //runing while user push keyboard input = getch(); } } int main() { startup(); // init data while(1) { // game loop run show(); // show windows updateWithoutInput(); //update don't need user updateWithInput(); //update need user } return 0; }