1:这次我们会将前面的代码进行整合,和整理,最终使我们的程序可以有效的运行起来。

【1】初始化函数。
void GameInit()
{
    //随机数种子
    srand((unsigned int)time(NULL));
    //数组初始化
    
    for(int i = 0;i < ROW+2;i++)
    {
        for(int j = 0;j < COL+2;j++)
        {
            map[i][j] = 0;
        }    
    }
    //布雷 -1表示雷
    int n = 0; 
    while(n<NUM)
    {
        int r = rand() % ROW + 1;//1--ROW 
        int c = rand() % COL + 1;//1--C0L 
        if(map[r][c] == 0)
        {
            map[r][c] = -1;
            n++;
        }
    }
    //跟据类的分布 填充其他部位雷的数据 
    for(int i = 1;i <= ROW;i++)
    {
        for(int j = 1;j <= COL;j++)
        {//                  遍历二维数组 
            if(map[i][j] != -1)//找到不为雷的元素 
            {
                //遍历九宫格
                for(int m=i-1;m<=i+1;m++)
                {
                    for(int n=j-1;n<=j+1;n++)
                    {
                        if(map[m][n]==-1)
                        {
                            map[i][j]++;
                        }
                    }
                }
            }
        }
    }
}

【2】加密。

void GameDraw()
{
    //加密
    /*
    雷-1-----------19
    空0------------20
    1---------------21
    2---------------22
    3---------------23
    4---------------24
    5---------------25
    6---------------26
    大于等于19的 
    */
    for(int i = 1;i <= ROW;i++)
    {
        for(int j = 1;j <= COL;j++)
        {
            map[i][j]+=20;
        }
    }
    PrintPlay();
}

【3】打印扫雷的界面。

void PrintPlay()
{
    //打印  
    int i,j;
    for(i = 1;i <= ROW;i++)
    {
        for(j = 1;j <= COL;j++)
        {
            if(map[i][j]>=19)
            {
                printf(" *");
            }
            else
            {
                printf("%2d",map[i][j]);
            }
        }
        printf("\n");
    }
}

【4】用户玩输入坐标。

//用户玩输入坐标。
void GameUser()
{
    int z;
    while(z)
    {
        
        int x,y;
        printf("请输入坐标:\n");
        scanf("%d %d",&x,&y);
        if(x<=10&&x>=1&&y<=10&&y>=1)
        {
            //解密
                /*
    雷-1-----------19
    空0------------20
    1---------------21
    2---------------22
    3---------------23
    4---------------24
    5---------------25
    6---------------26
    1 1 1 
    1 1 1
    1 1 1
    大于等于19的 
        
    */
            if(map[x][y]<19)
            {
                printf("已翻开。\n");
            }
            else
            {
                switch(map[x][y])
                {
                    
                    
                    case 19:
                        //    游戏结束
                        map[x][y]-=20;
                        PrintPlay();//打印 
                        printf("你踩到雷了19!\n");
                        z=0;
                        //跳转到结束 
                        break;
                    case 20:
                        //空 
                        //解密 
                        //map[x][y]-=20;
                        //空周围为空的叶打印出来 
                        point(x,y); 
                        PrintPlay();//打印 
                        break;
                    case 21:
                    case 22:
                    case 23:
                    case 24:
                    case 25:
                    case 26:
                    case 27:
                    case 28:
                        //周围有雷
                        //解密输出就可以 
                        map[x][y]-=20;//解密 
                        PrintPlay();//打印 
                        break;
                    default :
                        break;
                }
            }
            
        }
        else
        {
            printf("您输入错误!"); 
        }
    } 
}

【5】:打印周围为空的地方

//打印周周围为空的地方void point(int x,int y)
{
    //遍历九宫格
    for(int m=x-1;m<=x+1;m++)
    {
        for(int n=y-1;n<=y+1;n++)
        {
            if(map[m][n]==20)
            {
                map[m][n]-=20;
                point(m,n);
            }
        }
    }    
}

【6】主函数。

void main()
{
    printf("欢迎来到Q的编程世界:\n");
    //初始化函数     
    GameInit();
    //绘制函数  打印二维数组中所有的元素 
    
    GameDraw();
    //用户玩输入坐标
    GameUser();
    system("pause");
}

【7】:最后把我们的代码,整合一下就得到如下的,C语言简单的键盘玩扫雷小游戏的完整代码:

/*
Q的编程世界 
*/ 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define ROW 10//行 
#define COL 10//列 
#define NUM 10//雷的个数
 
int map[ROW+2][COL+2];

//初始化函数
void GameInit()
{
    //随机数种子
    srand((unsigned int)time(NULL));
    //数组初始化
    
    for(int i = 0;i < ROW+2;i++)
    {
        for(int j = 0;j < COL+2;j++)
        {
            map[i][j] = 0;
        }    
    }
    //布雷 -1表示雷
    int n = 0; 
    while(n<NUM)
    {
        int r = rand() % ROW + 1;//1--ROW 
        int c = rand() % COL + 1;//1--C0L 
        if(map[r][c] == 0)
        {
            map[r][c] = -1;
            n++;
        }
    }
    //跟据类的分布 填充其他部位雷的数据 
    for(int i = 1;i <= ROW;i++)
    {
        for(int j = 1;j <= COL;j++)
        {//                  遍历二维数组 
            if(map[i][j] != -1)//找到不为雷的元素 
            {
                //遍历九宫格
                for(int m=i-1;m<=i+1;m++)
                {
                    for(int n=j-1;n<=j+1;n++)
                    {
                        if(map[m][n]==-1)
                        {
                            map[i][j]++;
                        }
                    }
                }
            }
        }
    }
}

void PrintPlay();
//绘制函数  打印二维数组中所有的元素 
void GameDraw()
{
    //加密
    
    for(int i = 1;i <= ROW;i++)
    {
        for(int j = 1;j <= COL;j++)
        {
            map[i][j]+=20;
        }
    }
    PrintPlay();
}

void PrintPlay()
{
    //打印  
    int i,j;
    for(i = 1;i <= ROW;i++)
    {
        for(j = 1;j <= COL;j++)
        {
            if(map[i][j]>=19)
            {
                printf(" *");
            }
            else
            {
                printf("%2d",map[i][j]);
            }           
        }
        printf("\n");
    }

}

//打印周圍為空的
void point(int x,int y)
{
    //遍历九宫格
    for(int m=x-1;m<=x+1;m++)
    {
        for(int n=y-1;n<=y+1;n++)
        {
            if(map[m][n]==20)
            {
                map[m][n]-=20;
                point(m,n);
            }
        }
    }    
}
//用户玩输入坐标
void GameUser()
{
    int z;
    while(z)
    {
        
        int x,y;
        printf("请输入坐标:\n");
        scanf("%d %d",&x,&y);
        if(x<=10&&x>=1&&y<=10&&y>=1)
        {
            //解密

if(map[x][y]<19)
            {
                printf("已翻开。\n");
            }
            else
            {
                switch(map[x][y])
                {
                    
              
                    case 19:
                        //    游戏结束
                        map[x][y]-=20;
                        PrintPlay();//打印 
                        printf("你踩到雷了19!\n");
                        z=0;
                        //跳转到结束 
                        break;
                    case 20:
                        //空 
                        //解密 
                        //map[x][y]-=20;
                        //空周围为空的叶打印出来 
                        point(x,y); 
                        PrintPlay();//打印 
                        break;
                    case 21:
                    case 22:
                    case 23:
                    case 24:
                    case 25:
                    case 26:
                    case 27:
                    case 28:
                        //周围有雷
                        //解密输出就可以 
                        map[x][y]-=20;//解密 
                        PrintPlay();//打印 
                        break;
                    default :
                        break;
                }
            }
            
        }
        else
        {
            printf("您输入错误!"); 
        }
    } 
}

void main()
{
    printf("欢迎来到Q的编程世界:\n");
    //初始化函数     
    GameInit();
    //绘制函数  打印二维数组中所有的元素 
    
    GameDraw();
    //用户玩输入坐标
    GameUser();
    system("pause");
}

下面是运行图片:

好嘞,键盘玩扫雷到这里就完结了,拜拜,让我们下次再见吧!!!

C语言简单的键盘玩扫雷小游戏(完结)相关推荐

  1. 在SAP GUI中玩扫雷小游戏

    在GUI中玩扫雷小游戏 ABAP代码: *&---------------------------------------------------------------------* *&a ...

  2. C语言初学者复刻经典扫雷小游戏(图形界面,非黑白窗口)(含源码)

    注:除计时器和剩余雷数显示外,其他功能完美还原. 目录 一.程序演示 二.程序信息 1.基础信息 2.前言 3.所需文件 三.代码解析 1.头文件 2.变量声明 3.随机生成雷 4.生成雷位置矩阵 5 ...

  3. 【C语言实现】全面的扫雷小游戏(包括空白展开、标记等)具体步骤加代码分析

    文章目录 前言 一.问题描述 二.基本框架构思 三.具体实现 1.扫雷接口实现 2.地图初始化 3.设置雷 4.显示界面 5.开始扫雷 6.计算周围雷的数量 7.排查雷 8.空白展开 9.标记雷 10 ...

  4. 井字棋小游戏c语言简单编码,井字棋小游戏(C语言)

    1 #include 2 #include 3 #include 4 #include 5 #include 6 7 void drawBoard(char *board) //绘制棋盘 8 {9 p ...

  5. 用C语言实现一个简单的扫雷小游戏(附全代码及教程)

    本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下: 首先,创建一个text.c文件: 编写主函数: int main() {test();return 0; } 定义test ...

  6. C语言实现扫雷小游戏 纯小白 非黑窗口

    C语言实现一个普通的扫雷小游戏 纯小白所编(含代码非黑窗口!) 扫雷 主要功能 1.创建一个图形界面 2.了解扫雷游戏的原理 3.随机生成雷的位置 4.为整个数组加密,并在雷周围的位置加一 5.导入图 ...

  7. 用c语言实现扫雷小游戏。

    相信小伙伴在学习c语言的时候想做一些小趣事,下面就是用c语言来实现一个扫雷小游戏,不过是简单的实现扫雷(只是通过数组的方式来实现),适合新手学习. 我用的是vs敲的这个代码,大家可以用vs运行(可能有 ...

  8. 【C语言】扫雷小游戏详解

    [C语言]扫雷小游戏详解 前言: 还记得大明湖畔的夏雨荷,电脑课上的扫雷吗? ---------------------------是 他 吗--------------------------- 没 ...

  9. 使用C语言写一个扫雷小游戏

    前言 相信扫雷游戏小伙伴们肯定都玩过吧,学习了C语言中的数组.函数等基础内容之后就可以自己写一个简易的扫雷小游戏了,今天就我写扫雷小游戏的过程及思路写一篇博客,希望大家看完我的博客能有所收获. 软件及 ...

最新文章

  1. 最新数据:一图看清全球393家独角兽公司
  2. Android之靠谱的把图片和视频插入手机系统相册
  3. 一文读懂 HMM 模型和 Viterbi 算法
  4. 吴恩达机器学习3-无监督学习
  5. 帮中国修长城前,英特尔还用AI追踪北极熊、保护鲸鱼
  6. idea的tomcat实现热部署遇到的问题
  7. C语言程序设计:图书管理系统(超详细有登录系统,附代码和实验报告)
  8. 长ping 命令,检测网络连接状态
  9. dstat 命令详解
  10. linux数学软件,使用这些Linux应用来征服你的数学学习
  11. vue解决跨域问题(Vue-CLI)
  12. Java 操作 Office:POI之word图片处理
  13. 一个网站直接跳转引起的一些思考
  14. linux vi回到末行模式,Linux vi/vim 的命令模式,,编辑模式,末行模式
  15. 手把手教你如何在广交会使用OBS直播丨汇信外贸软件
  16. ajax里的append,使用AJAX源和appendTo理解和实现jQuery自动完成
  17. 基金定投是什么?定投的特点?
  18. 步进电机和伺服电机优缺点
  19. 华为HCIE RS笔记-17以太网技术PPoE
  20. w3cshool之JavaScript对象_Date

热门文章

  1. SAP英语专栏:第1篇
  2. Word for Mac 显示空格
  3. selenium最新各浏览器driver驱动下载地址
  4. might和could的区别用法_情态动词may与might用法
  5. 《Android游戏编程入门经典》——1.1节Android 4简介
  6. FutureTask源码解析二
  7. “大数据”挖出老鼠仓的政治价值
  8. RSA Conference 2018亚太及日本大会公布主题演讲嘉宾阵容
  9. 数据结构:10大经典排序
  10. 数据分析方法:结构分析法