標籤: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]; } }}//不完善
【生命遊戲】