当前位置:网站首页>Simple mine sweeping in C language (with source code)
Simple mine sweeping in C language (with source code)
2022-08-11 06:32:00 【Rserendipity】
学习C语言
源码来源:bStation courses and document sources
在bStand up and listen to the teacher's class,I followed the code to the side,分享给大家
You need to create two under the same project.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;
}
最后再次说明:原创作者为bStanding teacher Peng,Individuals only carry the code after listening to the course,如有侵权,It will be deleted as soon as possible after getting in touch
边栏推荐
猜你喜欢
随机推荐
关于mmdetection框架实用小工具说明
USB URB
Wisdom construction site safety helmet identification system
net6 的Web MVC项目中事务功能的应用
arduino的esp32环境搭建(不需要翻墙,不需要离线安装)
2021-09-11 C语言 变量与内存分配
需求文档(PRD)撰写指南
stm32-WS2812 PWM+DMA(自己写库函数)
Diagnostic Log and Trace——开发人员如何使用 DLT
360° large field of view helmet recognition system-deep learning intelligent video analysis
CMT2380F32模块开发8-Base Timer例程
STM32F407-浅~~析UART异步通信&USART_Init函数入口参数
STM32学习总结(二)——GPIO
C语言实现猜数字(附带源码,可直接运行)
vim 编辑解决中文乱码问题
开源之夏 2022 火热来袭 | 欢迎报名 OpenMLDB 社区项目~
使用c语言实现井字棋(有源码,可以直接运行)
Diagnostic Log and Trace——DLT 离线日志存储
ActiveReports报表分类之页面报表
OpenMLDB官网升级,神秘贡献者地图带你快速进阶









