c语言编写扫雷代码,c++编写扫雷

  c语言编写扫雷代码,c++编写扫雷

  传统艺术目录?过渡区?故事片的开始?在菜单上?游戏主题?初始化?打印雷区?贝利雷大师?扫雷舰?雷区舞王?

  传统艺术?边肖是大一新生,我不想重复。欢迎指点迷津。

  以前在博客上点我!指给我看!请点击我搜索博主【认识天空的蓝】!指给我看!请搜索博主【知天之蓝】或扫码进入!

  乔氏gitee代码库(Grew Man)欢迎访问,点我!

  (https://blog.51cto.com)谢谢你的支持!

  过渡区?现在是北京时间2:38,白天还有那么多事,夜生活就是写博客。昨天因为没有完全了解扫雷,所以没有写。反正明天早上一两节课就不上课了。现在是我最享受的时刻,一个人,一盏灯,一杯咖啡。宿舍里没有噪音,背景放着我喜欢的歌,憧憬着最好的明天。

  故事片的开始?雷霆不扫,何以扫天下?

  今天主要实现初级扫雷游戏,方法简单易懂。制作注重功能实现而非包装,只是简单表达“扫雷”,后期会优化升级。

  接受了三子棋的洗礼,扫雷和之前的三子棋差不多,但其实写完才知道扫雷比三子棋简单一点。因为三字棋更多的是在空间上操作,会更多的依赖二维数组的使用,所以过程会更复杂。下面是康康扫雷的具体流程:

  为了方便使用,最好先在头文件中宏定义数组的两个元素,这样也方便以后修改:

  #定义第2行第2行

  #定义列COL2 2

  #定义第2行9

  #定义列2 9

  在菜单上?无效菜单()

  {

  printf(-\ n );

  printf(-M e n u-\ n );

  printf(---\ n );

  printf( - 1。p L A Y-\ n );

  printf( - 0。e X I T-\ n );

  printf(-\ n );

  printf(-\ n );

  }简单的小菜单,这是一个菜单功能,选择功能是通过switch语句实现的:

  无效测试()

  {

  int input=0;//输入值存储在input中进行判断。

  srand((无符号int)time(NULL));

  做

  {

  menu();

  Printf(请选择菜单:);

  scanf(%d ,输入);

  开关(输入)

  {

  案例1:

  {

  Printf(开始扫雷:);

  saolei();//进入游戏主体

  打破;

  }

  案例0:

  {

  Printf(即将退出…);

  打破;

  }

  Default: //处理非指定值输入

  {

  printf(‘开个玩笑。这是什么?\ n’);

  打破;

  }

  }

  } while(输入);//可以反复播放。

  }

  游戏主题?void saolei()

  {

  char board[ROW][COL]={ 0 };//实际的矩阵

  char real[ROW][COL]={ 0 };//玩家视角矩阵

  Start(board,ROW,COL, 0 );//雷区初始化

  Start(real,ROW,COL, * );

  集合(板、行、列);//布雷(布雷)

  Show(board,ROW2,col 2);

  Show(real,ROW2,col 2);//布局(雷区`在此插入代码片`)显示

  Find(board,real,ROW,COL);//逻辑判断

  }

  初始化?首先,阵法的创造和散聚有很大的不同。基于游戏规则本身的特点,我们需要实际设计雷阵呈现给玩家,这也是扫雷的一大特色。因为初始化方法不同,对应的函数也不同,所以我们创建了名为board和real的数组。

  使用Start函数在game.c中定义:

  void Start(char board[ROW][COL],int row,int col,char set)

  {

  int I=0;

  int j=0;

  for(I=0;我划船;我)

  {

  for(j=0;j colj)

  {

  板[i][j]=集;

  }

  printf( \ n );

  }

  }这里数组的初始化是通过嵌套for循环来实现的。这里,“设置”是我指定的两个字符。我们需要全零来做我的,而玩家需要一个“*”来猜。

  打印雷区?先把我们需要的打出来,和玩家的对比如下:以下是玩家视角。

  使用显示功能实现如下功能:

  空显示(char board[ROW2][COL2],int row2,int col2)

  {

  int I=0;

  int j=0;

  for(I=0;i=col2我)

  {

  printf(%d ,I);//打印相应的行数和列数。

  }

  printf( \ n );

  for(I=1;i=row2我)

  {

  printf(%d ,I);

  for(j=1;j=col2j)

  {

  printf(%c ,board[I][j]);//存到%c里埋地雷

  }

  printf( \ n );

  }

  }

  贝利雷大师?空集合(char board[ROW][COL],int row,int col)

  {

  int count=度;

  while(计数)

  {

  int x=rand()% row 1;//生成0~9个随机数

  int y=rand()% col 1;//生成0 ~ 90%的随机数

  if (board[x][y]==0 )

  {

  board[x][y]= 1 ;//法官,如果是空格,可以埋雷。

  count-;//埋十。

  }

  }

  }这里重点只是随机数的应用。这里的随机数是伪随机的,由rand函数产生。它需要在主函数中初始化。使用“srand”函数,时间戳作为随机数的生成标准。这里就不重复了。不知道的话,可以参考前面三子棋的解释。记得引用stdlib.h和time.h头文件。

  扫雷舰?==为什么一个雷不能横扫天下?==扫雷的标准是一把成功的斧头,逻辑到位,一切唾手可得。判断输赢并不难。踩雷与否这种简单的逻辑谁不会写?重点是没踩雷没做完的过程:

  当我们来到一个“安全区域”时,我们展示的是周围八个单位格的雷数之和。我们设置一个Amount函数,并使用周围八个单元格的返回值作为输入。注意这里我们计算的返回值是一个整数,但是我放入数组的是一个字符类型。把一个数字转换成对应的字符类型,该怎么办?很简单,就是+0 。所以我们在计算8个单元格的和并返回值的时候,会提前-8 * 0 。

  static amount(char board[row][col],int x,int y)//仅限于此源文件。

  {

  返回纸板[x 1][y]

  棋盘[x ^ 1][y ^ 1]

  board[x][y 1]

  董事会[x-1][y-1]

  董事会[x - 1][y]

  董事会[x - 1][y - 1]

  棋盘[x][y - 1]

  board[x 1][y-1]-8 * 0 ;//求和计算

  }

  void Find(char board[ROW2][ROW2],char real[ROW2][COL2],int row,int col)

  {

  int x=0;

  int y=0;

  int I=0;

  int win=0;

  while (win row*col-10)

  {

  Printf(请输入故障排除坐标:);

  scanf(%d %d ,x,y);

  if (x=1 x=行y=1 y=列)

  {

  If (board[x][y]==1) //踩雷判断

  {

  printf(B O O M!\ n’);

  printf(游戏结束\ n );

  Show(board,第2行,第2列);

  打破;

  }

  Else //不踩雷的雷数计算

  {

  i=金额(board,x,y);

  实数[x][y]=I 0 ;

  Show(real,row-2,col-2);

  赢;

  }

  }

  Else //判断出界

  {

  Printf(无效坐标!再次输入\ n’);

  }

  }

  If (win==row * col-10) //胜利判断

  {

  祝贺你,你赢了!\ n’);

  }

  }

  雷区舞王?完整代码,请参考:

  测试. c

  #包含“saolei.h”

  无效菜单()

  {

  printf(-\ n );

  printf(-M e n u-\ n );

  printf(---\ n );

  printf( - 1。p L A Y-\ n );

  printf( - 0。e X I T-\ n );

  printf(-\ n );

  printf(-\ n );

  }

  void saolei()

  {

  char board[ROW][COL]={ 0 };//扫雷矩阵

  char real[ROW][COL]={ 0 };//排雷矩阵

  Start(board,ROW,COL, 0 );//初始化

  Start(real,ROW,COL, * );

  集合(板、行、列);//布局

  Show(board,ROW2,col 2);

  Show(real,ROW2,col 2);//布局

  Find(board,real,ROW,COL);

  }

  无效测试()

  {

  int input=0;

  srand((无符号int)time(NULL));

  做

  {

  menu();

  Printf(请选择菜单:);

  scanf(%d ,输入);

  开关(输入)

  {

  案例1:

  {

  Printf(开始扫雷:);

  saolei();

  打破;

  }

  案例0:

  {

  Printf(即将退出…);

  打破;

  }

  默认值:

  {

  printf(‘开个玩笑。这是什么?\ n’);

  打破;

  }

  }

  } while(输入);

  }

  int main()

  {

  test();

  返回0;

  } game.c

  # define _CRT_SECURE_NO_WARNINGS

  #包含“saolei.h”

  void Start(char board[ROW][COL],int row,int col,char set)

  {

  int I=0;

  int j=0;

  for(I=0;我划船;我)

  {

  for(j=0;j colj)

  {

  板[i][j]=集;

  }

  printf( \ n );

  }

  }

  空显示(char board[ROW2][COL2],int row2,int col2)

  {

  int I=0;

  int j=0;

  for(I=0;i=col2我)

  {

  printf(%d ,I);

  }

  printf( \ n );

  for(I=1;i=第2行我)

  {

  printf(%d ,I);

  for(j=1;j=col2j)

  {

  printf(%c ,board[I][j]);

  }

  printf( \ n );

  }

  }

  空集合(char board[ROW][COL],int row,int col)

  {

  int计数=度;

  而(计数)

  {

  int x=rand()% row 1;

  int y=rand()% col 1;

  if (board[x][y]==0 )

  {

  board[x][y]= 1 ;

  count-;

  }

  }

  }

  静态金额(char board[ROW][COL],int x,int y)

  {

  返回纸板[x ^ 1][y]

  棋盘[x ^ 1][y ^ 1]

  board[x][y 1]

  董事会[x-1][y-1]

  董事会[x - 1][y]

  董事会[x - 1][y - 1]

  棋盘[x][y - 1]

  board[x 1][y-1]-8 * 0 ;

  }

  void Find(char board[ROW2][ROW2],char real[ROW2][COL2],int row,int col)

  {

  int x=0;

  int y=0;

  int I=0;

  int win=0;

  while (win row*col-10)

  {

  printf(请输入排查坐标: );

  scanf(%d %d ,x,y);

  如果(x=1 x=行y=1 y=列)

  {

  if (board[x][y]==1 )

  {

  printf(B O O M!\ n’);

  printf(游戏结束\ n’);

  显示(板,第2行,第2列);

  打破;

  }

  其他

  {

  我=金额(板,x,y);

  实数[x][y]=I 0 ;

  Show(real,row-2,col-2);

  赢;

  }

  }

  其他

  {

  printf(无效坐标!重新输入\ n’);

  }

  }

  if (win==row * col - 10)

  {

  祝贺你,你赢了!\ n’);

  } game.h

  #杂注一次

  #定义第2行第2行

  #定义列COL2 2

  #定义第2行9

  #定义列2 9

  #定义度数10

  #包含标准视频

  #包含标准库

  #包含时间。h

  void menu();

  void saolei();

  void Start(char board[ROW][COL],int row,int col,char set);

  void Show(char board[ROW2][COL2],int row2,int col 2);

  void Set(char board[ROW][COL],int row2,int COL 2);

  void Find(char board[ROW][ROW],char real[ROW][COL],int row,int COL);实战效果:(模拟踩雷)

  现在是北京时间4:32,这波是熬夜冠军哈哈,躺平了家人们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: