小型项目——扫雷游戏(模块化实现)

简介: 小型项目——扫雷游戏(模块化实现)

公众号——《小白技术圈》,回复关键字:ml学习资料。1T学习资料免费分享给你。


![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/b6b5bb3e07234991bbd3eff10593cf14.gif#pic_center)

____


完整代码


https://gitee.com/programmer-lego/c-language

扫雷游戏视频

打印菜单

void menu()
{
  printf("##############################################\n");
  printf("##################按1 玩游戏##################\n");
  printf("#################按0不玩游戏##################\n");
  printf("##############################################\n");
}

玩家做出选择

  do
  {
    printf("请做出选择->");
    scanf("%d", &n);
    switch (n)
    {
    case 1:
      game();
      break;
    case 0:
      printf("不玩游戏,退出程序\n");
      break;
    default:
      printf("选择错误,请从新输入");
      break;
    }
  } while (n);

创立雷盘,和展示给用户的雷盘

#define ROWS 11
#define COLS 11
#define ROW 9
#define COL 9
void game()
{
  char board[ROWS][COLS], show[ROWS][COLS];
  //初始化
}

初始化两个盘子

  init(board, ROWS, COLS, '0');
  init(show, ROWS, COLS, '*');
void init(char board[ROWS][COLS], int rows,int cols,char x)
{
  int a, b;
  for (a = 0; a < rows; a++)
  {
    for (b = 0; b < cols; b++)
    {
      board[a][b] = 'x';
    }
  }
}

打印盘子

void print(char board[ROWS][COLS], int row, int col)
{
  int a, b;
  for (b = 0; b <= col; b++)
  {
    printf("%d ", b);
  }
  printf("\n");
  for (a = 1; a <= row; a++)
  {
    printf("%d ", a);
    for (b = 1; b <=col; b++)
    {
      printf("%c ", board[a][b]);
    }
    printf("\n");
  }
 
}

放雷(电脑随机放雷)

void put(char board[ROWS][COLS], int row, int col)
{
  int sum = MINE;
  while (sum)
  {
    int x = rand() % row + 1;
    int y = rand() % col + 1;
    if (board[x][y] == '0')
    {
      board[x][y] = '1';
      sum--;
    }
  }
}

进行扫雷

int sweep_mine(char board[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
  int x, y;
  printf("请输入坐标->");
    scanf("%d%d", &x, &y);
    if (x > 0 && x <= row && y > 0 && y <= col)
    {
      s=judge(board, show, x, y);
    }
    else
    {
      printf("请输入正确的坐标->");
    }
    return s;
}
int judge(char board[ROWS][COLS], char show[ROWS][COLS], int x, int y)
{
  int a = 0, b = 0, sum = 0;
  if (x <= 0 || y <= 0 || x > 9 || y > 9||board[x][y]=='q')
  {
    return s;
  }
  else if (board[x][y] == '1')
  {
    return -1;
  }
  else
  {
    a = x - 1;
    b = y - 1;
    for (a=x-1; a <= x + 1; a++)
    {
      for (b=y-1; b <= y + 1; b++)
      {
        if (board[a][b] == '1')
        {
          sum++;
        }
      }
    }
    if (sum != 0)
    {
      show[x][y] = '0' + sum;
      s--;
    }
    else
    {
      show[x][y] = ' ';
      for (a = x - 1; a <= x + 1&&a<=ROW&&a>0; a++)
      {
        for (b=y-1; b <= y + 1&&b<=COL&&b>0; b++)
        {
          show[a][b] = ' ';
          s--;
          board[x][y] = 'q';
          judge(board, show, a, b);
        }
      }
    }
  }
}

判断是否成功

  while (s>0)
  {
    print(show, ROW, COL);
    s=sweep_mine(board, show, ROW, COL);//注意
    
  }
  if (s == 0)
  {
    printf("扫雷成功\n");
    //printf("下面是雷图\n");
    //print(board, ROW, COL);
  }
  else
  {
    printf("哈哈哈,你被炸死了\n");
    //printf("下面是雷图\n");
    //print(board, ROW, COL);
  }
相关文章
|
15天前
|
JavaScript 前端开发 Java
SpringBootWebProject小型项目——学生管理系统完整搭建
SpringBootWebProject小型项目——学生管理系统完整搭建
13 0
|
1月前
|
C++
C++程序设计:探索函数与模块化的魅力
C++程序设计:探索函数与模块化的魅力
24 0
|
6月前
|
存储
扫雷小游戏的优化!(不仅仅是展开功能哦)
扫雷小游戏的优化!(不仅仅是展开功能哦)
55 0
|
8月前
|
安全
潮玩元宇宙大逃杀游戏系统开发稳定版/案例设计/详细功能/需求逻辑/源码项目
The development rules of virtual reality game systems, especially the metaverse escape game system, can vary depending on specific designs and requirements. The following are some common development rules and considerations that may include
|
开发工具 C# 图形学
选择游戏开发工具的原则
这篇文章重点不是介绍这个关卡编辑工具,而是想说说如何选择工具。昨天在使用 Unity 制作关卡编辑器的时候,我就在想有没有可能让一个新手快速的学会并且使用它做出东西,想来想去最终得到的结果是不可能。 再看一眼上面的这个 Unity 软件的界面,如果你是一个从未做过游戏的新手的话,估计已经开始脑阔疼了,光是工具本身门槛已经足够高了,更别说是还有另一个前提:学习 C# 编程语言。
96 0
游戏开发零基础入门教程(8):游戏积木之逻辑
“如果,那么”的逻辑非常的直白,如果玩家死了,那么游戏就应该结束。反之,如果玩家没有死,那么游戏就不应该结束。如果我干掉了一个敌人,那么我的得分就应该加一。如果敌人被子弹打中了,那么它就应该爆炸......
77 0
|
存储 JavaScript C#
从零开始做一款Unity3D游戏<三>——编写游戏机制(一)
从零开始做一款Unity3D游戏<三>——编写游戏机制
从零开始做一款Unity3D游戏<三>——编写游戏机制(一)
|
存储 设计模式 JavaScript
从零开始做一款Unity3D游戏<三>——编写游戏机制(二)
从零开始做一款Unity3D游戏<三>——编写游戏机制
从零开始做一款Unity3D游戏<三>——编写游戏机制(二)
|
存储 机器人 API
网络游戏简单化!PUN插件了解一下?(Unity3D)
Photon Unity Networking (PUN)是一种用于多人游戏的Unity软件包。 灵活的匹配可以让玩家进入房间,可以通过网络同步对象。 快速和可靠的通信是通过专用的Photon 服务器完成的,因此客户端连接不需要1对1。
|
定位技术
从零开始实现放置游戏(一)——游戏设计
想要做一款成功的游戏,离不开优秀的策划,设计,玩法,美术,等等等等。这其中需要学习的东西太多。然而多想无益,这些东西越学越多,只有先尽快做出成品,然后不断迭代,才能更加深入了了解。因此,这里我们直接参考已有的成功案例,并加入一些我们自己的理解,适当改良。
从零开始实现放置游戏(一)——游戏设计