zoukankan      html  css  js  c++  java
  • 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("
    ");
        }
    }
    
    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;
    }

  • 相关阅读:
    反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux
    火车售票系统(数据结构课设)
    货物管理系统(数据结构链式表)
    货物管理系统(数据结构顺序表)
    进制转换器(十进制转n进制)
    大学生成绩管理系统(C语言)
    如何对Linux的grub进行加密
    戴文的Linux内核专题:07内核配置(3)
    戴文的Linux内核专题:06配置内核(2)
    戴文的Linux内核专题:05配置内核(1)
  • 原文地址:https://www.cnblogs.com/lely/p/12188073.html
Copyright © 2011-2022 走看看