【生命遊戲】

來源:互聯網
上載者:User

標籤:define   操作   efi   void   dead   etc   and   bsp   ram   

/*生命遊戲說明:生命遊戲(game of life)為1970年由英國數學家J.H.Conway所提出來,某一細胞的鄰居包括上,下,左,右,左上,左下,右上,右下相鄰之細胞。遊戲規則如下:孤單死亡:如果細胞的鄰居小於一個,則該細胞在下一次狀態將死亡。擁擠死亡:如果細胞的鄰居在四個以上,則該細胞在再一次狀態將死亡。穩定:如果細胞的鄰居為二個或三個,則下一次狀態為穩定存活。複活:如果某位置原無細胞存活,而該位置的鄰居為三個,則該位置將複活一細胞。解法:生命遊戲的規則可簡化為以下,並使用case比對即可使用程式操作:1.鄰居個數為0,1,4,5,6,7,8時則該細胞下次的狀態為死亡。2.鄰居個數為2時,則該細胞下次狀態為複活。3.鄰居個數為3時,則該細胞下次狀態為穩定。 */#include <stdio.h>#include <stdlib.h>#include <ctype.h>#define MAXROW 10#define MAXCOL 25#define DEAD 0#define ALIVE 1int map[MAXROW][MAXCOL], newmap[MAXROW][MAXCOL];void init();int neighbors(int , int );void outputMap();void copyMap();int main(){    int row, col;     char ans;    init();    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‘ && ans != ‘Y‘)        {            break;         }     }    return 0;}void init(){    int row, col;        for(row = 0; row < MAXROW; row++)    {        for(col = 0; col < MAXCOL; col++)        {            map[row][col] = DEAD;        }    }        puts("\n============Game of life Program============");    puts("Enter x, y where x, y is living cell.");    printf("0 <= x <= %d, 0 <= y <= %d and ", MAXROW - 1, MAXCOL - 1);    puts("terminate with (x, y) = (-1, -1)\n");    printf("Enter: \n");         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 !\n");        }    }}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%20c Game 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(‘#‘);            }            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];        }    }}//不完善 

 

【生命遊戲】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.