文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于C语言如何实现简易的扫雷游戏

2023-06-30 20:40

关注

这篇文章主要讲解了“基于C语言如何实现简易的扫雷游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于C语言如何实现简易的扫雷游戏”吧!

扫雷即在一个棋盘中,随机放入一定数量的雷,玩家通过输入坐标,得到坐标上的信息(以此点为中心四周8个格子内地雷数量的总和),来判断此格子是否有地雷,从而依照此法排查出整个棋盘上所有的地雷。

本项目采用9*9的棋盘,放入地雷的数量可以依照个人设置。

首先声明总的头文件

#ifndef _UTILI_H_#define _UTILI_H_ #include<stdio.h>#include<time.h>   //后面需要地雷的随机放置,需要时间函数 #endif 

接下来我们需要对整个项目所有需要用的函数进行声明,放置在一个头文件中:

#ifndef _GAME_H_  //条件编译#define _GAME_H_ #include"utili.h" #define QUIT 0    //0退出 1 进入游戏#define GAME 1 #define ROW 9    //定义9*9的扫雷界面#define COL 9#define ROWS ROW+2  //左右两边加1行1列,为了统计周围雷个数#define COLS COL+2 #define GAME_LEVEL 20 void InitBoard(char board[ROWS][COLS], char set);    //设置界面void DisplayBoard(char board[ROWS][COLS], int row, int col);   //展示界面 void SetMine(char mine[ROWS][COLS], int row, int col);   //设置雷void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);  //找雷 void StartGame(); #endif 

整个游戏各个部分功能进行编写代码,分别实现不同的功能:

#include"Game.h" void InitBoard(char board[ROWS][COLS], char set)   //初始化棋盘,在后台执行扫雷任务时{    for(int i=0; i<ROWS; ++i)                  //实际上是在11 * 11 的棋盘 上进行的              {        for(int j=0; j<COLS; ++j)        {            board[i][j] = set;        }    }} void DisplayBoard(char board[ROWS][COLS], int row, int col)  {    for(int i=0; i<=row; ++i)    //在界面显示时,我们的棋盘实际展示的时9 * 9的界面    {        printf("%d ", i);    }    printf("\n");      for(int i=1; i<=row; ++i)    {        printf("%d ", i);        for(int j=1; j<=col; ++j)        {            printf("%c ", board[i][j]);        }        printf("\n");    }} void SetMine(char mine[ROWS][COLS], int row, int col){    int count = GAME_LEVEL;    srand(time(0));             //通过随机数获得棋盘上随机的地雷放置    while(count)    {        int x = rand() % row + 1; //1 ~ ROW     //取余,保证放置在棋盘内        int y = rand() % col + 1; //1 ~ COL        if(mine[x][y] == '0')        {            mine[x][y] = '1';             //有地雷的格子内0被赋值为1,但注意这个1为字符            count--;        }    }} int GetMineCount(char mine[ROWS][COLS], int x, int y)   //获得以格子为中心周围8个格子地雷数{    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){    int win = 0;    int x, y;    while(win < row*col-GAME_LEVEL)   //判断赢的条件    {        printf("请输入要排雷的位置:>");        scanf("%d %d", &x, &y);         if(x<1||x>row || y<1 || y>col)        {            printf("输入的排雷位置非法,请重新输入.....\n");            continue;        }         if(mine[x][y] == '1')        {            printf("很遗憾,你被Over.\n");            DisplayBoard(mine, ROW, COL);            break;        }         //统计雷的个数        int count = GetMineCount(mine, x, y);        show[x][y] = count + '0';         system("cls");        DisplayBoard(show, ROW, COL);         win++;    }     if(win >=  row*col-GAME_LEVEL)    {        printf("恭喜你,排雷成功.\n");    }} void StartGame(){    //定义棋盘    char mine[ROWS][COLS];    char show[ROWS][COLS];     //初始化棋盘    InitBoard(mine, '0');    InitBoard(show, '*');     //埋雷    SetMine(mine, ROW, COL);     //显示棋盘    DisplayBoard(show, ROW, COL);     //扫雷    FindMine(mine, show, ROW, COL);}

编写主函数:

#include"Game.h" int main(int argc, char *argv[]){    int select = 1;    while(select)    {        printf("*************************************\n");        printf("*          简 易 扫 雷 游 戏        *\n");        printf("*************************************\n");        printf("*             [1] Play              *\n");        printf("*             [0] Quit              *\n");        printf("*************************************\n");        printf("请选择:>");        scanf("%d", &select);         if(select == QUIT)            break;         if(select != GAME)        {            printf("输入的操作有误,请重新输入......\n");            continue;        }         //开始游戏        StartGame();    }    printf("游戏结束,拜拜.\n");    return 0;}

感谢各位的阅读,以上就是“基于C语言如何实现简易的扫雷游戏”的内容了,经过本文的学习后,相信大家对基于C语言如何实现简易的扫雷游戏这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯