C語言編程 簡單展開掃雷遊戲
阿新 • • 發佈:2019-04-17
signed clu 輸入 退出 break unsigned show fine you 源代碼如下
#include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #define amu 10 #define Lshu 10 void menu()//菜單 { printf("*************************************\n"); printf("****** 歡 迎 來 到 掃 雷 遊 戲 ******\n"); printf("****** 1.開始遊戲 0.退出 *******\n"); printf("*************************************\n"); printf("請輸入選擇\n"); } void Show( char show[][amu + 2])//打印圖像 { int i, s; system("cls"); printf(" 0 1 2 3 4 5 6 7 8 9 \n"); for (i = 0; i <= 9; i++) { printf("\n"); printf("%d", i); for (s = 1; s <= 10; s++) { printf("%3c", show[i+1][s]); } printf("\n"); } } int getnum(char mine[][amu+2], int i, int j)//所選坐標周圍的雷數量 { return mine[i - 1][j - 1] + mine[i - 1][j] + mine[i - 1][j + 1] + mine[i][j - 1] + mine[i][j + 1] + mine[i + 1][j - 1] + mine[i + 1][j] + mine[i + 1][j + 1] - 8 * ‘0‘; } void fullmine(char mine[][amu + 2], int sta, int end)//埋雷 { int sum = 0, n, m; srand((unsigned int)time(NULL)); while (1) { n = rand() % (end - sta + 1) + sta; m = rand() % (end - sta + 1) + sta; if (mine[n][m] == ‘0‘) { mine[n][m] = ‘1‘; sum++; } if (sum == Lshu) { return; } } } int judge(char mine[][amu + 2], int n, int m)//判斷是否踩雷 { if (mine[n][m] != ‘1‘) { return 1; } return 0; } void game(char show[][amu + 2], char mine[][amu + 2], int sta, int end) { int sum = 0, n, m,p; Show(show); fullmine(mine, sta, end); while (1) { printf("請輸入要選擇的坐標\n"); scanf("%d%d", &n, &m); n++; m++; if (n >=1 && n <= amu && m >= 1 && m <= amu) { p = judge(mine, n, m); if (p == 1) { sum = getnum(mine, n, m); show[n][m] = sum + ‘0‘; if (mine[n-1][m] == ‘0‘)//坐標周圍展開 { show[n-1][m] = ‘\0‘; } if (mine[n][m + 1] == ‘0‘) { show[n][m + 1] = ‘\0‘; } if (mine[n + 1][m] == ‘0‘) { show[n + 1][m] = ‘\0‘; } if (mine[n + 1][m+1] == ‘0‘) { show[n + 1][m+1] = ‘\0‘; } if (mine[n - 1][m+1] == ‘0‘) { show[n - 1][m+1] = ‘\0‘; } if (mine[n + 1][m-1] == ‘0‘) { show[n + 1][m-1] = ‘\0‘; } if (mine[n-1][m-1] == ‘0‘) { show[n-1][m-1] = ‘\0‘; } if (mine[n ][m-1] == ‘0‘) { show[n ][m-1] = ‘\0‘; } } else { break; } Show(show); } else { printf("輸入坐標不正確\n"); } } } int main() { int input, sta = 1, end = 10; char mine[amu + 2][amu + 2]; char show[amu + 2][amu + 2]; memset(show, ‘#‘, sizeof(show)); memset(mine, ‘0‘, sizeof(mine)); menu(); scanf("%d", &input); if (input == 1) { game(show, mine, sta, end);//遊戲進程 } else { return 0; } Show(mine); printf("Game Over\n You Lost\n"); system("pause"); return 0; }
C語言編程 簡單展開掃雷遊戲