当前位置:网站首页>C语言实现简易扫雷(附带源码)
C语言实现简易扫雷(附带源码)
2022-08-11 05:25:00 【Rserendipity】
学习C语言
源码来源:b站课程以及文件来源
在b站上听这位老师讲的课,自己跟着打了一边代码,分享给大家
需要在同一个工程下创建两个.c 文件,一个.h文件
头文件/函数声明(.h文件)
#define _CRT_SECURE_NO_WARNINGS
#define ROW 9
#define COL 9
#define ROWS ROW + 2
#define COLS COL + 2
#define Easy_Count 10
#include <stdio.h>
#include <stdlib.h>
#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 Setmap(char board[ROWS][COLS], int row, int col);
void FindMap(char map[ROWS][COLS],char show[ROWS][COLS],int row,int col);
int get_map_count(char map[ROWS][COLS], int x, int y);
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;
for (i = 0; i <= row; 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 Setmap(char board[ROWS][COLS], int row, int col)
{
int count = Easy_Count;
while (count)
{
int x = rand() % ROW + 1;//1~9之间的数
int y = rand() % COL + 1;
if (board[x][y] == '0')
{
board[x][y] = '1';
count--;
}
}
}
void FindMap(char map[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
int x, y;
int chenggong = 0;
while (chenggong < row*col - Easy_Count)
{
printf("请输入排查雷的坐标:>");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= row && y >= 1 && y <= col)
{
if (map[x][y] == '1')
{
printf("很遗憾,你被炸死了\n");
DisplayBoard(map, row, col);
break;
}
else
{
int count = get_map_count(map, x, y);
show[x][y] = count + '0';
DisplayBoard(show, row, col);
chenggong++;
}
}
else
{
printf("请输入合法坐标!\n");
}
if (chenggong == row * col - Easy_Count)
{
printf("恭喜排雷成功!\n");
DisplayBoard(map, ROW, COL);
}
}
}
int get_map_count(char map[ROWS][COLS], int x, int y)
{
return map[x - 1][y] +
map[x - 1][y - 1] +
map[x][y - 1] +
map[x + 1][y - 1] +
map[x + 1][y] +
map[x + 1][y + 1] +
map[x][y + 1] +
map[x - 1][y + 1] - 8 * '0';
}
Test.c
#include "Game.h"
void menu()
{
printf("\n");
printf("****************************\n");
printf("***** 扫雷 ****\n");
printf("***** 请输入1或者0 ****\n");
printf("***** 1.play 0.exit ****\n");
printf("****************************\n");
printf("\n");
}
void Game()
{
//创建空白数组
char map[ROWS][COLS] = {
0 };
char show[ROWS][COLS] = {
0 };
//初始化
InitBoard(map, ROWS, COLS, '0');
InitBoard(show, ROWS, COLS, '*');
//打印棋盘
//DisplayBoard(map, ROW, COL);
DisplayBoard(show, ROW, COL);
//随机生成雷
Setmap(map, ROW, COL);
//DisplayBoard(map, ROW, COL);
//扫雷
FindMap(map, show, ROW, COL);
}
void test()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
Game();
break;
case 0:
printf("退出游戏\n");
default:
printf("选择错误!\n");
break;
}
} while (input);
}
int main()
{
test();
return 0;
}
最后再次说明:原创作者为b站的鹏老师,个人仅为听课程后搬运代码,如有侵权,取得联系后将尽快删除
边栏推荐
- Maykle Studio - HarmonyOS Application Development Fourth Training
- Hard hat identification
- Reconstruction and Synthesis of Lidar Point Clouds of Spray
- 蓝牙技术-简介
- Node-3.构建Web应用(一)
- CKEditor富文本编辑器工具栏自定义笔记
- 防盗链——防止其他页面通过url直接访问本站资源
- 使用ActiveReports制作第一张报表
- NUC980-镜像烧录
- Mei cole studios - sixth DjangoWeb application framework + MySQL database training
猜你喜欢
LiDAR Snowfall Simulation for Robust 3D Object Detection
CMT2380F32模块开发1-硬件
KANO模型——确定需求优先级的神器
Hard hat recognition algorithm
Kotlin 增量编译的新方式 | 技术解析
Maykle Studio - Second Training in HarmonyOS App Development
gerrit 配置SSH Key和账号、邮箱信息
Severe Weather 3D Object Detection Dataset Collection
华为IOT设备消息上报和消息下发验证
The selection points you need to know about the helmet identification system
随机推荐
CMT2380F32模块开发2-IDE软件配置
weex入门踩坑
Reconstruction and Synthesis of Lidar Point Clouds of Spray
微文案也能提升用户体验
Maykel Studio - Django Web Application Framework + MySQL Database Second Training
蓝牙技术-简介
CMT2380F32模块开发10-高级定时器例程
CMT2380F32模块开发1-硬件
USB中用NRZI来编码数据
360° large field of view helmet recognition system-deep learning intelligent video analysis
Promise.race学习(判断多个promise对象执行最快的一个)
红外线一认识
从概念认识AI
openlayer中实现截图框截图的功能
Joint 3D Instance Segmentation and Object Detection for Autonomous Driving
STM32-串口常用寄存器和库函数及配置串口步骤
Kotlin 增量编译的新方式 | 技术解析
CMT2380F32模块开发5-CLK例程
net6 的Web MVC项目中事务功能的应用
STM32学习总结(一)——时钟RCC