Wangx_wang 2023-11-21 16:32 采纳率: 85.7%
浏览 5

c语言扫雷游戏为什么我这个setmine在放置雷以后,出了这个函数,雷就消失了


void Initmine(char mine[ROW_S][COL_S], int row, int col)
{
    int i = 0;
    for (i = 0; i < row; i++)
    {
        int j = 0;
        for (j = 0; j < col; j++)
        {
            mine[i][j] = '0';
        }

    }

}

void Initshow(char show[ROW_S][COL_S], int row, int col)
{
    int i = 0;
    for (i = 0; i < row; i++)
    {
        int j = 0;
        for (j = 0; j < col; j++)
            show[i][j] = '*';

    }


}

void DisplayBoard(char board[ROW][COL], int row, int col)
{
    int i = 0;
    int j = 0;
    printf("------扫雷游戏------\n");
    for(j=0;j<=col;j++)
    printf("%d ", j);
    printf("\n");
    for (i = 1; i <=row; i++)
        {
        printf("%d ", i);
        for (j = 1; j <=col; j++)    
            {
                printf("%c ",board[row][col]);
            }
        printf("\n");
        }
    printf("------扫雷游戏------\n");

}

void Setmine(char board[ROW][COL], int row, int col)
{
    int x = 0;
    int y = 0;
    int count = number_mine;
    while (count)
    {
        x = rand() % row+ 1;
        y = rand() % col + 1;
        if (board[x][y] == '0')
        {
            board[x][y] = '1';
            count--;
        }
    }


}


void game()
{
    char mine[ROW_S][COL_S] = { 0 };
    char show[ROW_S][COL_S] = { 0 };
    //初始化
    Initmine(mine, ROW_S, COL_S);
    Initshow(show,ROW_S,COL_S);
    Setmine(mine, ROW, COL);
    DisplayBoard(mine, ROW, COL);
    //DisplayBoard(show,ROW+1,COL+1);


}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-21 19:11
    关注

    【相关推荐】



    • 这篇博客: 【C语言实现小游戏篇】我接触的第一款电脑游戏,你可以永远相信 “ 扫雷 ” 。[ C语言实现 ] [ 超详细,超清楚 ] [ 有代码 ]中的 SetMine(); 🔎 布置雷的函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      void SetMine(char mine[ROWS][COLS], int row, int col)		//随机 在雷盘中 布置雷
      {//布置雷的函数	传参 二维数组(雷)、行、列
      	int count = MINE_NUM;	//需要布置的雷的个数
      	while (count)
      	{
      		int x = rand() % row + 1;		//生成随机行坐标
      		int y = rand() % col + 1;		//生成随机列坐标
      		//rand() 函数可以生成一个随机数 对行或者列 求余就可以,生成一个合法(1 <= x,y <= row)的坐标
      		//rand() 函数使用前,需要用 srand() 函数通过 参数改变系统提供的种子值,从而可以使得每次调用rand函数生成的值随机
      		if (mine[x][y] == '0')
      		{
      			mine[x][y] = '1';			//数组内存入 '1',即此处为 雷
      			count--;
      		}
      	}
      }
      

      💡如果将布置好雷的雷盘打印出来,就会是这样💡布置好雷的雷盘( 0 为无雷,1 为有雷)



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月21日