C语言实现消消乐游戏(6)

6.实现方块的还原和匹配

(1)如果交换后没有实现三个及以上的元素,那么交换的元素自动还原

cpp 复制代码
void restore() {
	//发生移动后,而且这个单向移动已经结束
	if (isSwap && !isMoving)
	{
		//如果没有匹配到三个以上相同的元素,还原
		int count = 0;
		for (int i = 1; i <= ROW; i++) {
			for (int j = 1; j <= COL; j++) {
				count += map[i][j].match;
			}
		}

		if (count==0)
		{
			exchange(posX1, posY1, posX2, posY2);

		}
		isSwap = false;

	}
	
}

(2)消除检测,检查所有可以消除的方块

cpp 复制代码
void cheek() {
	for (int i = 1; i <= ROW; i++) {
		for (int j = 1; j <= COL; j++) {
			if (map[i][j].type == map[i + 1][j].type && map[i][j].type == map[i - 1][j].type) {
				for (int k = -1; k <= 1; k++)
					map[i + k][j].match++;
			}
			if (map[i][j].type == map[i][j-1].type && map[i][j].type == map[i][j+1].type) {
				for (int k = -1; k <= 1; k++)
					map[i][j+k].match++;
			}

		}
	}
}
相关推荐
lucas_AI15 分钟前
ConfBench:大模型的「我很有把握」,到底能不能信?
人工智能·算法
oier_Asad.Chen31 分钟前
【洛谷题解/AcWing题解/真题】洛谷P2330【SCOI2005】繁忙的都市(Kruskal算法的再探究))
c++·算法·贪心算法·图论·最小生成树·kruskal
ownkss2 小时前
游戏公会联运怎么做:步骤、指标与复盘重点
游戏·游戏发行·游戏运营·游戏分发
xcLeigh2 小时前
Unity基础:C#脚本的创建与挂载——让你的游戏物体活起来
游戏·unity·c#·教程
青 春 记 忆3 小时前
LeetCode 53. 最大子数组和|Python 解法详解
python·算法·leetcode
豆瓣鸡3 小时前
算法日记 - Day10
算法
戴西软件3 小时前
戴西CAxWorks.VPG车辆工程仿真软件技术解析(上)——安全仿真体系的自动化构建
运维·网络·数据库·人工智能·算法·安全·自动化
zander2584 小时前
4. 寻找两个正序数组的中位数:用分割点代替合并
数据结构·算法
Kisorge4 小时前
【电机控制器】 基于STSPIN32G4的FOC控制
stm32·嵌入式硬件·算法
阿米亚波4 小时前
【C/C++包管理器】vcpkg(by microsoft)
c语言·c++·git·vscode·microsoft·github·vcpkg