#include<stdio.h>
//使用二维数组实现 扫雷
int main()
{

   char ui[8][8]={
                  '+','+','+','+','+','+','+','+',
                  '+','+','+','+','+','+','+','+',
                  '+','+','+','+','+','+','+','+',
                  '+','+','+','+','+','+','+','+',
                  '+','+','+','+','+','+','+','+',
                  '+','+','+','+','+','+','+','+',
                  '+','+','+','+','+','+','+','+',
                  '+','+','+','+','+','+','+','+'
                 };
   int map[8][8]={
                     0,0,0,0,0,0,0,0,
                     0,0,1,0,0,1,0,0,
                     0,0,0,0,1,0,0,0,
                     0,0,0,0,0,1,0,0,
                     0,0,1,0,0,0,0,0,
                     0,0,1,0,0,0,0,0,
                     0,1,0,1,1,0,0,0,
                     1,0,0,0,0,0,0,0
                     };
   int p[8][2]={{-1,-1} ,{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
   int i=0,j=0;
   int h=0,l=0;
   int h1=0,l1=0;
   int n=0;//用来保存 雷的数量 计数
   int win=0;
 while(1)
  {
       printf("    扫雷游戏\n");

          for(i=0;i<8;i++)
            {
              for(j=0;j<8;j++)
                {
                  printf("%c ",ui[i][j]);
                }
               printf("\n");
           }

      printf("请输入你要打开的位置 行 列:");
          scanf("%d%d",&h,&l);
         if(map[h-1][l-1]==1)
          {
              printf("踩到雷 游戏结束\n");
                break;
          }
         h=h-1;
         l=l-1; 

         //没有踩到雷的情况  判断周围有几个雷 并把数字显示在 界面上
         //-1 -1    -1, 0   -1,+1   0 ,-1   0 ,+1   +1 ,-1    +1,0   +1 ,+1 

        //n=map[h-1][l-1]+map[h-1][l]+map[h-1][l+1]+map[h][l-1]+map[h][l+1]+map[h+1][l-1]+map[h+1][l+1]+map[h+1][l];
        i=0;

        while(i<8)
         {
             n=0;
             h1=h;
             l1=l;
             h1= h1+p[i][0];
             l1=l1+p[i][1];
             if(h1>=0&&h1<8&&l1>=0&&l1<8)
               {
                    if(map[h1][l1]==1)
                        {
                           n++;
                        }
               }

             i++;
          }

         //把得到的数字显示到 界面上 ui[h][l];
         //把int数字转换成 字符
         switch(n)
           {
                case 0:
                    ui[h][l]='0';
                       break;
                case 1:
                    ui[h][l]='1';
                       break;
                case 2:
                    ui[h][l]='2';
                       break;
                case 3:
                    ui[h][l]='3';
                       break;
                case 4:
                    ui[h][l]='4';
                       break;
                case 5:
                    ui[h][l]='5';
                       break;
                case 6:
                    ui[h][l]='6';
                       break;
                case 7:
                    ui[h][l]='7';
                       break;
                case 8:
                    ui[h][l]='8';
                       break;
           }
           win++;
           if(win==54)
             {
                printf("获胜 游戏结束\n");
                   break;
             }
   }
  return 0;
}

C语言二维数组实现扫雷游戏的更多相关文章

  1. c语言二维数组传递

    c语言二维数组传递,目前我总结三种方法,以及纠正一个不能使用的方法 /********************************* * 方法1: 第一维的长度可以不指定 * * 但必须指定第二维 ...

  2. 关于c语言二维数组与指针的个人理解及处理办法。

    相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...

  3. C语言 二维数组复制、清零及打印显示

    #include <stdlib.h> #include <stdio.h> #include <string.h> //二维整型数组打印显示 ],int row, ...

  4. C语言二维数组作业

    一.PTA实验作业 题目1:7-3 出生年 1. 本题PTA提交列表 2. 设计思路 1.声明一个函数different()用来计算一个年份的不同数字个数 2.定义y(y是来计算符合要求的年份的量), ...

  5. C语言 二维数组(指针)动态分配和释放(转)

    C 二维数组(指针)动态分配和释放 先明确下概念: 所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据.如果我们将总长128位的指令分别按 ...

  6. C语言二维数组

    上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组.在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组.多维数组元素有多个下标,以确定它在数组中的位置.本节只介绍二维数 ...

  7. C语言二维数组作为函数参数

    设有整型二维数组a[3][4]如下:0   1   2   34   5   6   78   9  10  11 它的定义为:    int a[3][4]={{0,1,2,3},{4,5,6,7} ...

  8. C语言二维数组作为函数的参数

    前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include < ...

  9. c语言二维数组与指针

    问题,以下输出的结果是什么,区别在于哪? void main() { ][] = { ,,,,,,,,,,, }; //输出的3个地址都一样,差别在哪? printf("\n%x" ...

随机推荐

  1. Java基本语法-----java二维数组

    由于word里的样式在csdn上调太麻烦了,所以我再次贴图了,后面二维数组那里是文字的,大家将就看吧. 二维数组常见的操作: 1.遍历二维数组 2.对二维数组求和 class Demo { // 定义 ...

  2. not in 前面/后面存在null值时的处理

    表声明 order_header表中有ship_method列: ship_method_map表中ship_method为主键列. 需求 找出order_header表中所有ship_method不 ...

  3. dos2unix批量转换的一种方法

    Linux本身提供了dos2unix和unix2dos两个命令来实现Windows和Linux文件的转换. 少量文件转换: 对于单个或少量的文件转换,可以直接使用命令,如: dos2unix file ...

  4. FFmpeg源代码结构图 - 编码

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  5. [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/40303897 官方文档:http://struts.apache.org/releas ...

  6. 由源代码编译SpriteBuilder最新版本1.5.0搭配最新的Cocos2D 3.4.9

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 大家知道SpriteBuilder版本停留在1.4.9已经很久 ...

  7. 排列熵算法简介及c#实现

    一.   排列熵算法简介: 排列熵算法(Permutation Entroy)为度量时间序列复杂性的一种方法,算法描述如下: 设一维时间序列: 采用相空间重构延迟坐标法对X中任一元素x(i)进行相空间 ...

  8. 如何在Cocos2D游戏中实现A*寻路算法(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  9. Spark SQL官方文档阅读--待完善

    1,DataFrame是一个将数据格式化为列形式的分布式容器,类似于一个关系型数据库表. 编程入口:SQLContext 2,SQLContext由SparkContext对象创建 也可创建一个功能更 ...

  10. Android自定义Button的“款式”

    要想让你的button呈现出一种不一样的外观,一般会采取以下两种形式 采用selector里面加图片的方式 采用selector用shape进行代码控制的方式 对第一种方式而言,只需要注意好" ...