iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >基于C语言实现简易的扫雷游戏
  • 168
分享到

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

2024-04-02 19:04:59 168人浏览 安东尼
摘要

对于C语言学习者来说,在完成C语言初级学习之后,扫雷游戏是一个很好的知识的总结和练习。 扫雷即在一个棋盘中,随机放入一定数量的雷,玩家通过输入坐标,得到坐标上的信息(以此点为中心四周

对于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;
}

代码在VS2015上正常执行,整个游戏过程没出现问题。

游戏还可以有许多改进的地方,如增加计时功能,点到附件无雷的格子时展示所有相邻的无雷格子等,后续还可以丰富完善。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 基于C语言实现简易的扫雷游戏

本文链接: https://www.lsjlt.com/news/150619.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于C语言实现简易扫雷游戏
    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 1、头文件 #define _CRT_SECURE_NO_WARNINGS //包含头文件 #incl...
    99+
    2024-04-02
  • 基于C语言实现简易的扫雷游戏
    对于C语言学习者来说,在完成C语言初级学习之后,扫雷游戏是一个很好的知识的总结和练习。 扫雷即在一个棋盘中,随机放入一定数量的雷,玩家通过输入坐标,得到坐标上的信息(以此点为中心四周...
    99+
    2024-04-02
  • 基于C语言如何实现简易的扫雷游戏
    这篇文章主要讲解了“基于C语言如何实现简易的扫雷游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于C语言如何实现简易的扫雷游戏”吧!扫雷即在一个棋盘中,随机放入一定数量的雷,玩家通过输入...
    99+
    2023-06-30
  • C语言实现简易的扫雷游戏
    本文实例为大家分享了C语言实现简易的扫雷游戏的具体代码,供大家参考,具体内容如下 在正式讲内容之前先说一说扫雷游戏的规则 游戏规则很简单,点击方格,如果是地雷,游戏失败,找到所有地...
    99+
    2024-04-02
  • 基于C语言实现简单扫雷游戏
    在每一个电脑里总有一个固定的小游戏-扫雷,那今天就让我们一起来实现下扫雷。 1.主函数的构建 int main() { int input = 0; do { me...
    99+
    2024-04-02
  • 基于C语言实现简单的扫雷游戏
    目录效果展示开始的界面选择标记地雷或者选择踩坐标在输入坐标处输入0 0结束游戏踩到炸弹,出现炸弹位置胜利代码test.cgame.hgame扫雷.c效果展示 开始的界面 输入0结束...
    99+
    2024-04-02
  • C语言简易实现扫雷小游戏
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 经典扫雷游戏规则: 当玩家点击游戏区域,该处周围的八个位置有几个雷(如果是角落则是周边三个位置雷的个数,...
    99+
    2024-04-02
  • C语言实现简易版扫雷游戏
    本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下 这个小项目源自两个月前学数组的时候,由于觉得比较重要,想记录一下。 首先,大概的思路是要做出两个二维数组充...
    99+
    2024-04-02
  • C语言实现简易的扫雷小游戏
    这是一个用C语言实现的控制台扫雷小游戏,实现了随机布置炸弹、扫描炸弹、标记炸弹、百分百第一次不被炸死等功能。 编译器:vs2015 功能模块图 源代码 #include<st...
    99+
    2024-04-02
  • 基于C语言实现简单的扫雷小游戏
    本文实例为大家分享了C语言实现简单的扫雷小游戏的具体代码,供大家参考,具体内容如下 首先来规划一下扫雷游戏实现的几个步骤: 初始化棋盘:二维数组的遍历及赋值 为了后续代码的简洁方便,...
    99+
    2024-04-02
  • C语言如何实现简易扫雷游戏
    这篇文章主要介绍C语言如何实现简易扫雷游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下一、想要达到的游戏功能:大家如果想编写一个游戏,应具备以下的步骤:了解游戏的规则   知道游戏应...
    99+
    2023-06-20
  • C语言实现简易扫雷游戏详解
    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 一、想要达到的游戏功能: 大家如果想编写一个游戏,应具备以下的步骤: 1:了解游戏的规则 2:&nbs...
    99+
    2024-04-02
  • C语言如何实现简易的扫雷游戏
    这篇文章给大家分享的是有关C语言如何实现简易的扫雷游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下在正式讲内容之前先说一说扫雷游戏的规则游戏规则很简单,点击方格,如果是地雷,游戏失败,找到所有地雷游...
    99+
    2023-06-25
  • 基于C语言实现扫雷小游戏
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 game.h 设置头文件 #include<stdio.h> #include<s...
    99+
    2024-04-02
  • C语言怎么实现简易版扫雷游戏
    这篇文章将为大家详细讲解有关C语言怎么实现简易版扫雷游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易...
    99+
    2023-06-14
  • C++实现简易版扫雷游戏
    目录一、菜单栏二、创建棋盘数组三、初始化棋盘四、打印棋盘五、布置雷六、排查雷七、全部代码总结一、菜单栏 1.先用printf函数制作一个简易版的菜单,并附上选项提示,玩游戏或者退出游...
    99+
    2024-04-02
  • 如何使用C语言实现简易扫雷游戏
    这篇文章主要介绍了如何使用C语言实现简易扫雷游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、头文件#define _CRT_SECURE_NO_WARNING...
    99+
    2023-06-26
  • C语言扫雷游戏的简单实现
    今天来用c语言做一个扫雷功能的简单实现,首先创建一个test.c来用于在写代码的途中测试扫雷代码,game.h来存放实现扫雷函数需要用到的头文件,game.c来存放最终的成品。 首先...
    99+
    2024-04-02
  • 基于C语言扫雷游戏的设计与实现
    目录1 引言2 相关工作3 本文方法4 结果与分析5 总结整体代码1 引言 伴随着信息技术的快速发展,近年来,人们的生活已经离不开计算机。生活娱乐几乎都是在计算机上进行的。其中的扫雷...
    99+
    2024-04-02
  • 用C语言实现简单扫雷游戏
    前言 本文写的是用C语言实现扫雷,用递归实现周围一圈无雷时,自动继续判断下一圈是否有雷,直到四周有地雷的信息。 最终结果展示 初始游戏界面 四周无地雷继续向外展开,直到出现地雷信息...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作