game.h:函数声明
test.c:运行测试
game.c:游戏核心代码

game.h

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define easy_count 10//雷的个数
#define ROW 9//棋盘大小
#define COL 9//宏定义方便后续增大或缩小棋盘
#define ROWS ROW+2
#define COLS COL+2
//初始化棋盘
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);

test.c

#include"game.h"
void menu()
{printf("********************************\n");printf("**********   1.play  ***********\n");printf("**********   0.exit  ***********\n");printf("********************************\n");
}
void game()
{system("cls");//清屏char mine[ROWS][COLS] = { 0 };//存放布置好雷的信息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);
}
int main()
{int input;srand((unsigned int)time(NULL));do{menu();printf("请选择:>\n");scanf("%d", &input);switch (input){case 1:printf("开始游戏\n");game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择\n");break;}} while (input);
}

game.c

#include"game.h"
void initboard(char board[ROWS][COLS], int rows, int cols, char set)
{int i, j;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, j;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 board[ROWS][COLS], int row, int col)
{//布置10个雷int count = easy_count;//产生随机下标while (count){int x = rand() % row + 1;int 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)
{char num = '0';int i, j;for (i = -1; i <= 1; i++){for (j = -1; j <= 1; j++){num += mine[x + i][y + j];}}return num - 10 * '0';
}
void findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int x = 0;int y = 0;int win = 0;while(win<row*col-easy_count){printf("请输入要排查的坐标:>");scanf("%d%d", &x, &y);//判断坐标合法性if (x >= 1 && x <= row && y >= 1 && y <= col){if (mine[x][y] == '1'){printf("很遗憾,你被炸死了\n");break;}else{//不是雷的情况下,判断x,y周围有几个雷int count = get_mine_count(mine, x, y);show[x][y] = count + '0';//显示排查到的信息displayboard(show, ROW, COL);win++;}}elseprintf("坐标不合法\n");}if (mine[x][y] == '0')printf("恭喜你,你赢了\n");displayboard(mine, ROW, COL);
}

扫雷源代码(C语言)相关推荐

  1. rsa加密c语言源码库,RSA加密算法源代码C语言实现.doc-资源下载在线文库www.lddoc.cn...

    RSA加密算法_源代码__C语言实现.doc RSA 算法 1978 年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名Ro ...

  2. 串口转以太网通信源代码C语言C++编写支持多路转换双向通信支持UDP和TCP客户端

    串口转以太网通信源代码C语言C++编写支持多路转换双向通信支持UDP和TCP客户端 提供,带注释,带设计文档 使用说明介绍 1.功能介绍: 完成了多路网口和串口数据转换的功能. 可实现串口接收到的数据 ...

  3. 中国象棋c语言源代码csdn,中国象棋源代码-C语言小程序

    中国象棋源代码-C语言小程序 (11页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 .*--------------------ches ...

  4. 5阶魔方阵c语言程序设计,五阶魔方阵源代码c语言课到程设计.docx

    五阶魔方阵源代码c语言课到程设计 主函数 #include #include #include # include "wenjian.c" # include "sanj ...

  5. 5阶魔方阵c语言程序设计,五阶魔方阵源代码c语言时课程设计.docx

    五阶魔方阵源代码c语言时课程设计 主函数 #include #include #include # include "wenjian.c" # include "sanj ...

  6. C语言安卓FTP服务器,FTP服务器客户端源代码C语言

    <FTP服务器客户端源代码C语言>由会员分享,可在线阅读,更多相关<FTP服务器客户端源代码C语言(12页珍藏版)>请在人人文库网上搜索. 1.FTP 服务器源代码: #inc ...

  7. 标准c语言局域网文件传输,winsocket局域网文件传输系统源代码(C语言)+winsocket.doc...

    winsocket局域网文件传输系统源代码(C语言)winsocket 翁跺吨郑蛮杨消痴线豆电眩也行却猖革甥花顶豹扣损纽眺福圈汀森饮翁篮玉鳃将汇铆梗敬剑砷香祝景驰疆赋恢爽宛关唾上盼唁墒酗箭抒厚檬毅袭眉 ...

  8. 串口转以太网通信源代码C语言C++编写支持多路转换双向通信支持UDP和TCP客户端 提供

    串口转以太网通信源代码C语言C++编写支持多路转换双向通信支持UDP和TCP客户端 提供,带注释,带设计文档 使用说明介绍 1.功能介绍: 完成了多路网口和串口数据转换的功能. 可实现串口接收到的数据 ...

  9. c语言 读取 256级 灰度 bmp,256级灰度BMP文件读写源代码c语言图像处理.doc

    256级灰度BMP文件读写源代码c语言图像处理 本文档最早发布于 /u/1495182054 1.256级灰度BMP文件读写的源代码! 首先要明白256级灰度BMP文件的格式 1.首先是一个14个字节 ...

  10. c语言 扫雷 试题,c语言课程设计经典例题扫雷346.doc

    扫雷源代码,完美运行 /* 模拟扫雷游戏 */ #include #include #include #include #include #include #include union REGS re ...

最新文章

  1. 在Ubuntu 14.04 64bit上安装redis 3.0.3
  2. react结合redux的开发步骤
  3. 1079 Total Sales of Supply Chain(甲级)
  4. springcloud 使用git作为配置中心
  5. echarts画图实例讲解
  6. Leetcode每日一题:690.employee-importance(员工的重要性)
  7. datatable某一行第N列为空的时候删除某一行
  8. MySQL5.7 编译安装
  9. 数据库事务复制(读写分离)设计的一点经验
  10. window环境下杀死tomcat
  11. python找到最大最小值、最大最小值的位置、删除最大值最小值
  12. 使用socket模块写一个飞秋炸弹
  13. Hp-Socket高性能网络库介绍零--整体结构
  14. LU分解_SVD分解
  15. 叶酸修饰的金星形纳米颗粒,Gold star shaped nanoparticles modified with folic acid
  16. mt4双线macd_实用MACD“三板斧”,你值得拥有(建议收藏)
  17. 从头开始设计我的网游
  18. SwrContext重采样结构体--swr_alloc()、swr_init()、swr_free()
  19. ubuntu 添加中文拼音输入法【转载】
  20. PNETlab最新版介绍与下载

热门文章

  1. PID算法 旋转倒立摆与平衡车的区别。此贴会更新。
  2. Chaff Bugs: Deterring Attackers by Making Software Buggier
  3. 微信打飞机--Java版
  4. 啃老 万岁_Windows 7已死,您的杀毒软件万岁
  5. 开心网为何不再开心了
  6. matlab 暴雨强度公式,对雨水暴雨强度公式中降雨历时的分析.pdf
  7. 新消费万字之辩 | “疯狗浪”时代来临,品牌如何结构性增长?
  8. Dell Inspiron 3443 BIOS升级问题解决
  9. 问道虚拟机服务器地址,【问道1.60.0905】虚拟机手工启动服务端+配套客户端+配套工具+充值注册软件+启动教程...
  10. 破解滑块验证码(打码平台)