C語言學習教程,用C語言編寫掃雷遊戲

本文實例爲你們分享了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 }

相關運行樣例

 

 

 

以上就是本文的所有內容,但願對你們的學習有所幫助,也但願你們多多關注支持。

相關文章
相關標籤/搜索