扫雷游戏介绍和代码

一.介绍

游戏可以通过菜单实现继续玩或者退出游戏

 扫雷的棋盘是9*9的格子

默认随机布置10个雷

可以排查雷

如果位置不是雷,就显⽰周围有⼏个雷

如果位置是雷,就炸死游戏结束

把除10个雷之外的所有⾮雷都找出来,排雷成功,游戏结束

二.界面

1.初始界面

扫雷游戏介绍和代码_第1张图片

2 .游戏界面

扫雷游戏介绍和代码_第2张图片

3.退出界面和选择错误

扫雷游戏介绍和代码_第3张图片扫雷游戏介绍和代码_第4张图片

三.代码

扫雷游戏介绍和代码_第5张图片

扫雷游戏介绍和代码_第6张图片

text2.c:

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void mean()
{
    printf("*******欢迎来到扫雷游戏*******\n");
    printf("*******   1.p l a y    *******\n");
    printf("*******   0.e x i s t  *******\n");
    printf("******************************\n");
    printf("******************************\n");
}
void is_play(int input)
{
    switch (input)
    {
    case 1:
    {
        system("cls");
        game();
        break;
    }
    case 0:
    {
        system("cls");
        printf("已退出游戏\n");
        break;
    }
    default :
    {
        system("cls");
        printf("输入错误,请重新选择\n");
        break;
    }
    }
}
void display_board(char board[ROWS][COLS], int r, int c)
{
    int i = 0;
    int j = 0;
    for (i = 0;i <= r;i++)
    {
        printf("%d ", i);
    }
    printf("\n");
    for (i = 1;i <= r;i++)
    {
        printf("%d ", i);
        for (j = 1;j <= c;j++)
        {
            printf("%c ", board[i][j]);
        }
        printf("\n");
    }
}
void init_board(char arr[ROWS][COLS], int r, int c,char n)
{
    int i = 0;
    int j = 0;
    for (i = 1;i <= r;i++)
    {
        for (j = 1;j <= c;j++)
        {
            arr[i][j] = n;
        }
    }
}
void set_mine(char mine[ROWS][COLS], int r, int c)
{
    int i = 0;
    int j = 0;
    int count = 0;
    int num = SETMINE;
    while (count <= num)
    {
        i = rand() % r + 1;
        j = rand() % c + 1;
        if (mine[i][j] != '1')
        {
            mine[i][j] = '1';
            count++;
        }
    }
}
int Get_mine(char mine[ROWS][COLS], int x, int y)
{
    int i = 0;
    int j = 0;
    int num = 0;
    for (i = -1;i <=1; i++)
    {
        for (j = -1;j <= 1;j++)
        {
            if (mine[x + i][y + j] == '1')
                num++;
        }
    }
    return num;
}
void Find_mine(char show[ROWS][COLS], char mine[ROWS][COLS], int r, int c)
{
    int x = 0;
    int y = 0;
    int count = 0;
    int sum = r * c - SETMINE;
    while (count < sum)
    {
        printf("请输入坐标---->");
        scanf("%d%d", &x, &y);
        if (x >= 1 && x <= r && y >= 1 && y <= c)
        {
            if (mine[x][y] == '1')
            {
                printf("很遗憾,你被炸死了\n");
                display_board(mine, ROW, COL);
                break;
            }
            else
            {
                if (show[x][y] == '*')
                {
                    int d = Get_mine(mine, x, y);
                    show[x][y] = d + '0';
                    system("cls");
                    display_board(show, ROW, COL);
                    count++;
                }
                else
                    printf("重复输入,请重新输入\n");
            }

        }
        else
            printf("超出范围,请重新输入\n");
    }
    if (sum == count)
    {
        printf("恭喜你扫雷成功\n");
        display_board(mine, ROW, COL);
     }
}
void game()
{
    char mine[ROWS][COLS] = { 0 };
    char show[ROWS][COLS] = { 0 };
    init_board(show, ROW, COL, '*');//初始化棋盘
    init_board(mine, ROW, COL, '0');
    display_board(show, ROW, COL);//打印界面
    //display_board(mine, ROW, COL);
    set_mine(mine, ROW, COL);
    //display_board(mine, ROW, COL);
    Find_mine(show, mine, ROW, COL);
}

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