C语言扫雷

【C语言】从扫雷玩家到开发者 相信大家都玩过扫雷吧,这里简单介绍一下扫雷的规则:点击某个位置,如果这个位置有雷,玩家就会被炸,展示雷盘中所有雷的位置,游戏结束,如果这个位置没有雷,且以这个位置为中心的九宫格也没有雷,则这个位置被翻开,若以这个位置为中心的九宫格有雷,则统计以这个位置为中心的九宫格中雷的个数,并且显示在九宫格的中心位置,点开所有非雷位置则游戏胜利,在途中点到雷则游戏失败。创建二位数组开辟地图(默认10*10)初始化为0使用随机数给地图布置雷场默认10颗雷(-1为雷)对用户操作进行响应。 阅读详情

C语言扫雷

扫雷的代码实现和三子棋差不多,主要差别在于游戏代码的实现

分成三个文件进行编写 test.c 、game.h 、game.c

test.c :用于实现总体框架,及测试代码

game.h :用于符号定义、函数声明、头文件引用

game.c :用实现游戏代码

整体框架

首先打印菜单供玩家进行选择

  • 选择1: 进入游戏,游戏结束,break 跳出多分支 此时 input 值为 1,循环继续。实现了玩了一把不过瘾再玩一把的需求
  • 选择0: 打印提示 break 跳出多分支 此时 input 值为 0,循环停止。程序结束
  • 选择其它:打印提示 break 跳出多分支 此时 input 值为 非0,循环继续
// 创建菜单 -- 可自行修改为想要的样式
void menu()
{
	printf("**************************\n");
	printf("********  1.play  ********\n");
	printf("********  0.exit  ********\n");
	printf("**************************\n");
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL)); // 用于设置随机数种子
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			system("cls"); // 清屏 - 可以加在自己想要的地方
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,请重输\n");
			break;
		}
	} while (input);

	return 0;
}

游戏框架

理清游戏的执行顺序

  • 定义两个数组 mine 数组用于存储雷的信息,show 数组用于显示给玩家观看,采用宏定义方式便于以后扩展。
  • 初始化两个数组,将 mine 数组初始化为 '0' ,show 数组初始化为 '*' 。
  • 设置雷,将雷的信息存储到 mine 数组中。
  • 打印棋盘,棋盘存储在 show 数组中。
  • 排雷的具体细节
void game()
{
	char mine[ROWS][COLS] = { 0 }; // 用于存储雷的位置
	char show[ROWS][COLS] = { 0 }; // 用于显示给用户

	// 初始化数组
	InitBoard(mine, ROWS, COLS, '0'); 
	InitBoard(show, ROWS, COLS, '*');	

	// 设置雷
	SetMine(mine, ROW, COL);

	//PrintBoard(mine, ROW, COL); // 如果需要答案将这一行注释去掉
	PrintBoard(show, ROW, COL);  // 打印棋盘供玩家开始游戏

	// 排雷
	FindMine(mine, show, ROW, COL);
}

具体实现

初始化棋盘

将棋盘设置为指定的初始化格式

show 数组全部初始化为 '0'

mine 数组全部初始化为 '*'

// 初始化棋盘
void InitBoard(char board[ROWS][COLS], int row, int col, char set)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < col; j++)
		{
			board[i][j] = set; // 初始为指定的格式
		}
	}
}

设置雷

采用随机数来生成雷 – 将为雷的坐标设置为 '1'

// 设置雷
void SetMine(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; // 1 ~ 9
		if ('0' == board[x][y])
		{
			board[x][y] = '1';
			count--;
		}
	}
}

打印棋盘

将棋盘打印出来,供玩家开始扫雷,格式可自行设计,这里保证了在 1 ~ 99 大小棋盘不会出现错位情况,棋盘大小不建议超过 70 不然程序容易崩溃

// 打印棋盘
void PrintBoard(char board[ROWS][COLS], int row, int col)
{
	int i = 0;
	// 打印列标
	for (i = 0; i <= row; i++)
	{
		printf(" %-3d", i);
	}
	printf("\n\n");

	// 打印每一行
	for (i = 1; i <= row; i++)
	{
		int j = 0;
		printf("%2d", i); // 打印行标
		for (j = 1; j <= col; j++)
		{
			printf("%4c", board[i][j]);
		}
		printf("\n\n");
	}
}

排雷

排雷实现的主要实现,本文扫雷主要采用三个输入来进行游戏 (横纵坐标及是否标记 – 1 为标记此坐标为雷,其余数字为不标记,正常揭开),同时实现了第一次绝对不会踩雷,一下展开一大片等功能

// 排查雷
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int x = 0;
	int y = 0;
	int flag = 0;  // 用于判断是否标记
	int first = 1; // 用于保证第一次不是雷,且仅执行一次
	while (IsWin(show, ROW, COL) != 1)
	{
		printf("请输入要排查的坐标:>");
		scanf("%d %d %d", &x, &y, &flag);// 采用三个输入,横纵坐标及是否标记雷为 1 标记为雷 其它数字为不标记正常打开
		if (x >= 1 && x <= row && y >= 1 && y <= col) // 判断输入是否合法
		{
			if (1 == flag) // 判断是否标记雷
			{
				SignMine(show, x, y);
				continue;
			}
			 // 判断第一次是否踩雷
			if (1 == first)
			{
				IsFirstStepMine(mine, x, y);
				first = 0;
			}

			if ('1' == mine[x][y])
			{
				printf("很遗憾,你被雷炸死了!\n");
				PrintBoard(mine, ROW, COL);
				break;
			}
			else
			{	
				system("cls"); // 清屏
				show[x][y] = '0' + GetMineCount(mine, x, y); // 将九宫内雷数,显示给用户
				// 展开一片
				if ('0' == show[x][y])
					CleanMore(mine, show, x, y);
				PrintBoard(show, ROW, COL);
			}
		}
		else
		{
			printf("输入坐标不合法,请重输!\n");
		}
	}
	if (IsWin(show, ROW, COL) == 1)
		printf("恭喜,你赢了!\n");
}

获取雷的数量

这里存在的问题是如何处理边角,无法对附近九宫格进行遍历,主要有两个方法 - 本文采用第二种

  • 对坐标进行判断,如果越界不予理会,返回合法坐标内的雷数
  • 为了防止越界问题,我们也可以直接在棋盘外再加上一圈,原本 9 * 9 的棋盘变为 11 * 11 的棋盘,这样就不会发生越界问题了
// 获取九宫格内雷的数量
static int GetMineCount(char mine[ROWS][COLS], int x, int y)
{
	int count = 0;
	int i = 0;
	for (i = x - 1; i <= x + 1; i++)
	{
		int j = 0;
		for (j = y - 1; j <= y + 1; j++)
		{
			count += mine[i][j];
		}
	}
	return count - 9 * '0'; // 棋盘存储的为字符,减去字符 0 转化为数字
}

判断第一次是否踩雷

如果第一次的坐标是雷,首先寻找一个不为雷的坐标将雷设置在这,再将原坐标为雷的坐标,置为非雷

// 判断第一次是否踩雷
static void IsFirstStepMine(char mine[ROWS][COLS], int x, int y)
{
	while ('1' == mine[x][y])
	{
		int m = rand() % ROW + 1;
		int n = rand() % COL + 1;
		if ('0' == mine[m][n])
		{
			mine[m][n] = '1';
			mine[x][y] = '0';
		}
	}  
}

标记雷

由于使用键盘操作并不便捷,故只设置了一层标记

标记指定坐标,将其置为 '?' , 再次标记,还原为 '*'

// 标记雷
static SignMine(char show[ROWS][COLS], int x, int y)
{
	if ('*' == show[x][y])
		show[x][y] = '?';
	else if ('?' == show[x][y])
		show[x][y] = '*';
	system("cls");
	PrintBoard(show, ROW, COL);
}

判断是否赢

遍历棋盘,统计未被排查及已标记雷的数量,看是否与所设置雷数相同,相同即为赢

// 判断是否赢
static int IsWin(char show[ROWS][COLS], int row, int col)
{
	int count = 0;
	int i = 0;
	for (i = 1; i <= row; i++)
	{
		int j = 0; 
		for (j = 1; j <= col; j++)
		{
			if ('*' == show[i][j] || '?' == show[i][j]) // 统计被标记及未被排查雷个数
				count++;								// 等于总的雷数,获胜
		}
	}
	return count == EASY_COUNT;
}

展开一片

如果九宫格内没有雷,则揭开其余格子,再对揭开的格子进行判断,是否有雷,没有雷则继续展开,采用递归实现

// 利用递归实现一下展开一片
static void CleanMore(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y)
{	
	int i = 0;
	show[x][y] = ' '; // 为了美观将 '0' 全部用 ' ' 代替
	for (i = x - 1; i <= x + 1; i++)
	{
		int j = 0;
		for (j = y - 1; j <= y + 1; j++)
		{
			if (i < 1 || i > ROW || j < 1 || j > COL) // 不合法坐标
				continue;
			if ('*' == show[i][j]) // 对未展开的进行展开,已展开跳过
			{
				show[i][j] = '0' + GetMineCount(mine, i, j);
				if ('0' == show[i][j])
					CleanMore(mine, show, i, j);
			}			
		}
	}	
}

完整代码

test.c

#include "game.h"

// 打印菜单 -- 可自行设计
void menu()
{
	printf("************************\n");
	printf("******** 1.play ********\n");
	printf("******** 0.exit ********\n");
	printf("************************\n");
}

void game()
{
	char mine[ROWS][COLS] = { 0 }; // 用于存储雷的位置
	char show[ROWS][COLS] = { 0 }; // 用于显示给用户

	// 初始化数组
	InitBoard(mine, ROWS, COLS, '0'); 
	InitBoard(show, ROWS, COLS, '*');	

	// 设置雷
	SetMine(mine, ROW, COL);

	//PrintBoard(mine, ROW, COL); // 如果需要答案将这一行注释去掉
	PrintBoard(show, ROW, COL); 

	// 排雷
	FindMine(mine, show, ROW, COL);
}


int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));  // 设置随机数种子
	do
	{		
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:	
			system("cls");
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,请重输\n");
			break;
		}
	} while (input);

	return 0;
}

game.h

#define _CRT_SECURE_NO_WARNINGS 1
#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>

// 定义棋盘大小 -- 不建议超过 60 ~ 70,不然程序会崩溃
#define ROW 9
#define COL 9

// 扩展棋盘大小,防止越界
#define ROWS ROW + 2
#define COLS COL + 2

// 定义雷数 -- 雷的数量不能超过棋盘大小
#define EASY_COUNT 10

// 初始化数组
void InitBoard(char board[ROWS][COLS], int row, int col, char set);

// 打印数组
void PrintBoard(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);

game.c

#include "game.h"

// 初始化棋盘
void InitBoard(char board[ROWS][COLS], int row, int col, char set)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < col; j++)
		{
			board[i][j] = set; // 初始为指定的格式
		}
	}
}

// 打印棋盘
void PrintBoard(char board[ROWS][COLS], int row, int col)
{
	int i = 0;
	// 打印列标
	for (i = 0; i <= row; i++)
	{
		printf(" %-3d", i);
	}
	printf("\n\n");

	// 打印每一行
	for (i = 1; i <= row; i++)
	{
		int j = 0;
		printf("%2d", i); // 打印行标
		for (j = 1; j <= col; j++)
		{
			printf("%4c", board[i][j]);
		}
		printf("\n\n");
	}
}

// 设置雷
void SetMine(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; // 1 ~ 9
		if ('0' == board[x][y])
		{
			board[x][y] = '1';
			count--;
		}
	}
}

// 获取九宫格内雷的数量
static int GetMineCount(char mine[ROWS][COLS], int x, int y)
{
	int count = 0;
	int i = 0;
	for (i = x - 1; i <= x + 1; i++)
	{
		int j = 0;
		for (j = y - 1; j <= y + 1; j++)
		{
			count += mine[i][j];
		}
	}
	return count - 9 * '0';
}

// 判断第一次是否踩雷
static void IsFirstStepMine(char mine[ROWS][COLS], int x, int y)
{
	while ('1' == mine[x][y])
	{
		int m = rand() % ROW + 1;
		int n = rand() % COL + 1;
		if ('0' == mine[m][n])
		{
			mine[m][n] = '1';
			mine[x][y] = '0';
		}
	}  
}

// 利用递归实现一下展开一片
static void CleanMore(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y)
{	
	int i = 0;
	show[x][y] = ' '; // 为了美观将 '0' 全部用 ' ' 代替
	for (i = x - 1; i <= x + 1; i++)
	{
		int j = 0;
		for (j = y - 1; j <= y + 1; j++)
		{
			if (i < 1 || i > ROW || j < 1 || j > COL) // 不合法坐标
				continue;
			if ('*' == show[i][j]) // 对未展开的进行展开
			{
				show[i][j] = '0' + GetMineCount(mine, i, j);
				if ('0' == show[i][j])
					CleanMore(mine, show, i, j);
			}			
		}
	}
	
}

// 判断是否赢
static int IsWin(char show[ROWS][COLS], int row, int col)
{
	int count = 0;
	int i = 0;
	for (i = 1; i <= row; i++)
	{
		int j = 0; 
		for (j = 1; j <= col; j++)
		{
			if ('*' == show[i][j] || '?' == show[i][j]) // 统计被标记及未被排查雷个数
				count++;								// 等于总的雷数,获胜
		}
	}
	return count == EASY_COUNT;
}

// 标记雷
static SignMine(char show[ROWS][COLS], int x, int y)
{
	if ('*' == show[x][y])
		show[x][y] = '?';
	else if ('?' == show[x][y])
		show[x][y] = '*';
	system("cls");
	PrintBoard(show, ROW, COL);
}

// 排查雷
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int x = 0;
	int y = 0;
	int flag = 0;  // 用于判断是否标记
	int first = 1; // 用于保证第一次不是雷,且仅执行一次
	while (IsWin(show, ROW, COL) != 1)
	{
		printf("请输入要排查的坐标:>");
		scanf("%d %d %d", &x, &y, &flag); 
		if (x >= 1 && x <= row && y >= 1 && y <= col)
		{
			if (1 == flag)
			{
				SignMine(show, x, y);
				continue;
			}
			 // 判断第一次是否踩雷
			if (1 == first)
			{
				IsFirstStepMine(mine, x, y);
				first = 0;
			}

			if ('1' == mine[x][y])
			{
				printf("很遗憾,你被雷炸死了!\n");
				PrintBoard(mine, ROW, COL);
				break;
			}
			else
			{	
				system("cls"); // 清屏
				show[x][y] = '0' + GetMineCount(mine, x, y);
				// 展开一片
				if ('0' == show[x][y])
					CleanMore(mine, show, x, y);
				PrintBoard(show, ROW, COL);
			}
		}
		else
		{
			printf("输入坐标不合法,请重输!\n");
		}
	}
	if (IsWin(show, ROW, COL) == 1)
		printf("恭喜,你赢了!\n");
}
用c语言写一个简单的扫雷 用c语言写一个简单的扫雷 目录 用c语言写一个简单的扫雷 目录 1.所需要的知识 2.总体思路 3.详细实现 菜单函数 执行菜单 游戏主体函数 打印面板函数 埋雷函数 扫雷函数 空白算法函数 4.程序运行效果 1.所需要的知识 c语言的基本语法,简单的二维数组,一点简单的递归知识。 2.总体思路 扫雷游戏主要由3个部分组成,埋雷子,扫雷,判断输赢。 ... 阅读详情

相关推荐

C语言扫雷详解实现

今天就用之前所学的知识来写一个C语言简易版扫雷游戏,主要涉及了C语言中的一些基本知识,循环、分支、函数、数组等等,一步一步写出来

m0_66483195的博客 769

百度语音合成data:audio/x-mpeg;base64转mp3

百度语音base64转mp3

z19980115的博客 88万+

C语言游戏之扫雷

今天给大家大家带来一个用c语言实现的扫雷游戏 首先说一下用c语言实现的扫雷游戏的特点: 1.打印扫雷棋盘 2.玩家选择点开(扫雷)坐标 3.选中雷 --> 游戏结束 没选中 --> 打印棋盘并提示刚才坐标周围的雷数(八个方向) 再说下我的程序功能: 1.游戏过程中,如果选的坐标八个方向都没有雷则展开这九个坐标并提示雷数 2.如果坐标四周没有雷则不进行提示显...

不会编程的程序圆 的博客 1112

Apache Spark 未授权访问漏洞复现

Apache Spark 未授权访问漏洞复现 Apache Spark 未授权访问漏洞复现介绍环境搭建漏洞复现使用msf进行攻击另一个方法 介绍 Apache Spark是一款集群计算系统,其支持用户向管理节点提交应用,并分发给集群执行。如果管理节点未启动ACL(访问控制),我们将可以在集群中执行任意代码。 环境搭建 kali :192.168.89.130 使用vulhub漏洞靶场搭建,进入目录下/spark/unacc ,运行 docker-compose up -d [外链图片转存失败,源站可能有防

yzl_007的博客 6375

【C语言】实现简易扫雷(仿windows下扫雷)

背景        个人比较喜欢玩扫雷,恰好又在学习C语言,所以想用自己薄弱的C语言水平实现简单的扫雷小游戏。一来提高自己的编程水平,二来通过编写自己喜欢的游戏,从另一方面获得不一样的成就感。框架        实现扫雷不同于我前面写过的三子棋,扫雷的功能更加复杂,更加有逻辑性。        我首先将我能想到的几个模块都一一列举出来:               游戏实现函数    菜单    ...

LaoLi0519的博客 5000

《基于Yolo算法的火灾检测系统设计与实现》开题报告

在消防安全领域,火灾对生命财产安全构成严重威胁。传统的火灾检测手段存在诸多不足,如误报率高、检测范围有限、响应速度慢等。基于 Yolo 算法的火灾检测系统能够利用深度学习技术,实现对火灾的高效、精准检测,具有重要的现实意义。         从社会安全角度看,该系统可以广泛应用于各类公共场所、工业厂房和居民住宅,实时监测火灾隐患,及时发出警报,为人员疏散和消防救援争取宝贵时间,有效降低火灾造成的人员伤亡和财产损失,保障社会公共安全。

m0_69704149的博客 1384

字符函数和字符串函数

文章目录1.1 字符串长度1.2 不受限制的字符串函数1.2.1 字符串拷贝1.2.2 字符串连接1.2.3 字符串比较1.3 长度受限的字符串函数1.3.1 strncpy1.3.2 strncat1.3.3 strncmp1.4 字符串查找1.4.1 查找一个字符1.4.2 查找任何几个字符1.4.3 查找子串1.4.4 字符串分割1.5 字符分类函数错误信息报告1. strerror2. perror1.6 内存函数1.6.1 memcpy1.6.2 memmove1.6.3 memcmp1.6.4

trqii_的博客 948

【AI绘图进阶指南】Latent Diffusion Model核心组件解析——从理论到实践

本文深入解析Latent Diffusion Model(LDM)的核心组件,包括Autoencoder、Denoiser和Conditioning Encoder的工作原理及实践应用。通过理论结合代码示例,揭示LDM如何高效处理图像生成任务,并优化AI绘图流程,为开发者提供从理论到实践的进阶指南。

weixin_42628941的博客 386

[C语言] [游戏] 扫雷

使用C语言写一个扫雷游戏 !(练习二维数组)!(超详细的游戏设置思路和书写细节)!(看看7318字就很......)

博主学浅才疏,权当信笔涂鸦。嘿嘿,就算是记录我的学习历程吧,不过有时我会写得很细,但解题思路常常只有一种,别介意哈 ^ ^ (也许能学到一点点)。希望大家多来踩踩,顺便可以关注我,一起交流学习。 1万+

RocketMq面板访问异常 com.alibaba.fastjson.JSONException: not close json text, token : string

rocketmq JSONException: not close json text, token : string 问题解决

qq_21067307的博客 5573

VulnHub系列之BadStore_123渗透测试

BADSTORE: 1.2.3 早期网商系统漏洞鉴赏(2004)

Flynn的博客 1630

C语言实现扫雷——详解

扫雷大家应该都玩过,这是一个十分经典的游戏,今天我将给大家讲解如何用C语言多文件编程实现扫雷,我的这个扫雷有如下几个功能: 显示该点周围雷的个数 第一次下子,不炸死 坐标周围没雷,可以实现展开 游戏结束后展示玩家用时 话不多说,先附上效果图: 我们只要输入坐标就可以扫雷了,是不是很有趣? 其实要想实现这也不难,我们要用几个算法模块来模拟游戏规则,需要用函数来调用...

一砚梨花雨 7万+

【华为机试真题 Python实现】分苹果

《华为机试真题》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!本文解法非最优解(即非性能最优)。A,B两个人把苹果分为两堆,A希望按照它的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算走位,12+5=9(1100+0101=9), B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多,输入苹果的数量和每个苹果重量,输出满足A的情况下获取的苹果总重量, 如果无法满足A的要

3413

扫雷(C语言版)

1、需求分析 通过C语言实现简单的扫雷小游戏,由于创作者水平有限,未在该程序中实现图形化界面,且功能较为简单,敬请原谅! 2、程序架构 程序分为test.c、game.c两个源文件和game.h一个头文件。 test.c:主函数接口引入。 game.c:游戏的相关函数实现。 game.h:头文件引入、函数声明。 3、代码实现(分函数呈现) (1)主函数代码实现 ...

m0_57304511的博客 1万+

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2727

29、5G PUCCH格式及资源配置详解

本文详细解析了5G通信系统中的物理上行控制信道(PUCCH)的不同格式及其资源配置方案。PUCCH负责传输上行控制信息(UCI),包括混合自动重传请求(HARQ)确认信息、调度请求(SR)和信道状态信息(CSI)等。文章从PUCCH的基本概念出发,深入分析了格式0到格式4的特点、编码调制方式、干扰随机化机制以及适用场景,并探讨了PUCCH资源集的配置方法和上行控制信令在PUSCH上的传输机制。通过对比不同格式的传输能力、干扰随机化方式和频率跳变能力,为读者提供了选择合适PUCCH格式的决策依据。最后,文章总

oil88的博客 252

C语言实现扫雷

C语言实现扫雷全过程详细教学

m0_56911284的博客 3098

[QMT量化交易小白入门]-二、如何用miniQMT获取沪深A股的板块列表、历史行情数据和实时行情数据

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 5655

C语言——扫雷

扫雷大家应该都应该玩过,这是电脑上一个十分经典的游戏,今天我将给大家讲解如何用C语言来实现扫雷,这个扫雷有如下几个功能: 1.第一次下子,不炸死。 2.坐标周围没雷,可以实现展开。 3.显示该点周围雷的个数。 我们就需要用二维数组来打印棋盘,假如我们要打印10X10的棋盘,那我们的二维数组元素也要为10X10个吗?,不能,因为我们在设计算法时需要统计坐标周围8个方位雷的个数,假如要统计边界坐标周围...

yl_sakura的博客 7574

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C语言:扫雷实现

因为对应下标是0~8,玩家需要输入的坐标则是1~9,并且对于后续的扫雷阶段,检查的是附近一圈的位置情况,行和列都需要增加1,所以我们需要定义一个11*11的数组。因为我们布置的雷都表示成了字符1,而函数的返回类型为int,所以我们减去了字符0,一共8个位置,所以减去8个字符(我们需要将要处理的数组,行,列以及要初始化的字符传递到函数里(这里选择。函数只需要一个简单的循环即可。函数中,我们会写一些函数,为了便于操作,我们将这些函数的实现写到。因为我们设定的是9*9的数组,所以只需要打印中间的9*9的字符。

bit_wjz的博客 1536

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c语言:扫雷

/方便动态管理行列数这里定义了一些常量,包括棋盘的行数和列数,以及雷的数量,方便动态设置。

weixin_74150890的博客 3571

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

扫雷(用C语言编写扫雷游戏)

用C语言编写扫雷游戏是很有趣的哦,在学习中游戏,在游戏中学习^_^ game.h文件 #ifndef __GAME_H__ #define __GAME_H__ enum OPTION { PLAY, EXIT }; #include #include #include #include #define ROW 11 #define COL 11 #

rannianzhixia的博客 5973

【C语言】扫雷小游戏详解

还记得大明湖畔的夏雨荷,电脑课上的扫雷吗?一、想法与构思1.想法2.构思二、代码与实现三、完整代码               是他吗? 没错,就是他。你电脑课上偷偷玩过的扫雷,今天我们用C语言做一个扫雷小游戏。 《扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。 接下来让我们进入代码的世界: 扫雷小游戏详解:一、想法与构思1.想法2.构思二、代码与实现三、完整代码 目录: 一

恒等于C的博客欢迎您 2842

C语言-扫雷

C语言-递归实现完整扫雷

主营前端方向,技术栈是vue 1675

C语言实现扫雷游戏

扫雷这个游戏相信很多人都玩过,但深入去研究这个游戏的朋友应该很少。大部分人玩这个游戏只是用来打发一下时间,但当你真正去研究这个游戏时,就会发现这个游戏其实很有趣。 对这个游戏感兴趣的朋友或者对编程感兴趣的初学者肯定也很想自己动手使用自己所学的知识来实现这个游戏。 进入主题-------使用C语言简单实现这个游戏(这里使用C语言实现这个游戏,本人目前实力有限,写的不是很好,请见谅)。 在实现这个游戏之前先分析一下游戏的布局(以扫雷初级来实现这个游戏)。 扫雷初级是一个9*9的布局(后文中称这个布局

.很冷的博客 4112

扫雷(c语言)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、扫雷是什么? 二、基本思路流程介绍 1.效果显示 选择界面 主界面(下面显示雷区可屏蔽) ​ 游戏失败画面 游戏通过画面 三、代码实现 1.meau()函数以及界面test函数() 2.game函数(包含页面,设雷,扫雷) 3.棋盘InitBoard()设置 4.棋盘覆盖函数DisplayBoard() 5.Setmine()设置雷函数 ...

xutengya的博客 4404
上一篇: C语言三子棋
下一篇: 字符函数和字符串函数
trqii_
博客等级 码龄6年 817粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值