C语言扫雷游戏

C语言扫雷游戏_第1张图片扫雷游戏代码首先需要清晰的逻辑,重要的还是实践。

首先创造两个二维数组,一个进行操作,另一个向玩家展示。一个数组是完不成扫雷代码的实践,可以思考一下。可以先来个9*9格式的。

 

然后进行数组的初始化,像下面这张图一样清晰地显示出每行每列,同样是两个数组要初始化。

C语言扫雷游戏_第2张图片

下来我们先将棋盘打印出来,方便我们,接下来调试,检查代码是否有问题,可以先打印出来,看需要添加什么,继续去改代码·(这一部分十分重要!!!!!!!!!!!!!!!!!!)下面我把我的截个图供大家参考一下。

C语言扫雷游戏_第3张图片

开始放置雷,到这里有人可能有疑问,放置雷不应该在打印棋盘前面,的确应该在打印棋盘前面,先打印棋盘可以方便我们发现错误,等写完这段代码可以放打印棋盘前面。

为了确保每次玩游戏是雷具有不确定性,可以用rand()制造伪随机数,再加上time函数使伪随机变成真正意义的随机数

C语言扫雷游戏_第4张图片

然后去写找雷的代码,可以适当减小游戏难度,探索摸个坐标后,该位置显示周围8个坐标雷的个数

C语言扫雷游戏_第5张图片

C语言扫雷游戏_第6张图片

最后把游戏代码给大家,不过主函数没给大家,注意辨别

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{

    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            board[i][j] = set;
        }
    }
}
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
    printf("---------------扫雷游戏----------------\n");
    for(int i=0;i<=row;i++)
    {
        printf("'%d' ", i);
    }
    printf("\n");
    printf("\n");
    for (int i = 1; i <= col; i++)
    {
        printf("'%d' ", i);
        for(int j=1;j<=col;j++)
        {
            printf(" %c  ", board[i][j]);
        }
        printf("\n");
        printf("\n");

    }
    
}
void SetMine(char board[ROWS][COLS], int row, int col)
{
    int count = EASY_Count;
    while (count)
    {
        int x = rand() % row + 1;
        int y = rand() % col + 1;
        if (board[x][y] == '0')
        {
            board[x][y] = '1';
            count--;
        }
    }

}
int GetMine(char mine[ROWS][COLS], int x, int y)
{
    char m=0;
    for (int i = x - 1; i <= x + 1; i++)
    {
        for (int j = y - 1; j <= y+1; j++)
        {
            m = m + mine[i][j];
                
        }
    }
    m = m - 9 * '0';
    return m;
}
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
    int x = 0;
    int y = 0;
    int win = 0;
    while(win     {
        
        printf("请输入所要查找的坐标:");
        scanf("%d %d", &x, &y);
        if (x > 0 && x <= row && y > 0 && y <= col)
        {
            if (mine[x][y] == '1')
            {
                printf("很遗憾,你被炸死了\n");
                DisplayBoard(mine, ROW, COL);
                break;
            }
            else
            {
                int count = GetMine(mine, x, y); system("cls");
                show[x][y] = count + '0';
                DisplayBoard(show, ROW, COL);
                win++;


            }
        }
        else printf("输入错误,请重新输入\n");
    }
    if (win == row * col - EASY_Count)
    {
        printf("恭喜你,排雷成功!");
        DisplayBoard(mine, ROW,COL);

    }

}
 

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