伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

扫雷(C语言)

来源:本站原创 浏览:66次 时间:2023-04-04

一,游戏规则
1.输入9*9的格的坐标(*显示其坐标未被选择过)(共有10颗雷)

2.如果是雷,游戏结束
3.如果不是,将显示所点击的位置相邻八个位置有几颗雷

4.若除了雷位未选后,玩家胜利
例:(有80颗雷)

------------------------------------------------------------------1.play       0.exit----------------------------------------------------------------------请输入(0/1):3输入错误,请重新输入------------------------------------------------------------------1.play       0.exit----------------------------------------------------------------------请输入(0/1):1扫雷游戏开始0 1 2 3 4 5 6 7 8 91 * * * * * * * * *2 * * * * * * * * *3 * * * * * * * * *4 * * * * * * * * *5 * * * * * * * * *6 * * * * * * * * *7 * * * * * * * * *8 * * * * * * * * *9 * * * * * * * * *//有雷的为10 1 2 3 4 5 6 7 8 91 1 1 1 1 1 1 1 1 12 1 1 1 1 1 1 1 1 13 1 1 1 1 1 1 1 1 14 1 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 1 16 1 1 1 1 1 1 1 1 17 1 1 1 1 1 1 1 1 18 1 1 1 1 1 1 1 1 19 1 1 1 1 1 1 1 1 0请输入坐标(行 列):9 90 1 2 3 4 5 6 7 8 91 1 1 1 1 1 1 1 1 12 1 1 1 1 1 1 1 1 13 1 1 1 1 1 1 1 1 14 1 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 1 16 1 1 1 1 1 1 1 1 17 1 1 1 1 1 1 1 1 18 1 1 1 1 1 1 1 1 19 1 1 1 1 1 1 1 1 0恭喜你游戏成功------------------------------------------------------------------1.play       0.exit----------------------------------------------------------------------请输入(0/1):1扫雷游戏开始0 1 2 3 4 5 6 7 8 91 * * * * * * * * *2 * * * * * * * * *3 * * * * * * * * *4 * * * * * * * * *5 * * * * * * * * *6 * * * * * * * * *7 * * * * * * * * *8 * * * * * * * * *9 * * * * * * * * *0 1 2 3 4 5 6 7 8 91 1 1 1 1 1 1 1 1 12 1 1 1 1 1 1 1 1 13 1 1 1 1 1 1 0 1 14 1 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 1 16 1 1 1 1 1 1 1 1 17 1 1 1 1 1 1 1 1 18 1 1 1 1 1 1 1 1 19 1 1 1 1 1 1 1 1 1请输入坐标(行 列):8 7很遗憾,你被炸死了,游戏结束0 1 2 3 4 5 6 7 8 91 1 1 1 1 1 1 1 1 12 1 1 1 1 1 1 1 1 13 1 1 1 1 1 1 0 1 14 1 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 1 16 1 1 1 1 1 1 1 1 17 1 1 1 1 1 1 1 1 18 1 1 1 1 1 1 1 1 19 1 1 1 1 1 1 1 1 1------------------------------------------------------------------1.play       0.exit----------------------------------------------------------------------请输入(0/1):0退出游戏

二,游戏代码分析
1.设置游戏菜单,让玩家选择
输入1,游戏开始
输入0,游戏结束
输入其他值,提示输入错误,重新输入

void mnue(){    printf("-------------------------------\n");    printf("-------------------------------\n");    printf("----1.play       0.exit--------\n");    printf("-------------------------------\n");    printf("-------------------------------\n");}void test(){    int input = 0;    srand((unsigned int)time(NULL));    do    {        mnue();        printf("请输入(0/1):");        scanf("%d", &input);        switch (input)        {        case 1:            printf("游戏开始\n");            game();            break;        case 0:            printf("退出游戏\n");            break;        default:            printf("输入错误,请重新输入\n");            break;        }    } while (input);}int main(){    test();    return 0;}

游戏效果:

2.由于输入坐标后,如果没踩雷,要显示周围八个位置共有几颗雷,为了防止数组的溢出选用11*11的棋盘

将字符‘0’放入不是雷的位置中
将字符‘1’放入是雷的位置中
所以将创造两个数组
1.一个数组将存储雷的信息
2.另一个数组排查出的雷的信息

一个数组初始化为‘0’

一个数组初始化为‘*’

函数的初始化
注意:设置一个变量用来接收初始化的结果,可以使不同的二维数组初始化为不同的值

void InitBoard(char board[ROWS][COLS], int row, int col, char set){    int i = 0;    for (i = 0; i < row; i++)    {        int j = 0;        for (j = 0; j < col; j++)        {            board[i][j] = set;        }    }}


3.函数的打印函数
注意打印的是9*9的棋盘
为了便于阅读,将坐标也打印了出来

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

4.随机布置10个雷
将有10个雷要布置

将雷设为字符‘1’

一个数%9那么这个数在0到8之间
若再加一那么这个数将在1-9之间

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


5.扫雷

字符3与字符0差数字3
计算周围8个(炸弹)数组元素为1的方法:
将8个字符元素相加-8个字符0得到的就是字符1的个数
因为返回值是int,所以需要加上字符0,转化为char

//'3'-'0'=3//'4'-'0'=4int get_mine_count(char mine[ROWS][COLS], int x, int y){    return mine[x - 1][y - 1] +        mine[x - 1][y] +        mine[x - 1][y + 1] +        mine[x][y - 1] +        mine[x][y + 1] +        mine[x + 1][y - 1] +        mine[x - 1][y] +        mine[x - 1][y + 1] - 8 * '0';}void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col){    printf("请输入坐标(行 列):");    int x = 0;    int y = 0;    scanf("%d%d", &x, &y);    int win = 0;//从0开始计数    while (win<col * row - EASY_COUNT)//下的次数小于9*9-10=71次时都未踩到炸弹    {        //坐标合法        if (x > 1 && x <= row && y > 1 && y <= col)        {            if (mine[x][y] == '1')//踩雷            {                printf("很遗憾,你被炸死了,游戏结束\n");                DisplayBoard(mine, ROW, COL);                break;            }            else//计算周围八个位置的雷数            {                int count = get_mine_count(mine, x, y);                show[x][y] = count+'0';//存的是字符,返回值是int                DisplayBoard(mine, ROW, COL);                win++;            }        }        //坐标非法        else            printf("输入错误坐标,请重新输入:\n");    }    //两个情况    //1.break;    //2. win == col * row - EASY_COUNT    if (win == col * row - EASY_COUNT)        printf("恭喜你游戏成功\n");}

三,用文件实现

test.c源文件中的内容
调用函数时记得要引头文件(函数的声明一般放在相应的头文件中)

菜单函数

游戏的流程控制

游戏的流程

game.h头文件的内容
1.行,列
2.雷的个数
3.所用到的头文件
4.函数的声明

game.c源文件中的内容
调用函数时记得要引头文件(函数的声明一般放在相应的头文件中)

函数的初始化

棋盘的打印

雷设置的位置

周围8个位置中雷数的总和

扫雷流程

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net