欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言学习教程,用C语言编写扫雷游戏

程序员文章站 2022-03-26 12:12:21
本文实例为大家分享了C语言实现扫雷游戏及其优化的具体代码,供大家参考,具体内容如下 ......

本文实例为大家分享了c语言实现扫雷游戏及其优化的具体代码,供大家参考,具体内容如下

 C语言学习教程,用C语言编写扫雷游戏

关于扫雷优化

1.核心思想:使用两个二维数组进行设计,一个用于显示,一个用于后台雷的布置。

2.使用宏常量,后期可以任意修改游戏难度。

3.关于扫雷拓展模块,目前使用的方法比较low,若周围均没有,则全部显示。

4.剩余位置数使用全局变量count,必须考虑拓展之后count变化。

有待改进之处

1.需设计标记雷的步骤,增加用户体验。

2.拓展方式有待改进。

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 }

相关运行样例

C语言学习教程,用C语言编写扫雷游戏

 

C语言学习教程,用C语言编写扫雷游戏

 

 C语言学习教程,用C语言编写扫雷游戏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多关注支持。