test.c

#include"game.h"//打印菜单
void menu()
{printf("**********************\n");printf("******  1.play  ******\n");printf("******  0.exit  ******\n");printf("**********************\n");
}//扫雷游戏
void game()
{char mine[ROWS][COLS] = { 0 };//存放布置好的雷的信息char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息//初始化棋盘InitBoard(mine,ROWS,COLS,'0');InitBoard(show, ROWS, COLS,'*');//打印棋盘DisplayBoard(show, ROW, COL);//布置雷SetMine(mine, ROW, COL);//排查雷FindMine(mine, show, ROW, COL);
}int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:");scanf_s("%d", &input);switch (input){case 1:game();//printf("扫雷游戏\n");break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);return 0;
}

game.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<time.h>//符号定义
#define ROW 9
#define COL 9
#define ROWS 11
#define COLS 11
#define EASY_COUNT 10//函数声明
//初始化棋盘
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 mine[ROWS][COLS], int row, int col);
//排查雷
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS],int row, int col);

game.c

#include"game.h"void InitBoard(char board[ROWS][COLS], int rows, int cols,char set)
{int i = 0, 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, j = 0;printf("-----扫雷游戏-----\n");//打印列号for (i = 0; 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");}printf("-----扫雷游戏-----\n");
}//布置雷
void SetMine(char mine[ROWS][COLS], int row, int col)
{//一共布置十个雷int count = EASY_COUNT;while (count){//生成随机下标int x = rand() % row + 1;int y = rand() % row + 1;if (mine[x][y] == '0'){mine[x][y] = '1';count--;}}
}//排查坐标周围的雷的个数
//static修饰函数,此函数只在该源文件内部有效
static int 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 + 1][y - 1] +mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] - 8 * '0';}//排查雷
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{//1.输出要排查的坐标//2.判断排查的坐标是否是雷//(1)是--游戏结束//(2)否--统计坐标周围有几个雷--寻出排查雷的信息到show数组,游戏继续int x = 0, y = 0;int win= 0;while (win<row*col- EASY_COUNT){printf("请输入要排查的坐标:\n");scanf_s("%d%d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= row){if (mine[x][y] == '1'){printf("很遗憾,你被炸死了\n");DisplayBoard(show, row, col);break;}else{int count=get_mine_count(mine, x, y);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语言小游戏-扫雷-源代码相关推荐

  1. C初阶必写的C语言小游戏—扫雷,一看就会,看完就能写

    目录 一.前言 二.资源环境的配置 三.游戏整体构思 1.游戏的开始与结束(菜单) 2.创建二维数组用来布置雷和排查雷的信息 3.初始化棋盘 4.打印棋盘 5.布置雷 6.排查雷 四.所有代码及效果展 ...

  2. C语言小游戏之扫雷完整版

    C语言小游戏之扫雷 一.游戏介绍 二.游戏步骤及实现的功能 1.初始化雷盘 2.打印雷盘 3.随机布置雷 4.玩家排雷 5.防止玩家第一次被炸死 6.统计所选位置周围八个位置中雷的个数 7.递归拓展已 ...

  3. C语言小项目 -- 扫雷游戏完整代码(递归展开 + 选择标记)

    大家好,今天我们将一起用C语言实现一个经典小游戏 – 扫雷,Let is go ! 文章目录

  4. Windows经典小游戏--扫雷精装版

    Windows经典小游戏–扫雷精装版 最开始玩的电脑游戏就是蜘蛛纸牌和扫雷了,那时候觉得很神奇的事情现在自己也可以做了.下面就展示一下C语言扫雷的代码. 首先创建一个"扫雷"的项目 ...

  5. c语言小游戏-飞机大战

    今天我们来尝试用easyx图形库实现c语言小游戏-飞机大战(源代码和图片已经在结尾给出) 先引用头文件 #include<stdio.h> #include<time.h>// ...

  6. python小游戏源码-导弹发射小游戏——Python源代码

    导弹发射小游戏 # 导弹发射小游戏完整源代码 # Designed by Mcoblack 公众号pythonwanyuxue import turtle import random # 设置屏幕画布 ...

  7. c语言小游戏代码矿井逃生_如何选择编程语言和逃生教程炼狱

    c语言小游戏代码矿井逃生 A few weeks ago, I posted about my experience attempting to learn JavaScript, C#, Pytho ...

  8. c语言min函数_C语言探索之旅 | 第一部分第十课:第一个C语言小游戏

    内容简介 前言 准备工作和建议 我的代码 改进方案 第一部分第十一课预告 1. 前言 上一课是 C语言探索之旅 | 第一部分第九课:循环语句 . 经过前面这么多课的努力,我们终于迎来了第一个比较正式的 ...

  9. python射击小游戏源码_导弹发射小游戏——Python源代码

    导弹发射小游戏 # 导弹发射小游戏完整源代码 # Designed by Mcoblack 公众号pythonwanyuxue import turtle import random # 设置屏幕画布 ...

  10. Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk

    Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk 程序依赖:pygame2.0.1, pymunk5.5.0 直接运行main.py 完整代码下载地址:Python版经典小游戏 ...

最新文章

  1. android屏幕分辨率详解 ldpi mdpi hdpi 程序UI自适应 《官方翻译》
  2. python 学习笔记(08)
  3. JVM调优:常见垃圾回收算法
  4. 01_sklearn--监督学习——广义线性模型,普通最小二乘法
  5. 在集设浏览学习高水准海报设计,会带给你不一样的灵感!
  6. python中如何创建一个空列表_Python创建空列表的字典2种方法详解
  7. 重庆地方税务局报税客户端升级导致的问题
  8. python 输出文件中返回码为200的接口的平均响应时间_python-处理日志文件,找出各个接口状态码为 200时的平均响应时间...
  9. 诺基亚x6升级android9体验,诺基亚X6手机怎么样?诺基亚X6全面详细评测
  10. java接口自动化框架_java接口自动化测试框架及断言详解
  11. mysql创建一张日期表_MySQL创建一张日期表
  12. linux下nginx重启命令
  13. 在计算机系统中 cpu指什么地方,在计算机中cpu指的是什么
  14. Obsidian安卓端同步及使用(Remotely Save+阿里云同步S3)
  15. python UI自动化自动关闭浏览器学习记录
  16. [x64dbg] 实战01 - 参数打印/修改参数内容(条件断点、命令、脚本)
  17. 国产加密实际运用:使用SM3加盐存储密码,并且使用SM2进行登录认证
  18. 打乱魔方软件_魔方打乱程序思路
  19. 汇编指令:使用汇编指令计算2的8次方
  20. Java自动化测试系列[v1.0.0][TestNG测试开发环境配置]

热门文章

  1. 模拟赛 10-20考试记
  2. python IDLE颜色设置
  3. MySql 1248 - Every derived table must have its own alias
  4. xtu DP Training C.炮兵阵地
  5. php 图片填充图片,php imagefilledrectangle在图片画一矩形并填充
  6. srs推flv流_SRS流媒体服务器之HLS源码分析(3)
  7. 安装电脑硬件要求_2019,8月,精雕设计多档次电脑硬件配置推荐
  8. thinkphp3.2.3 d方法调用自定义模型_啥?Android 11 不能自定义 Toast 了?
  9. QwebSocket即时通信
  10. 华为harmonyos公测,华为开启HarmonyOS2.0开发者Beta公测招募第二期