m0_59696689 2021-07-06 15:29 采纳率: 70.6%
浏览 57
已结题

求各位更改一下扫雷的基础代码,我这个运行一直出错

#include <stdio.h>
#include <stdlib.h>
#define VISIBLE_SAFE    0
#define HIDDEN_SAFE     1
#define HIDDEN_MINE     2

#define SIZE              8

void initialise_field(int minefield[SIZE][SIZE]);
void print_debug_minefield(int minefield[SIZE][SIZE],int number,int array_row[number],int array_column[number]);

int main(void) {
    int minefield[SIZE][SIZE];
    int number;
    initialise_field(minefield);
    int array_row[SIZE];
    int array_column[SIZE];
    printf("Welcome to minesweeper!\n");
    printf("How many mines? ");
    scanf("%d\n",&number);[

    int row,column;
    printf("Enter pairs:\n");
    int i = 0;
    while (number > i) {
        scanf("%d %d\n",&row,&column);
        array_row[i] = row;
        array_column[i] = column;
        i++;
    }
    printf("Game Started\n");
    print_debug_minefield(minefield,i,&array_row[i],&array_column[i]);


    // TODO: Scan in commands to play the game until the game ends.
    // A game ends when the player wins, loses, or enters EOF (Ctrl+D).
    // You should display the minefield after each command has been processed.


    return 0;
}

void initialise_field(int minefield[SIZE][SIZE]) {
    int i = 0;
    while (i < SIZE) {
        int j = 0;
        while (j < SIZE) {
            minefield[i][j] = HIDDEN_SAFE;
            j++;
        }
        i++;
    }
}

void print_debug_minefield(int minefield[SIZE][SIZE],int number,int array_row[number],int array_column[number]) {
    int i = 0;
    while (i < SIZE) {
        int j = 0;
        while (j < SIZE) {
            int a = 0;
            if (i == array_row[a] && j == array_column[a]) {
                while (a < number){
                    printf("%d ",HIDDEN_MINE);
                    a++;
                }
            } else {
                printf("%d ",minefield[i][j]);
            }
            j++;
        }
        printf("\n");
        i++;
    }
}

运行起来这样就行了。
img

  • 写回答

1条回答 默认 最新

  • 浪客 2021-07-06 17:25
    关注
    #include <stdio.h>
    #include <stdlib.h>
    
    #define VISIBLE_SAFE 0
    #define HIDDEN_SAFE 1
    #define HIDDEN_MINE 2
    #define SIZE 8
    
    typedef struct _point //雷的坐标
    {
        int x; //列
        int y; //行
    } Point;
    
    void init_field(int minefield[][SIZE], Point point[], int number) 
    {
        int i = 0;
        while (i < SIZE)
        {
            int j = 0;
            while (j < SIZE)
            {
                minefield[i][j] = HIDDEN_SAFE;
                j++;
            }
            i++;
        }
        //初始化的时候直接把雷得位置也写进去
        for (i = 0; i < number; i++)
        {
            if (point[i].y < SIZE && point[i].x < SIZE)
                minefield[point[i].y][point[i].x] = HIDDEN_MINE;
        }
    }
    
    //因为初始化的时候已经写入的雷的位置,直接输出就可以了。
    void print_minefield(int minefield[][SIZE])
    {
        int i = 0;
        while (i < SIZE)
        {
            int j = 0;
            while (j < SIZE)
            {
                printf("%d ", minefield[i][j]);
                j++;
            }
            i++;
            printf("\n");
        }
    }
    
    int main(void)
    {
        int minefield[SIZE][SIZE];
        int number;
        printf("Welcome to minesweeper!\n");
        printf("How many mines? ");
        scanf("%d", &number); //scanf("%d\n", &number);
    
        Point point[SIZE];
        printf("Enter pairs:\n");
        int i = 0;
        while (number > i)
        {
            scanf("%d%d", &point[i].y, &point[i].x); //scanf("%d %d\n", &row, &column);
            i++;
        }
    
        init_field(minefield, point, number);
    
        printf("Game Started\n");
        print_minefield(minefield);
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同