当前位置: 首页 > ai >正文

C语言————实战项目“扫雷游戏”(完整代码)

        无论是找工作面试,还是课设大作业、考研,都离不开实战项目的积累,如果你能把一个项目搞明白,并且给别人熟练的讲出来,即使你没有过项目经历,也可以说是非常加分的,下面来沉浸式体验一下这款扫雷游戏吧!!下载可玩!!

neverfadeaway2/saolei: 扫雷游戏体验https://github.com/neverfadeaway2/saolei

这是小博自己写的扫雷游戏,下面由我来为大家讲解一下主要的代码和原理。

该扫雷游戏主要是由数组和函数的知识编写的,雷区为9*9的正方形棋盘,主要有初始化棋盘,打印棋盘,布置雷,排查雷等步骤。具体详情可看下列代码:

test.c

#include "game.h"void meun()
{printf("********************\n");printf("********play********\n");printf("******>>0***>>1*****\n");printf("********************\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(mine, ROW, COL);//DisplayBoard(show, ROW, COL);//布置雷SetMine(mine, ROW, COL);//排查雷FindMine(mine, show, ROW, COL);}int main()
{int input = 0;srand((unsigned int)time(NULL));//生成随机坐标,用于布置雷,保证每次雷的位置都不同do{meun();printf("请输入>");scanf("%d", &input);switch (input){case 0:printf("游戏结束\n");break;case 1:game();break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

game.c

#include "game.h"void InitBoard(char Board[ROWS][COLS], int rows, int cols, char set)
{int i = 0;for (i = 0; i < rows; i++){int j = 0;for (j = 0; j < cols; j++){Board[i][j] = set;}}
}void DisplayBoard(char Board[ROWS][COLS], int row, int col)
{int i = 0;for (i = 0; i <= row; i++){printf("%d ", i);}.......
}void SetMine(char Board[ROWS][COLS], int row, int col)
{int count = COUNT;while (count){int x = rand() % row + 1;int y = rand() % col + 1;.......}
}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 - COUNT){printf("请输入要排查的坐标:>");scanf("%d %d", &x, &y);if (x > 0 && y > 0 && x <= row && y <= col){.......}}elseprintf("输入坐标非法,请重新输入\n");}if (win == row * col - COUNT){printf("恭喜你,闯关成功\n");DisplayBoard(mine, ROW, COL);}}int GetMine(char mine[ROWS][COLS], int x, int y)
{int i = 0;int j = 0;char sum='0';for (i = x - 1; i <= x + 1; i++){for (j = y - 1; j <= y + 1; j++){sum += mine[i][j];}}return sum - 9 * '0';
}

game.h

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2#define 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 Board[ROWS][COLS], int row, int col);
//排查雷
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS],int row,int col);
//排查周围雷个数
int GetMine(char mine[ROWS][COLS], int x, int y); 

想要完整源代码文件可到小博的Gitee仓库下,自行查看下载。登录 - Gitee.comhttps://gitee.com/never-fade-away/test.c1/commit/e664a4818825894db76ca91816d867eaca8c6749

小博这里就说这么多了,大家有不懂的地方可以随时问我!!

这里小博送给大家自己喜欢的一句话:“放弃去寻找标准答案,你的选择就是答案!”加油!!

http://www.xdnf.cn/news/19631.html

相关文章:

  • 【Spring Cloud微服务】9.一站式掌握 Seata:架构设计与 AT、TCC、Saga、XA 模式选型指南
  • MD5加密算法详解与实现
  • 【LeetCode_26】删除有序数组中的重复项
  • 手撕Redis底层2-网络模型深度剖析
  • 云电脑是什么?与普通电脑的区别在哪里?——天翼云电脑体验推荐
  • 全国产FT-M6678核心板
  • SQL JOIN 操作全面解析
  • 哈希表-面试题01.02.判定是否互为字符重排-力扣(LeetCode)
  • 【LeetCode数据结构】栈和队列的应用
  • 在windows平台oracle 23ai 数据库上使用bbed
  • 面阵 vs 线阵相机:怎么选不踩坑?选型公式直接套用
  • SQLShift 实现Oracle 到 OceanBase 的存储过程转换初体验
  • 【Vue2 ✨】 Vue2 入门之旅(六):指令与过滤器
  • 阿里云和华为云Rocky LINUX 9.X镜像就绪及低端可用英伟达GPU
  • Google NotebookLM最强替代品评测:AI笔记、语音生成与高效知识管理工具盘点
  • 【Linux基础知识系列:第一百一十八篇】使用perf进行性能分析
  • Day33 网络编程:OSI/TCP/IP模型、协议族与UDP编程
  • 【新启航】3D 逆向抄数的三维能力架构:数据采集工具操作 × 几何处理算法应用 × 行业场景适配技能
  • 微硕WINSOK大功率MOS管 WSF3085在汽车关键系统中的创新应用
  • 【世纪龙科技】汽车专业数字化课程资源包-虚拟仿真实训资源建设
  • 2025大学生必考互联网行业证书排名​
  • Nginx 全攻略:从部署到精通的实战指南(CentOS 环境)
  • 腾讯混元世界模型Voyager开源:单图生成3D世界的“核弹级”突破,游戏、VR、自动驾驶迎来新变量
  • Nature | 克隆拷贝数多样性影响肺癌生存
  • 大模型适配国产化服务器昇腾(300I DUO)
  • 多人语音分离模型效果展示与本地部署实践
  • spring boot启动
  • CAN诊断箱调试报告
  • Kubernetes 高级健康检查与存储卷详解
  • 质量安全管控如何实现事前预防?