扫雷小游戏详解

简介: 扫雷小游戏详解

   今天我主要讲的是关于扫雷小游戏的内容,我将代码分为三个文件来写game.h放头文件和函数声明,game.c放函数的定义,test.c放主函数。想要写出扫雷小游戏需要学会二维数组数组的内容。想要全部的代码可以点gitee---扫雷小程序获取。

1.菜单函数

void menu()
{
  printf("********************\n");
  printf("****   1.play   ****\n");
  printf("****   0.exit   ****\n");
  printf("********************\n");
}

这就是简单的打印,这里不做具体解释。

2.初始化数组

void inboard(char arr[ROWS][COLS], int row, int col, char sets)
{
  int i, j;
  for (i = 0; i <= row; i++)
  {
    for (j = 0; j <= col; j++)
      arr[i][j] = sets;
  }
}

       由于扫雷需要用到两个二维数组,一个是为了让用户看到的,一个是为了埋雷的,我们想让用户看到的是*,由于两个数组初始化的过程相似,故我们想到可以使用同一个函数,但是埋雷我们用到的会是1 ,0两个数字,而*却是字符类型,故我们可以用字符类型的‘1’,‘0’代替,由于这是两个数组,初始化的内容不同,但都是字符类型,所以我们可以传入参数sets来代替。

3.打印棋盘

void pboard(char arr[ROWS][COLS], int row, int col)
{
  int i, j;
  for (i = 0; i <= row; i++)
    printf("%d ", i);
  printf("\n");
  for (i = 1; i <= row; i++)
  {
    printf("%d ", i);
    for (j = 1; j <= col; j++)
    {
      printf("%c ", arr[i][j]);
    }
    printf("\n");
  }
}

       这个函数主要用于打印用户看到的棋盘也就是打印******,我们先在第一行打印0 ,1,2,3,4...... 展示行数,最左边打印1,2,3,4.....展示列数,这也方便用户使用时给点坐标,此函数还可以帮助我们确定代码设计的是否争取,只需要改变一下传入的数组内容们就可以看到。

4.埋雷

void flagboard(char arr[ROWS][COLS], int rol, int col)
{
  int x, y;
  int count = 0;
  do
  {
    x = rand() % 9 +1;
    y = rand() % 9 + 1;
    if (arr[x][y] == '0')
    {
      count++;
      arr[x][y] = '1';
    }
  } while (count < flag);
}

     

        这里需要用到我们的随机数rand()的头文件时time.h,而随机数还需要我们在主函数中设立一个种子srand((unsigned int )time(NULL)),这个种子的头文件stdlinb.h,在埋雷的时候我们需要注意需要埋在没有雷的地方,因此需要我们进行一个判断,只有成功埋上雷才进行计数,直到埋够雷。

5.扫雷

void findboard(char arr[ROWS][COLS], char brr[ROWS][COLS], int row, int col)
{
  int x, y;
  int counts = ROW*COL-flag;
  do
  {
    printf("请输入你选择的坐标:");
    scanf("%d%d", &x, &y);
    if ((x >= 1 && x <= 9) && (y >= 1 && y <= 9))
    {
      if (arr[x][y] != '1'&&brr[x][y]=='*')
      {
        brr[x][y] = arr[x - 1][y] + arr[x - 1][y - 1] + arr[x - 1][y + 1] + arr[x][y - 1] + arr[x][y + 1] + arr[x + 1][y - 1] + arr[x + 1][y] + arr[x + 1][y + 1] - 7* '0';
        pboard(brr, ROW, COL);
        counts--;
      }
      else
      {
        printf("这是雷,游戏结束\n");
        break;
      }
    }
    else
    {
      printf("输入格式错误,请重新输入\n");
    }
  } while (counts);
  if(counts==0)
    printf("恭喜你,扫雷完成\n");
}

 

    扫雷时候需要用户自己输入坐标,当不是雷的时候会在全是*的数组上进行返回值返回附近有几颗雷,其中包含游戏结束,输入格式的正确性。

       到这里我们的扫雷小游戏就已经结束了,向往各位可以学到一些东西,最后希望大家可以一键三连。

目录
相关文章
|
新零售 人工智能
阿里巴巴联合汉仪重磅推出五款人工智能字体:汉仪天真体、英雄体等
众所周知传统做字的人力成本非常之高,如果全靠人类设计师来完成,一套标准字库从设计到完成需要一年多的时间。
13958 0
|
11月前
|
传感器 人工智能 安全
万物联网
万物互联,智启未来。物联网正重塑生活与产业:从智能家居到智慧工厂,从城市治理到精准农业,通过感知、连接与智能,实现物物协同。融合AI、5G与数字孪生,迈向高效、智能的新纪元。
|
JavaScript 前端开发 API
js全屏,监听页面是否全屏
js全屏,监听页面是否全屏
674 4
|
机器学习/深度学习 人工智能 搜索推荐
DeepSeek-V2.5-1210 在线开放使用!支持联网搜索,在各大领域的表现得到全面提升
DeepSeek-V2.5-1210 是 DeepSeek V2.5 系列的最终版微调模型,支持联网搜索功能,具备在数学、编程、写作和角色扮演等领域的能力提升。本文将详细介绍该模型的功能、技术原理及应用场景。
10861 19
DeepSeek-V2.5-1210 在线开放使用!支持联网搜索,在各大领域的表现得到全面提升
|
安全 搜索推荐 Windows
如何修复Windows 10升级错误0xa0000400
通过上述方法,即使面对棘手的错误0xa0000400,也能逐步定位问题并采取相应措施,让Windows 10升级之旅回归正轨。
1486 1
|
机器学习/深度学习 人工智能 算法
强化学习在复杂环境中的应用与挑战
【8月更文第9天】强化学习(Reinforcement Learning, RL)是一种机器学习方法,通过智能体与环境的交互来学习最优策略。近年来,随着计算能力的提升和算法的进步,强化学习被广泛应用于各种复杂环境下的任务,如机器人导航、游戏策略优化等。本文将探讨强化学习在这些领域中的应用案例,并分析所面临的挑战及其潜在的解决方案。
1329 4
|
机器人 iOS开发
空间音频是什么?
从单声道音频发展到双声道、再到多声道和环绕立体声,数字音频的表现力不断提升。空间音频(也称为三维声音或3D音频)并不只是通过增加声道来创造立体感,而是一种与视频空间化同步的音频处理过程。基于空间的音频甚至可以具有六个自由度,使用户能够互动。声音不仅要清晰动听,还要与空间场景完美契合,带来沉浸式体验。让我们一起深入了解一下空间音频技术。
hbuilderX uni-app 自定义快捷键无效、无法生效解决方法(附:好用的常用的快捷键自定义代码片段)
hbuilderX uni-app 自定义快捷键无效、无法生效解决方法(附:好用的常用的快捷键自定义代码片段)
|
JavaScript Android开发
uniapp更新版本安装包升级打开后白屏
uniapp更新版本安装包升级打开后白屏
|
网络协议
Ack信号是如何发送的?
Ack信号是如何发送的?
889 0

热门文章

最新文章