感谢解答 2022-01-16 22:16 采纳率: 70.6%
浏览 67
已结题

我写了个扫雷程序,调试总提示没有memset.asm,百度了下也没有结果,你们知道吗


#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 11//控制棋盘的行
#define COL 11//控制棋盘的列
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>

void ResetBoard(char Board[ROW][COL], int row, int col)
{
    int i, j = 0;
    for (i = 1; i <= row - 2; i++)
    {
        for (j = 1; j <= col - 2; j++)
        {
            Board[i][j] = ' ';
            printf(" %c ", Board[i][j]);
            if (j < col - 2)
            {
                printf("|");
            }
        }
        printf("\n");
        for (j = 1; j <= col - 2; j++)
        {
            if (i < col - 2)
            {
                printf("---");
                if (j < col - 2)
                {
                    printf("|");
                }
            }
        }
        printf("\n");
    }
}

void Mine(char Board[ROW][COL], int row, int col)
{
    int x, y = 0;
    x = rand() % (row - 2) + 1;
    y = rand() % (col - 2) + 1;
    for (int i = 0; i <= 9; i++)
    {
        if (Board[x][y] == ' ')
        {
            Board[x][y] = '*';
        }
    }
}

int Play(char Board[ROW][COL], int row, int col)
{
    int x = 0;
    int y = 0;
    int Boom = 0;
    int count = 0;
    printf("输入坐标:");
    scanf("%d%d", &x, &y);
    if (Board[x][y] == '*')
    {
        return 0;
    }
    for (int i = 1; i <= row - 2; i++)
    {
        for (int j = 1; j <= col - 2; j++)
        {
            if (Board[i][j] == ' ')
            {
                count++;
                if (count == 0)
                {
                    return 1;
                }
            }
        }
    }
    for (int i = x - 1; i <= x + 1; i++)
    {
        for (int j = y - 1; j <= j + 1; j++)
        {
            if (Board[i][j] == '*')
            {
                Boom++;
            }
        }
    }
    if (Board[x][y] == ' ')
    {
        Board[x][y] = Boom;
    }
}

void PlayBoard(char Board[ROW][COL], int row, int col)
{
    int i, j = 0;
    for (i = 1; i <= row - 2; i++)
    {
        for (j = 1; j <= col - 2; j++)
        {
            printf(" %c ", Board[i][j]);
            if (j < col - 2)
            {
                printf("|");
            }
        }
        printf("\n");
        for (j = 1; j <= col - 2; j++)
        {
            if (i < col - 2)
            {
                printf("---");
                if (j < col - 2)
                {
                    printf("|");
                }
            }
        }
        printf("\n");
    }
}

void menu()
{
    printf("**************************\n");
    printf("***** 1.play  0.exit *****\n");
    printf("**************************\n");
    printf("输入1开始游戏 输入0退出游戏:\n");
}

void game()
{
    char Board[ROW][COL] = { 0 };
    ResetBoard(Board, ROW, COL);
    while (1)
    {
        int back = 0;
        Mine(Board, ROW, COL);
        printf("请输入坐标:\n");
        Play(Board, ROW, COL);
        PlayBoard(Board, ROW, COL);
        back = Play(Board, ROW, COL);
        if (back == 0)
        {
            printf("BOOOOOOOM!!!\n");
            break;
        }
        if (back == 1)
        {
            printf("获胜!\n");
            break;
        }
    }
}

int main()//自建扫雷游戏
{
    int input = 0;
    srand((unsigned int)time(NULL));//这个用的是 stdlib.h,而不是string.h
    do
    {
        menu();
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            game();
            break;
        case 2:
            printf("退出游戏!\n");
            break;
        default:
            printf("输入错误,请重新输入!\n");
            break;
        }

    } while (input);
}

img

img

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-01-17 12:58
    关注

    修改如下,供参考:

    #define _CRT_SECURE_NO_WARNINGS 1
    #define ROW 11//控制棋盘的行
    #define COL 11//控制棋盘的列
    #include <stdio.h>
    #include <time.h>
    #include <string.h>
    #include <stdlib.h>
    
    void ResetBoard(char Board[ROW][COL], int row, int col)
    {
        int i, j = 0;
        for (i = 1; i <= row - 2; i++)
        {
            for (j = 1; j <= col - 2; j++)
            {
                Board[i][j] = ' ';
                printf(" %c ", Board[i][j]);
                if (j < col - 2)
                {
                    printf("|");
                }
            }
            printf("\n");
            for (j = 1; j <= col - 2; j++)
            {
                if (i < col - 2)
                {
                    printf("---");
                    if (j < col - 2)
                    {
                        printf("|");
                    }
                }
            }
            printf("\n");
        }
    }
    
    void Mine(char Board[ROW][COL], int row, int col)
    {
        int x, y = 0;
        x = rand() % (row - 2) + 1;
        y = rand() % (col - 2) + 1;
        for (int i = 0; i <= 9; i++)
        {
            if (Board[x][y] == ' ')
            {
                Board[x][y] = '*';
            }
        }
    }
    
    int Play(char Board[ROW][COL], int row, int col)
    {
        int x = 0;
        int y = 0;
        int Boom = 0;
        int count = 0;
        printf("输入坐标:");
        scanf("%d%d", &x, &y);
        if (Board[x][y] == '*')
        {
            return 0;
        }
        for (int i = 1; i <= row - 2; i++)
        {
            for (int j = 1; j <= col - 2; j++)
            {
                if (Board[i][j] == ' ')
                {
                    count++;
                    if (count == 0)
                    {
                        return 1;
                    }
                }
            }
        }
        for (int i = x - 1; i <= x + 1; i++)
        {
            for (int j = y - 1; j <= y + 1; j++)  //for (int j = y - 1; j <= j + 1; j++)
            {
                if (Board[i][j] == '*')
                {
                    Boom++;
                }
            }
        }
        if (Board[x][y] == ' ')
        {
            Board[x][y] = Boom;
        }
    }
    
    void PlayBoard(char Board[ROW][COL], int row, int col)
    {
        int i, j = 0;
        for (i = 1; i <= row - 2; i++)
        {
            for (j = 1; j <= col - 2; j++)
            {
                printf(" %c ", Board[i][j]);
                if (j < col - 2)
                {
                    printf("|");
                }
            }
            printf("\n");
            for (j = 1; j <= col - 2; j++)
            {
                if (i < col - 2)
                {
                    printf("---");
                    if (j < col - 2)
                    {
                        printf("|");
                    }
                }
            }
            printf("\n");
        }
    }
    
    void menu()
    {
        printf("**************************\n");
        printf("***** 1.play  2.exit *****\n");
        printf("**************************\n");
        printf("输入1开始游戏 输入2退出游戏:\n");
    }
    
    void game()
    {
        char Board[ROW][COL] = { 0 };
        ResetBoard(Board, ROW, COL);
        while (1)
        {
            int back = 0;
            Mine(Board, ROW, COL);
            printf("请输入坐标:\n");
            Play(Board, ROW, COL);
            PlayBoard(Board, ROW, COL);
            back = Play(Board, ROW, COL);
            if (back == 0)
            {
                printf("BOOOOOOOM!!!\n");
                break;
            }
            if (back == 1)
            {
                printf("获胜!\n");
                break;
            }
        }
    }
    
    int main()//自建扫雷游戏
    {
        int input = 1;     //修改
        srand((unsigned int)time(NULL));//这个用的是 stdlib.h,而不是string.h
        do
        {
            menu();
            scanf("%d", &input);
            switch (input)
            {
            case 1:
                game();
                break;
            case 2:
                input = 0;             //修改
                printf("退出游戏!\n");
                break;
            default:
                input = 1;            //修改
                printf("输入错误,请重新输入!\n");
                break;
            }
    
        } while (input);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月26日
  • 已采纳回答 1月18日
  • 创建了问题 1月16日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理