扫雷的实现(初级版)

简介: 扫雷的实现(初级版)

1.设置2个11*11的棋盘,用字符型数组来表示。

2.其中棋盘一个用于随机分布雷

3.另外一个用于显示周围雷的个数

4.玩家输入坐标

5.写一个函数用于判断该坐标是否为雷

6.继续或结束

....

附代码

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
int main()
{
  srand((unsigned)time(NULL));
  menu();
  int input = 0;
  char Board[ROWS][COLS] = { 0 };
  char arr[ROWS][COLS] = { 0 };
  int i = 0;
 
  do {
    printf("请选择:>\n");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      init_Board(Board,ROWS,COLS);
      init_char(arr, ROWS, COLS);
      set_Mine(Board, ROW, COL);
      //print_arr(arr, ROW, COL);
      while (1)
      {
        i=judge_Mine(Board, ROW, COL, arr);
        print_arr(arr, ROW, COL);
        if (i == 0)
          break;
        if (i == 71)
        {
          printf("congratulations!win!\n");
          break;
        }
      }
      break;
    case 0:
      printf("BYE\n");
      break;
    default:
      printf("无效选择:>\n");
    }
  } while (input);
  return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
//菜单
void menu(void)
{
  printf("*******************************\n");
  printf("************ 1.paly ***********\n");
  printf("************ 0.exit ***********\n");
  printf("*******************************\n");
 
}
//重置棋盘
void init_Board(char Board[ROWS][COLS], int row, int col)
{
  int m = 0;
  int n = 0;
 
  for (m = 0; m < row; m++)
  {
  
    for (n = 0; n < col; n++)
    {
      Board[m][n] = '0';
    }
 
  }
}
//重置棋盘
void init_char(char arr[ROWS][COLS], int row, int col)
{
  int m = 0;
  int n = 0;
 
  for (m = 0; m < row; m++)
  {
 
    for (n = 0; n < col; n++)
    {
      arr[m][n] = '*';
 
    }
 
  }
}
//布置雷
void set_Mine(char Board[ROWS][COLS], int row, int col)
{
  int x = 1;
  int y = 1;
  int c = 0;
  while (c <= count)
  {
    x = rand() % 9 + 1;
    y = rand() % 9 + 1;
    if (Board[x][y] == '0')
    {
      Board[x][y] = '1';
      c++;
    }
  }
}
//失败时打印雷的分布情况
void print_Mine(char Board[ROWS][COLS], int row, int col)
{
    int x = 0, y = 0,i=0;
    
      for (i = 0; i <= row; i++)
      {
        printf("%d ", i);
      }
      printf("\n");
      for (x = 1; x <= row; x++)
      {
        printf("%d ", x);
        for (y = 1; y <= col; y++)
        {
          printf("%c ", Board[x][y]);
        }
        printf("\n");
      }
}
//显示周围雷的情况
int count_mine(char Board[ROWS][COLS], int x, int y)
{
  return (Board[x - 1][y] + Board[x + 1][y] + Board[x - 1][y - 1] + Board[x - 1][y + 1] +
    Board[x][y - 1] + Board[x][y + 1] + Board[x + 1][y - 1] + Board[x + 1][y + 1] - 8 * '0');
}
//判断是否为雷
int judge_Mine(char Board[ROWS][COL], int row, int col,char arr[ROWS][COLS])
{
  printf("请输入坐标\n");
  int x = 0;
  int y = 0;
  int ret = 0;
  static int k = 0;
  scanf("%d%d", &x, &y);
  if (x >= 1 && x <= row && y >= 1 && y <= col)
  {
    if (Board[x][y] != '1')
    {
      ret = count_mine(Board, x, y);
      arr[x][y] = ret + '0';
      k++;
      return k;
    }
    else
    {
      printf("defate\n");
      print_Mine(Board, ROW, COL);
      return 0;
    }
 
  }
}
//打印棋盘
void print_arr(char arr[ROWS][COLS], int row, int col)
{
  int x = 0;
  int y = 0;
  int i = 0;
  for (i = 0; i <= row; i++)
  {
    printf("%d ", i);
  }
  printf("\n");
  for (x = 1; x <= col; x++)
  {
    printf("%d ", x);
    for (y = 1; y <= col; y++)
    {
      printf("%c ", arr[x][y]);
    }
    printf("\n");
  }
 
}


相关文章
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
379 0
|
存储 运维 安全
云计算:优势与挑战
在数字化浪潮的推动下,云计算已经成为企业信息化建设的重要组成部分。本文将针对云计算的优势和劣势进行深入分析,旨在为读者提供全面的了解和参考。
1904 5
|
JavaScript 前端开发
vue动画——旋转动画(悬浮触发、点击触发)
vue动画——旋转动画(悬浮触发、点击触发)
519 1
|
存储 Java 索引
如何在 Java 中打印数组
【8月更文挑战第22天】
332 0
|
图形学 开发者
unity实战之lol技能释放范围
unity实现ol技能释范围放判定
unity实战之lol技能释放范围
|
存储 对象存储
对象存储OSS类型
对象存储OSS提供标准、低频访问、归档、冷归档、深度冷归档多种存储类型,全面覆盖从热到冷的各种数据存储场景。
335 1
|
Web App开发 XML 传感器
VSCode 开发Vue必备插件
VSCode 开发Vue必备插件
544 0
|
小程序 JavaScript 开发者
uniapp分包
uniapp分包
239 1
|
Dragonfly 人工智能 安全
Dragonfly 发布 v2.1.0 版本!
Dragonfly 最新正式版本 v2.1.0 已经发布! 欢迎使用!
Dragonfly 发布 v2.1.0 版本!
|
Web App开发 编解码 固态存储
camtasia有效密钥2022有哪些?
camtasia有效密钥2022有哪些?camtasia是TechSmith旗下一款专门录制屏幕动作的工具,这款软件是一款付费软件,用户需要激活密钥才可以激活,所以很多的用户都在网上求有效的密钥,所以下面小编就给大家带来camtasia有效密钥2022通用有效。
12495 2
camtasia有效密钥2022有哪些?