本文實例爲你們分享了C語言實現掃雷遊戲及其優化的具體代碼,供你們參考,具體內容以下數組
關於掃雷優化工具
1.核心思想:使用兩個二維數組進行設計,一個用於顯示,一個用於後臺雷的佈置。佈局
2.使用宏常量,後期能夠任意修改遊戲難度。學習
3.關於掃雷拓展模塊,目前使用的方法比較low,若周圍均沒有,則所有顯示。開發工具
4.剩餘位置數使用全局變量count,必須考慮拓展以後count變化。優化
有待改進之處ui
1.需設計標記雷的步驟,增長用戶體驗。職業規劃
2.拓展方式有待改進。spa
3.界面佈局仍須要進行優化設計
這裏推薦一下我建的C/C++語言學習交流秋秋裙,前三位是:110,中間三位是:355,最後三位是:025,裏面有學習不錯視頻教程、開發工具、電子書籍,完整的項目源碼等,專業的老師解答問題!
雖說C語言開發發展前景好,但易學難精。因爲入門容易這也致使了市場上人員氾濫、人才稀缺的局面產生。可是在互聯網愈來愈強烈的競爭下,這樣的人也最終會被市場淘汰。對於想要從事C語言行業的小夥伴來講,必定要清楚本身將來的職業規劃和就業方向。
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<Windows.h> 4 #include<string.h> 5 #include<time.h> 6 #define ROW 12 7 #define COL 12 8 #define MINE_NUM 15 9 #define TOTAL 100 10 #pragma warning(disable:4996) 11 int count = TOTAL; 12 void inter(){ 13 printf("=======================\n"); 14 printf("=======遊戲菜單========\n"); 15 printf("======1.開始遊戲=======\n"); 16 printf("========2.退出=========\n"); 17 printf("=======================\n"); 18 printf("請輸入您的選擇: \n"); 19 } 20 int GetRandIndex(int start, int end){ 21 return rand() % (end - start + 1) + start; 22 } 23 void layout(char mine[][COL], int row, int col){ 24 srand((unsigned long)time(NULL)); 25 int count = 0; 26 while (count<MINE_NUM){ 27 int x = GetRandIndex(1, 10); 28 int y = GetRandIndex(1, 10); 29 if (mine[x][y] == '0'){ 30 mine[x][y] = '1'; 31 count++; 32 } 33 } 34 } 35 36 void Board(char board[][COL], int row, int col){ 37 printf(" "); 38 int i = 1; 39 for (; i <= 10; i++) 40 { 41 printf(" %d ", i); 42 } 43 printf("\n----"); 44 for (i = 1; i <= 29; i++) 45 { 46 printf("-"); 47 } 48 printf("\n"); 49 for (i = 1; i <= 10; i++) 50 { 51 printf("%2d|",i); 52 int j = 1; 53 for (; j <= 10; j++){ 54 printf(" %c|", board[i][j]); 55 } 56 printf("\n"); 57 int k = 1; 58 for (k = 1; k <= 11; k++) 59 { 60 printf("---"); 61 } 62 printf("\n"); 63 } 64 } 65 66 char GetMines(char mine[][COL],int row,int col){ 67 return mine[row - 1][col - 1] + mine[row - 1][col] + mine[row - 1][col + 1]\ 68 + mine[row][col - 1] + mine[row][col + 1]\ 69 + mine[row + 1][col - 1] + mine[row + 1][col] + mine[row +1][col + 1]-7*'0'; 70 } 71 void expand(char mine[ROW][COL], char board[ROW][COL], int x, int y){ 72 if ((x >= 1) && (y >= 1) && (x <= ROW) && (y <= COL)) 73 { 74 if (GetMines(mine, x, y) == '0') 75 { 76 if (x > 1 && x < 10 && y>1 && y < 10) 77 { 78 count = count - 8; 79 } 80 else if((x==1&&y==1)||(x==10&&y==10) || (x == 1 && y == 10) || (x == 10 && y == 1)) { 81 count -= 3; 82 } 83 else { 84 count -= 5; 85 } 86 board[x - 1][y - 1] = GetMines(mine, x-1, y-1); 87 board[x - 1][y] = GetMines(mine, x - 1, y); 88 board[x - 1][y + 1] = GetMines(mine, x - 1, y + 1); 89 board[x][y - 1] = GetMines(mine, x , y - 1); 90 board[x][y + 1] = GetMines(mine, x , y + 1); 91 board[x + 1][y - 1] = GetMines(mine, x + 1, y - 1); 92 board[x + 1][y] = GetMines(mine, x + 1, y); 93 board[x + 1][y + 1] = GetMines(mine, x + 1, y + 1); 94 } 95 } 96 } 97 void Game(){ 98 char mine[ROW][COL]; 99 char board[ROW][COL]; 100 memset(mine,'0',sizeof(mine)); 101 memset(board, '*', sizeof(board)); 102 layout(mine, ROW, COL); 103 Board(mine, ROW, COL); 104 int x = 0; 105 int y = 0; 106 while (1){ 107 int i = 0; 108 Board(board, ROW, COL); 109 printf("請選擇您要排除的位置: "); 110 scanf("%d %d", &x, &y); 111 if (x >= 1 && x <= ROW - 2 && y >= 1 && y <= COL - 2){ 112 if (mine[x][y] == '0'){ 113 char num = GetMines(mine,x,y); 114 board[x][y] = num; 115 expand(mine, board, x, y); 116 Board(board, ROW, COL); 117 count--; 118 if (count == MINE_NUM) 119 { 120 Board(board, ROW, COL); 121 printf("你贏了!\n"); 122 break; 123 } 124 } 125 else{ 126 printf("您輸了!\n"); 127 Board(mine, ROW, COL); 128 break; 129 } 130 printf("還有%d個位置 \n", count); 131 } 132 else{ 133 printf("你輸入的座標有誤,請從新輸入!\n"); 134 } 135 } 136 } 137 int main(){ 138 int quit = 0; 139 int select = 0; 140 while (!quit){ 141 inter(); 142 scanf("%d", &select); 143 switch (select) 144 { 145 case 1: 146 Game(); 147 Sleep(5000); 148 system("cls"); 149 break; 150 case 2: 151 printf("再見!\n"); 152 quit = 1; 153 break; 154 default: 155 printf("您的輸入不正確,請從新輸入!\n"); 156 break; 157 } 158 } 159 system("pause"); 160 return 0; 161 }
以上就是本文的所有內容,但願對你們的學習有所幫助,也但願你們多多關注支持。