C语言编写扫雷,用c++写扫雷

  C语言编写扫雷,用c++写扫雷

  最近又重新拾起了学习C语言的兴趣。复习函数递归的时候,看到了扫雷这个小游戏。我想用这篇文章来纪念我的程序修改过程。写的时候参考了系统自带的扫雷游戏,兴奋的开始写代码,所以写的时候走了很大的弯路。我用的编程软件是cfree5,因为电脑版本是32位Windows7,找不到别的编译器。哈哈哈哈哈哈哈哈。直接去下面源码,200就行。

  头文件:game.h这也是我第一次尝试用头文件写代码,第一次感觉写代码的思路这么清晰。

  #包含stdio.h

  #include stdlib.h //这是屏幕清理函数所属的库。

  #include time.h //这个函数库有生成时间戳的功能,用来生成随机数。

  #include windows.h //延迟时间函数在这里,为了好看。

  #定义恒(20 ^ 2)//顾名思义,这20可以随意改变扫雷接口的长度。

  # define Shu(20 ^ 2)//顾名思义,垂直,这个20也是随意改的,表示宽度。

  #定义雷20 //顾名思义,雷数哈哈哈哈

  void邓璐();//登录界面打印

  void游戏();//游戏功能

  虚空初十化(char a[恒][舒]);//初始化

  void(char a[heng][Shu]);//打印

  void panduan(char b[恒][舒]);//判断雷霆周围的数字

  void赵荀(char a[恒][舒],char b[恒][舒],char c[恒][舒],int i,int j);

  //寻找可以扩散的方块,即最外侧的空白块和数字块

  int dianji(char a[恒][舒],char b[恒][舒],char c[恒][舒],int i,int j);

  //点击图上的方块(当然是通过写坐标)

  void宝扎(char a[恒][舒],char b[恒][舒]);//打雷炸了。

  int胜利(char a[恒][舒],char b[恒][舒],int m);//胜利!源文件:game.c这个地方看得出来我英语真的很差。功能名称基本都是拼音,一目了然。永远不会有重复的功能(狗头)。

  #包含“game.h”

  无效盘端(字符b[恒][舒])

  {

  int i,j;//记录每个方块的循环

  int x,y;//记录当前方块的编号

  int c=0;//记录号码大小(雷左右)

  for(I=1;我恒-1;我)

  for(j=1;j Shu-1;j)

  if(b[i][j]!=*)

  {

  c=0;

  for(x=I-1;x I 2;x)

  for(y=j-1;y J2;y)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  }

  虚空初石华(char a[恒][舒])

  {

  int r=lei

  int i,j;

  srand((无符号int)time(NULL));//确保每次产生的雷不一样

  while(r)

  {

  I=rand()%(heng-2)1;

  j=rand()%(Shu-2)1;

  if(a[i][j]!= * )//雷不能重。

  {

  a[I][j]= * ;

  r-;

  }

  }

  盘端(一);

  }

  作废(char a[恒][舒])

  {

  int i,j;

  printf( \ n \ t );

  for(I=1;我Shu-1;我)

  printf( -,I);//这个2d是左对齐还是右对齐?我都忘了

  for(I=1;我恒-1;I )//这些步骤主要是为了好看。

  {

  printf(\n -,I);

  for(j=1;j Shu-1;j)

  如果(j==1)

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

  其他

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

  如果(我恒-2)

  {

  printf( \ n \ t );

  for(j=1;j Shu-1;j)

  printf(- );

  }

  }

  }

  void赵荀(char a[恒][舒],char b[恒][舒],char c[恒][舒],int i,int j)

  {

  int x,y;

  if(I==0 j==0 I==heng-1 j==Shu-1);//屏蔽掉边缘的一切。

  其他

  for(x=I-1;x I 2;x)

  for(y=j-1;y J2;y)

  If(c[x][y]==0) //为每个搜索到的位置设置“1”以防止浪费堆栈空间。

  {

  c[x][y]= 1 ;

  If(b[x][y]==0)//空白块直接展开,寻找下一个

  {

  a[x][y]= 0 ;

  赵荀(a,b,c,x,y);

  }

  Else if(b[x][y] 0 b[x][y] 9)//数字块被记录但不被扩展。

  a[x][y]=b[x][y];

  }

  }

  int dianji(char a[heng][shu],char b[heng][shu],char c[heng][shu],int i,int j)

  {

  if(b[i][j]==* )

  返回0;

  其他

  {

  赵荀(a、b、c、I、j);

  返回1;

  }

  }

  void宝扎(char a[恒][舒],char b[恒][舒])

  {

  int i,j;

  for(I=0;我恒;我)

  for(j=0;j舒;j)

  if(b[i][j]==* )

  a[I][j]=b[I][j];

  系统(“cls”);

  尹达(a);//这一步是显示炸弹爆炸了。看起来更厉害。

  }

  int胜利(char a[恒][舒],char b[恒][舒],int m)

  {

  int i,j;

  int s=0;

  If(m=10)//这是指当标记位置等于10时的胜利判断

  for(I=0;我恒;我)

  for(j=0;j舒;j)

  If(b[i][j]==* a[i][j]==5)//雷霆的位置与标记的位置相同。

  s;

  如果(s==10)

  {

  Printf (\ n \ n \ t \ tVictory!);

  返回1;

  }

  其他

  返回0;

  }扫雷. c头文件在这里#includegame.h

  无效邓璐()

  {

  printf( \ n \ n \ t \ t欢迎来到扫雷,请选择\ n \ n );

  Printf(\t\t1。开始游戏\ n \ n’);

  Printf(\t\t2。退出游戏\ n \ n \ t \ t );

  }

  无效游戏()

  {

  char a[恒][舒]={0},b[恒][舒]={0},c[恒][舒]={ 0 };

  int i,j,l;

  int s=1,m=0;//用于判断操作行为

  int g=-1;

  褚时华(乙);

  而(g)

  {

  系统(“cls”);//每次选择后刷新页面。

  尹达(b);

  printf( \ n \ n \ t您可以选择一个坐标:);

  scanf(%d%d ,I,j);

  printf( \ n \ t1 click \ T2 mark \ n \ t您选择的操作是:);

  while(s)

  {

  scanf(%d ,l);

  开关(左)

  {

  案例一:g=点集(a,b,c,I,j);

  s=0;

  打破;

  情况2:a[I][j]=5;ascii码中的符号5主要是因为好看,可以改。

  s=0;

  m;//标签的数量

  打破;

  默认值:

  printf( \ n \ t请重新输入操作!);

  打破;

  }

  }

  s=1;

  if(胜利(a,b,m)==1)

  打破;

  如果(g==0)

  {

  宝扎(a,b);

  printf( \ n \ t幸好您击中了炸弹\ n \ n \ t game over );

  }

  }

  }

  int main()

  {

  int a=0,b,c;

  while(1)

  {

  邓璐();

  而(a!=2)

  {

  scanf(%d ,a);

  开关(a)

  {

  1:printf( \ n \ t \ t开始你的扫雷生涯吧!);

  printf( \ n \ n \ t此游戏中有%d个雷霆。玩得开心!,雷);

  睡眠(2000);//刷新前等待两秒钟。

  系统(“cls”);

  game();

  c=0;

  打破;

  案例二:

  打破;

  默认值:printf(\n\t\t输入错误,请重试\ n \ t \ t );

  打破;

  }

  如果(c==0)

  打破;

  }

  Printf(\n\t1是\t2否);

  printf( \ n \ t您想玩另一个游戏吗?);

  scanf(%d ,b);

  系统(“cls”);

  如果(b==2a==2)

  打破;

  }

  系统(“cls”);

  printf( \ n \ n \ t \ t感谢您的参与,我们下次再见!\ n \ n’);

  返回0;

  }思路:最初比较麻烦的思路:最初的思路是界面上显示多少个方块就初始化多少个数组,比如10*10个方块。要求的水平和垂直尺寸分别为10和10。这样的结果就是,你计算雷身边数字的大小,分九种情况讨论,分类分半个多小时,然后因为错别字老而改了半个小时(当然最后都删了,啧啧)。代码如下:

  无效盘端(字符b[恒][舒])

  {

  int i,j;

  int x,y;

  int c=0;

  for(I=1;我恒-1;我)

  for(j=1;j Shu-1;j)

  if(b[i][j]!=*)

  {

  c=0;

  如果(i==0 j==0)

  {

  for(x=0;x2;x)

  for(y=0;y 2;y)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  else if(i==heng-1 j==0)

  {

  for(x=恒-1;x恒-3;x -)

  for(y=0;y 2;y)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  else if(i==0 j==shu-1)

  {

  for(x=0;x2;x)

  for(y=Shu-1;y舒-3;y -)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  else if(i==heng-1 j==shu-1)

  {

  for(x=恒-1;x恒-3;x -)

  for(y=Shu-1;y舒-3;y -)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  else if(i==0)

  {

  for(x=0;x2;x)

  for(y=j-1;y J2;y)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  else if(j==0)

  {

  for(x=I-1;x I 2;x)

  for(y=0;y 2;y)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  else if(i==heng-1)

  {

  for(x=I;x I-2;x -)

  for(y=j-1;y J2;y)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  else if(j==shu-1)

  {

  for(x=I-1;x I 2;x)

  for(y=Shu-1;y舒-3;y -)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  其他

  {

  for(x=I-1;x I 2;x)

  for(y=j-1;y J2;y)

  if(b[x][y]==* )

  c,b[I][j]=c 48;

  }

  }

  }这个地方分四面,四角,中间九个方面。某种意义上锻炼了对C语言循环的理解。

  一个更方便的想法是:在你的方块周围添加另一层方块,这样当头文件被定义时,恒=20 ^ 2。这个2是指左右各加一层,所以好处是不用分类讨论,只要打印的时候不打印最外层就行。其他具体想法写在笔记里。

  显示:

  登录界面如图所示

  游戏模式如图所示

  如图,雷太少了,哈哈哈,都是直接出来的。试试踩雷。

郑重声明:本文由网友发布,不代表盛行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算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: