欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 【C语言】扫雷游戏(一)

【C语言】扫雷游戏(一)

2024/12/2 18:45:21 来源:https://blog.csdn.net/Hugh_215/article/details/136673682  浏览:    关键词:【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。

1,可以用数组存放,如果有雷就用1表示,没雷就用0表示。

 

d9940bf2d0ffbfc98fd09dc29b13ddbf.png

2,排查(2,5)这个坐标时,我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时,就会越界。只需要扩大一圈数组即可。

3b818fd4ccc36c6afa6b7c11435be1b7.png

一,游戏菜单的打印

利用函数与do while的知识

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void menu()
{
    printf("***********************\n");
    printf("***** 1. play *********\n");
    printf("***** 0. exit **********\n");
    printf("***********************\n");
}
int main()
{
    int input = 0;
    do
    {
        menu();
        printf("请选择:>");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            printf("开始\n");
            break;
        case 0:
            printf("退出游戏\n");
            break;
        default:
            printf("选择错误,重新选择\n");
            break;
        }
    } while (input);
    return 0;
}

在下一步可以将printf("开始\n");换为game(),整个扫雷游戏就是在这里运行的。game()就是我们写的函数,它的作用是把我们写的代码封装起来。

二,正片开始

1,棋盘

避免数据太多产生冲突,我们可以写两个数组存放信息。一个是雷的信息,一个是排查出的雷的信息。
1183d93cc2fe6de0e3d063ac0cd3c7af.png

a.雷的信息用char mine[11][11];来表示,1表示雷,0表示非雷。

b.排查出的雷的信息用char show[11][11];来表示,初始化为*。

void game()
{
    char mine[11][11];
    char show[11][11];
}

如果是其他行数的话,例如15或者20,改起来就比较麻烦了,这时候就需要优化一下代码。

在game.h文件中声明:

#define ROW 9
#define COL 9

#define ROWS ROW+2
#define COLS COL+2

然后修改原来代码:

void game()
{
    char mine[ROWS][COLS];
    char show[ROWS]COLS];
}

2,初始化棋盘

game.h

void InitBoard(char arr[ROWS][COLS], int rows,int cols,\char set);

game.c

void InitBoard(char arr[ROWS][COLS], int rows, int cols,char set)
{
    int i = 0;
        for (i = 0; i <= ROWS; i++)
        {
            int j = 0;
            for (j = 0; j <= COLS; j++)
            {
                arr[i][j] = "set";
            }
        }
}

test.c

void game()
{
    char mine[ROWS][COLS];
    char show[ROWS][COLS];

    Initboard(mine, ROWS,COLS, "0");
    Initboard(show, ROWS,COLS, "*");
}

3,打印棋盘

game.h

void Displayboard(char arr[ROWS][COLS], int row, int col);

game.c

int i = 0;
for (i = 0; i <= ROW; i++)
{
    printf("%d", i);
}
printf("\n");

void Displayboard(char arr[ROWS][COLS], int row, int col)
{
    int i = 0;
    for (i = 1; i <= row; i++)
    {
        int j = 0;
        printf("%d", i);
        for (j = 1; j <= col; j++)
        {
            printf("%c", arr[i][j]);
        }
        printf("\n");
    }

test.c

Displayboard(show, ROW, COL);

Displayboard(mine, ROW, COL);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com