跟进项目代码与总结:c语言扫雷

1.初始方阵:笔者采用‘+’作为方阵的基础内容,此做法也导致了接下来关于此数组的任何操作都需要在字符型的背景下进行。

2.为了保证程序的健壮性,笔者加入了纠错系统使得玩家的错误输入值得以纠正。

3.在安排雷阵,笔者挑选了十个元素作为雷点,并以不同的值命名雷点和普通点,完全随机吗?并不是,笔者偷偷将外面两圈的雷点转移至内圈,主要目的是避免复杂的分类讨论。◕‿◕

4.为了避免强制类型转换带来的不确定性,笔者将周围雷数的返回值制作成判断语句给其他变量赋值。

5.当你踩雷后笔者选择不显示雷的位置,因为就只能玩一次了。

6.你可以添加的部分:

        1.以时钟值代表种子以生成随机数组来实现真正的随机雷,传送门:利用时钟值来实现数组的真正随机 · 王赫辰/c语言 - 码云 - 开源中国 (gitee.com)

        2.写出当元素位于外面两圈时n的判断条件。

        3.在结束后打印出雷的位置,建议建立第三个数组,以数组二的值作为判断条件给新定义的变量赋值并打印。

7.代码:

#include
int main()
{
    int a = 0;
    int d = 0;
    int e = 0;
    for (a; a < 5; a++)
    {
        printf("扫雷\n开始请按1\n结束请按0\n");
        int b = 0;
        scanf_s("%d", &b);
        if (b == 1)
        {
            char arr[8][8] = { '+','+','+','+','+','+','+','+',

            '+','+','+','+','+','+','+','+',

            '+','+','+','+','+','+','+','+',

            '+','+','+','+','+','+','+','+',

                '+','+','+','+','+','+','+','+',

                '+','+','+','+','+','+','+','+',

                '+','+','+','+','+','+','+','+',

                '+','+','+','+','+','+','+','+' };

            for (d = 0; d < 8; d++)
            {
                printf("%d", d);
                for (e = 0; e < 8; e++)
                {
                    printf("%c ", arr[d][e]);
                }
                printf("\n");
            }
            printf(" 0 1 2 3 4 5 6 7\n ");
            int d = 0, e = 0;
            int arr1[8][8] = { 0 };
            arr1[2][2] = 1;
            arr1[5][5] = 1;
            arr1[4][2] = 1;
            arr1[5][4] = 1;
            arr1[4][2] = 1;
            arr1[3][5] = 1;
            arr[3][6] = 1;
            arr[2][8] = 1;
            int f = 0;
            int g = 0;
            int h = 0;
            for (h; h < 100; h++)
            {
                printf("请按数字提示输入坐标\n");
                scanf_s("%d %d", &f, &g);
                if (arr1[f][g] == 0)
                {
                    if (f == 0 || g == 0 || f == 7 || g == 7)
                    {
                        arr[f][g] = '0';

                        for (d = 0; d < 8; d++)
                        {
                            printf("%d", d);
                            for (e = 0; e < 8; e++)
                            {
                                printf("%c ", arr[d][e]);
                            }
                            printf("\n");
                        }
                        printf(" 0 1 2 3 4 5 6 7\n ");
                        int d = 0, e = 0;
                    }
                    else
                    {
                        int n = 0;
                        if (arr1[f - 1][g] == 1)
                        {
                            n = n + 1;
                        }
                        if (arr1[f - 1][g - 1] == 1)
                        {
                            n = n + 1;
                        }
                        if (arr1[f - 1][g + 1] == 1)
                        {
                            n = n + 1;
                        }
                        if (arr1[f + 1][g] == 1)
                        {
                            n = n + 1;
                        }
                        if (arr1[f + 1][g - 1] == 1)
                        {
                            n = n + 1;
                        }
                        if (arr1[f + 1][g + 1] == 1)
                        {
                            n = n + 1;
                        }
                        if (arr1[f][g - 1] == 1)
                        {
                            n = n + 1;
                        }
                        if (arr1[f][g + 1] == 1)
                        {
                            n = n + 1;
                        }

                        if (n == 0)
                        {
                            arr[f][g] = '0';
                        }
                        if (n == 1)
                        {
                            arr[f][g] = '1';
                        }
                        if (n == 2)
                        {
                            arr[f][g] = '2';
                        }
                        for (d = 0; d < 8; d++)
                        {
                            printf("%d", d);
                            for (e = 0; e < 8; e++)
                            {
                             
                               {
                                    printf("%c ", arr[d][e]);
                                }
                            }
                            printf("\n");
                        }
                        printf(" 0 1 2 3 4 5 6 7\n ");
                        int d = 0, e = 0;
                    }
                }
                if (arr1[f][g] == 1)
                {
                    printf("你输了");
                    break;
                }
            }
        }

        else if (b == 0)
        {
            break;
        }
        else
        {
            printf("请重新输入\n");
            int c = 0;
            scanf_s("%d", &c);
            b = c;
        }

    }
    return 0;
}

你可能感兴趣的:(c语言,开发语言,游戏程序)