c编写扫雷游戏

本文详细介绍了使用C语言实现扫雷游戏的过程,包括文件结构、主要函数如elementary、bomb、play的实现,以及关键的递归函数Arr和Count。通过Count计算周围雷的数量,Arr函数进行递归展开,确保游戏的逻辑正确性和视觉效果。此外,还展示了如何通过头文件组织代码和引用库。
摘要由CSDN通过智能技术生成

纪录自己,所以注释和解释相比较不够详细

首先分成三个文件来做(两个源文件和一个头文件)

Main文件  game文件  和头文件head

main文件是用来引用game文件中实现功能的函数以及游戏大纲,game文件实现各个函数的功能。头文件则用作为声明,可以把需要调用和定义的库和常量写在头文件当中,再用需要调用的文件引用头文件即可。

头文件中的定义

 对头文件的引用

#include "(头文件名)",即可

 Main文件也是这样。

Main文件中main为主函数,里面是游戏前界面的流程和进入

 menu函数内容

 game函数

 头文件

以下皆是在 game文件中实现

 elementary函数负责初始化两个数组,第一个arr数组初始为字符串0,让展示出去第二个数组show为9×9的棋盘,内容是 *

 bomb函数实现布雷(注释部分是展示arr数组,只是方便当时做调试)

 play为实现玩家输入坐标到扫雷中扫雷或注释雷以及返回数值判断是否踩雷或继续

 接下来便是展示以及统计玩家是否扫雷胜利 show和judge

 而扫雷中最重要的效果是展开雷以及统计雷展示

 使用函数递归实现,考率到死循环,让被计算过的位置若是周边一圈没有雷便赋值为空格,使递归判断并且玩家看起来舒适。

效果:

函数实现 Count统计周围八格雷的个数,Arr实现递归

char Count(char arr[Rows][Cols], char show[Rows][Cols],int inp, int inp2)
{
	return (arr[inp - 1][inp2 - 1] + arr[inp - 1][inp2] + arr[inp - 1][inp2 + 1] + arr[inp][inp2 - 1]
		+ arr[inp][inp2 + 1] + arr[inp + 1][inp2 - 1] + arr[inp + 1][inp2] + arr[inp + 1][inp2 + 1])-(8*'0');
}

(这里加八倍百分零 需了解ascall码表)

Arr函数

void Arr(char arr[Rows][Cols], char show[Rows][Cols], int x, int y)
{
	if (Count(arr, show, x, y) != 0 )
	{ 
		show[x][y] = Count(arr, show, x, y) + '0';
	}
	else if (Count(arr, show, x, y) == 0 && x >= 1 && x <= 9 && y >= 1 && y <= 9 && show[x][y] != ' ')
	{
		show[x][y] = ' ';
		int i = 0;
		int j = 0;
		for (int i = x - 1; i <= x + 1; i++)
		{
					
			for (j = y - 1; j <= y + 1; j++)
			{
				Arr(arr,show, i, j);
			}
		}
	}
	else
	{
		return ;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值