当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
Diagnostic Log and Trace——dlt的编译和安装
C语言实现猜数字(附带源码,可直接运行)
Hardhat Recognition System - Solving Regulatory Conundrums
Node-3.构建Web应用(二)
CVPR2022——Not All Points Are Equal : IA-SSD
swin-transformer训练自己的数据集<自留>
蓝牙技术-简介
产品如何拟定优化方案?
使用c语言实现井字棋(有源码,可以直接运行)
STM32 基于固件库的工程模板的建立
OpenMLDB官网升级,神秘贡献者地图带你快速进阶
张小龙的微信公开课(2019年)
CMT2380F32模块开发11-RTC例程
ActiveReports报表分类之页面报表
博客目录
自定义形状seekbar学习
红外线一认识
Mei cole studios - deep learning second BP neural network
USB URB
OpenMLDB v0.5.0 发布 | 性能、成本、灵活性再攀高峰