相信小伙伴在学习c语言的时候想做一些小趣事,下面就是用c语言来实现一个扫雷小游戏,不过是简单的实现扫雷(只是通过数组的方式来实现),适合新手学习。

我用的是vs敲的这个代码,大家可以用vs运行(可能有些小地方不支持其他编译器,不过自己可以修改)。

1.创建一个sao.c的文件,用来放main()函数,也是程序的入口,sao.c文件中的代码如下:

#include<stdio.h>
#include"sao.h"
#include<stdlib.h>
#include<time.h>

void menu()
{
    printf("********************************\n");
    printf("******1.玩游戏  0.退出游戏******\n");
    printf("********************************\n");
}

void game()
{
    //1.布置好雷区
    char mine[ROWS][COLS] = { 0 };

//2.排查雷的信息
    char show[ROWS][COLS] = { 0 };

//初始化
    initboard(mine, ROWS, COLS, '0');
    initboard(show, ROWS, COLS, '*');

//打印出棋盘
    //displayboard(mine, ROW, COL);
    displayboard(show, ROW, COL);

//布置雷区
    setmine(mine, ROW, COL);
    //displayboard(mine,ROW,COL);

//扫雷
    findmine(mine, show, ROW, COL);
}
void test()
{
    printf("扫雷游戏\n");
    srand((unsigned int)time(NULL));
    int input = 0;
    do{
        menu();
        printf("请选择:");
        scanf_s("%d", &input);
        switch (input) {
        case 1:
            game();
            break;
        case 0:
            break;
        default:
            printf("输入错误!\n");
            break;
        }
    } while(input);
}

int main()
{
    test();
    return 0;
}

2.第二个文件名为:sao2.c ,这个文件中主要是放一些函数的实现,sao.2c中的代码为:

#include"sao.h"

void initboard(char board[ROWS][COLS], int rows, int cols,char set)
{
    int i=0;
    int j=0;
    for (i = 0; i < rows; i++)
    {
        for (j = 0; j < cols; j++)
        {
            board[i][j] = set;
        }
    }
}

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

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

int get_mine_count(char mine[ROWS][COLS], int x, int y)
{
    return
        mine[x - 1][y] +
        mine[x + 1][y] +
        mine[x][y + 1] +
        mine[x][y - 1] +
        mine[x - 1][y - 1] +
        mine[x - 1][y + 1] +
        mine[x + 1][y - 1] +
        mine[x + 1][y + 1] - 8 * '0';
}

void  findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
    int x = 0;
    int y = 0;
    while (1)
    {
        printf("请输入你排查的坐标:");
        scanf_s("%d%d", &x, &y);
        if (x >= 1 && x <= 9 && y >= 1 && y <= 9)
        {
            //坐标合法
            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';
                displayboard(show, row, col);
            }
        }
        else {
            printf("输入错误!\n");
        }
    }
}

3.第三个文件为:sao.h的头文件,里面主要是放一些函数的申明和宏,具体代码如下:

#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#include<stdio.h>
#define EASY_MINE 10
#include<time.h>

//声明
void initboard(char board[ROWS][COLS], int rows, int cols,char set);
//声明
void displayboard(char board[ROWS][COLS], int row, int col);
//布置雷区函数的声明
void setmine(char board[ROWS][COLS], int row, int col);
//扫雷声明
void  findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);

4.上面代码对大神来说不值一提,对学习c阶段的小伙伴来说可以看看,没有什么难度。

用c语言实现扫雷小游戏。相关推荐

  1. c语言字符游动程序,C语言实现扫雷小游戏详解

    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 一.实现功能 首先显示一个小菜单,选择是否玩游戏.当用户选择退出时,程序运行结束,当用户选择玩游戏时,将提示用户输入扫雷位 ...

  2. 只用c语言不用图片的游戏,使用C语言实现扫雷小游戏

    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 游戏规则 在一个9*9的地图上一共有十个雷,翻开所有不是雷的位置 游戏即为胜利, 如果踩到雷,游戏结束 设计思路 1.创建 ...

  3. 【C语言】扫雷小游戏详解

    [C语言]扫雷小游戏详解 前言: 还记得大明湖畔的夏雨荷,电脑课上的扫雷吗? ---------------------------是 他 吗--------------------------- 没 ...

  4. C语言实现扫雷小游戏 纯小白 非黑窗口

    C语言实现一个普通的扫雷小游戏 纯小白所编(含代码非黑窗口!) 扫雷 主要功能 1.创建一个图形界面 2.了解扫雷游戏的原理 3.随机生成雷的位置 4.为整个数组加密,并在雷周围的位置加一 5.导入图 ...

  5. C语言实现扫雷小游戏(排雷时可展开)

    游戏介绍 扫雷想必大家都听说过吧?我们今天写的小游戏就是扫雷,只不过我们只使用C语言写.我们能够做到的就是实现扫雷的基本逻辑,没有图形化界面. 源代码 这次游戏程序的写法和上一次的三子棋的模式很像,也 ...

  6. 用C语言实现扫雷小游戏(附上思路+项目展示+源代码)

    文章目录 前言 一.扫雷小游戏整体思路讲解. 二.game.c各游戏功能函数的讲解 1.InitBoard 初始化数组函数讲解 2.DisplayBoard 打印格子函数讲解 3.Setmine 电脑 ...

  7. C语言编写扫雷小游戏

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992377 扫 ...

  8. C语言实现扫雷小游戏(下)(用递归实现了展开)

      穷且益坚,不坠青云之志.   上篇博客实现了鸡肋的扫雷小游戏,不能实现雷盘(场)的展开,体验不是很好,这篇博客对其进行优化了,实现了展开功能. 文章目录 一.新的头文件 二.游戏框架 三.功能函数 ...

  9. C语言实现扫雷小游戏(具体步骤+具体说明)

    C语言实现扫雷目录 一.游戏介绍 三.具体步骤 1.菜单页面 2.初始化雷盘 3.打印雷盘 4.布置雷 5.排查雷 7.统计所选位置周围八个位置中雷的个数 四.完整代码 1.test.c-扫雷游戏的测 ...

最新文章

  1. ×××第三话:基础Ez×××配置
  2. 存储系统管理服务器,Mainframe的存储管理系统和架构
  3. PlantUML权威教程-时序图
  4. maven book
  5. lucene升级至5.x版本出现 :IllegalStateException: IllegalStateException: unexpected docvalues type NONE...
  6. 玩转 Python 3.5 的 await/async
  7. [教程]黑莓终极中文混刷教程 终身受用
  8. kindle看pdf乱码_Kindle 中文书名 目录 乱码 解决办法
  9. 23王道——建立中序线索树,找前驱后继,并用其遍历
  10. OpenWrt使能mt7620a第二个uart
  11. win10无法启动_win10电脑开机进入不了系统如何解决?
  12. 求和计算机教案,初中信息技术《Excel求和》教案
  13. 什么是数据流图 Data Flow Diagram (DFD)
  14. 全能电子地图实时路况_全能SUV与城市SUV的区别在哪?日产奇骏对比本田皓影
  15. js base64编码格式图片另存为下载
  16. 详解向图像加入高斯白噪声
  17. 艾伟:一个让人遗忘的角落--Exception(一)
  18. GPS时间系统的转换
  19. 基于python的网络爬虫编程_基于Python的网络爬虫程序设计
  20. 排列组合思维导图_思维模型10 - Permutations and Combinations | 排列组合

热门文章

  1. 深度学习应用在图像分割上的网络模型概述
  2. 我们说的那些培训班,到底要不要报?自学编程VS培训报班
  3. selenium框架爬取p2p问题平台信息,需加载点击页面的。
  4. 主机如何连接到URSim中的客户端接口
  5. #今日论文推荐# IJCAI 2022 | 求同存异:多行为推荐的自监督图神经网络
  6. 产品经理基本功,如何画一个满分原型?
  7. nekohtml解析html(string或是文件流)
  8. 有没有能够在待办事项完成后标记任务已完成的每日计划APP?
  9. Ubuntu 12.04硬盘安装与U盘安装(图文)
  10. utf8mb4_unicode_ci、utf8mb4_general_ci的区别总结