【搜索与回溯算法】泡泡龙

泡泡龙游戏开发系列教程(六) 嗨!大家好,我是小蚂蚁。 上一节中,我们学习了泡泡龙游戏中的查找算法,这个算法可以帮助我们找到所有相邻的相同颜色的泡泡,在查找完泡泡之后,再通过判断满足条件的泡泡的数量是否大于等于 3,来决定是否应该进行消除。 这是泡泡停靠后的查找和消除的过程,但是这只是消除过程的一部分,还有另一部分需要处理。 来看一下上方这张图,发射一个蓝色的泡泡,这个蓝色的泡泡停靠后,通过查找算法,找到了它右侧的两个相同的蓝色泡泡,因为数量满足了 3 个,所以这 3 个蓝色泡泡会进行消除。 3 个蓝色泡泡被消除了之后, 阅读详情

题目描述

这是一个简化版的网络游戏:在一个N×N方块构成的棋盘中,每个方块均涂上红、黄、蓝、绿(记为l、2、3、4)中的一种颜色,游戏者可以在最底行任意找一个方块,用鼠标双击这个方块,于是该方块及与之相邻(即在上、下、左、右四个方向上有公共边)的所有的同色方块均被消掉,而因下方失去支持的方块将会自由落下填补空位。样例中给出一个4×4的棋盘样例,当游戏者双击最底层左边第二个方块后,将会形成输出结果的布局。
你的任务是编写一个泡泡龙模拟程序,对于给定的一个初始棋盘,计算游戏者双击最底层某个方块后棋盘的布局将会如何。

输入

第1行有两个正整数N和M(I≤M≤N≤I00),其中N表示棋盘的规模,而M则表示游戏者将双击最底层从左边数起的第M个方块。接下来的N行每行有N个l~4的整数组成,表示一个初始的棋盘,同一行相邻两个数之间用一个空格隔开。

输出

N行,每行用N个数给出游戏结束后棋盘的布局,没有方块的格子用0表示,同一行相邻两个数之间也用一个空格分开。每行末尾有空格

样例输入

4 2
1 2 3 4
4 2 4 4
3 4 4 3
1 4 4 3

样例输出

1 0 0 0
4 0 0 0
3 2 0 3
1 2 3 3

模拟题,搜索过后从下往上若此格为空,则将上面的数与之交换

上代码:

#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[101][101], s;

void dg(int x, int y)
{
	if (a[x][y] == s)
		a[x][y] = 0;
	if (a[x + 1][y] == s && x + 1 < n)
		dg(x + 1, y);
	if (a[x - 1][y] == s && x - 1 >= 0)
		dg(x - 1, y);
	if (a[x][y + 1] == s && y + 1 < n)
		dg(x, y + 1);
	if (a[x][y - 1] == s && y - 1 >= 0)
		dg(x, y - 1);
}

main()
{
	scanf("%d%d", &n, &m);
	for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
				scanf("%d", &a[i][j]);
		}
	s = a[n - 1][m - 1];
	dg(n - 1, m - 1);
	for (int i = n - 2; i >= 0; i--)
		{
			for (int j = 0; j < n; j++)
				{
					if (a[i][j] != 0)
						{
							int x = i, y = j;
							while (a[x + 1][y] == 0 && x + 1 < n)
								{
									swap(a[x][y], a[x + 1][y]);
									x++;
								}
						}
				}
		}
	for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
				printf("%d ", a[i][j]);
			printf("\n");
		}
}

 月榜第一罗~

泡泡龙游戏算法实现简介 最近在公司新接了一个游戏的修改任务。游戏名字叫《彩色泡泡》。主要是参考经典的泡泡龙实现的。这个游戏从接手到修改,走了很多弯路。我修改后的代码简直是惨不忍睹。也许再过一段时间我看自己的代码,可能会说“靠,哪个SB写的代码”。所以写这份文档一是对我代码的一个补充,二是对泡泡龙出现的算法自己做一个小小的总结。     言归正传,泡泡龙的主要算法有下面几个:1、发射泡泡的运动轨迹。2、发射泡泡的碰撞检测 阅读详情

相关推荐

泡泡龙游戏开发系列教程(五)

嗨!大家好,我是小蚂蚁。我们今天来继续学习泡泡龙游戏中最核心的东西:查找匹配算法。 其实这也不算是什么新东西了,如果你有看过我的其它关于消除游戏的教程,应该会知道,消除游戏的查找算法就那么一个,不论何种类型的消除游戏,这个算法的核心是不变的,只不过会根据不同类型的消除稍作调整而已。所以,如果你之前对查找算法还不是很了解的话,那么就尝试跟随着这篇教程把它彻底搞懂吧! 先来看一张图片。 如图,最下方的这个橙色的泡泡是发射过来的泡泡。泡泡龙游戏的规则是,当发射的泡泡停靠后,只要有三个或者三个以上的颜色相

flyhorsejun的博客 2189

泡泡龙算法模拟实现C++版

#include   #include   #include   #include #include #include using namespace std;  struct Bubble {  int iColor;  Bubble() : iColor( 0 )  {  }  Bubble( int iSetColor ) : iColor( iSe

hintonic的专栏 3771

【搜索】泡泡龙 DFS

题目描述 这是一个简化版的网络游戏:在一个N×N方块构成的棋盘中,每个方块均涂上红、黄、蓝、绿(记为l、2、3、4)中的一种颜色,游戏者可以在最底行任意找一个方块,用鼠标双击这个方块,于是该方块及与之相邻(即在上、下、左、右四个方向上有公共边)的所有的同色方块均被消掉,而因下方失去支持的方块将会自由落下填补空位。样例中给出一个4×4的棋盘样例,当游戏者双击最底层左边第二个方块后,将会形成

你若盛开 清风自来 1320

【javascript】泡泡龙游戏中反弹和查找匹配算法

泡泡龙游戏的核心玩法依赖于物理碰撞与颜色匹配的算法实现。反弹效果需要模拟泡泡与边界或障碍物的弹性碰撞,确保轨迹符合物理规律;匹配算法则需快速检测相邻同色泡泡,触发消除逻辑。高效的处理方式直接影响游戏流畅度和玩家体验。

qq_45406325的博客 1893

Unity 2D祖玛游戏工程包:含完整场景、C#逻辑、UI与可直接运行的配置文件

这个Unity祖玛游戏工程包开箱即用,导入编辑器就能跑起来。里面包含全部游戏功能模块:弹珠发射控制、实时碰撞判定、三颗及以上同色弹珠自动连锁消除、动态分数计算、关卡进度管理、基础UI界面(开始/暂停/失败面板)以及多关卡地图配置。所有脚本都用标准C#编写,结构清晰,关键逻辑如弹道预测、链式消除递归、颜色匹配算法都有明确实现。项目已按Unity规范组织Assets目录,内置ProjectSettings、InputManager、QualitySettings、Physics2DSettings、TagMan

235

javascript 泡泡龙

javascript 泡泡龙

不会就打我 - oj系列 之【搜索与回溯算法】泡泡龙(3篇)

【代码】不会就打我 - oj系列 之【搜索与回溯算法】泡泡龙(3篇)

2401_89382924的博客 211

泡泡龙源码 C++

自己抽时间做来给自己玩的,可以自己调难度

问题 N: 【搜索】泡泡龙

时间限制: 1 Sec 内存限制: 64 MB 题目描述 这是一个简化版的网络游戏:在一个N×N方块构成的棋盘中,每个方块均涂上红、黄、蓝、绿(记为l、2、3、4)中的一种颜色,游戏者可以在最底行任意找一个方块,用鼠标双击这个方块,于是该方块及与之相邻(即在上、下、左、右四个方向上有公共边)的所有的同色方块均被消掉,而因下方失去支持的方块将会自由落下填补空位。样例中给出一个4×4的棋盘样例,当游戏者双击最底层左边第二个方块后,将会形成输出结果的布局。 你的任务是编写一个泡泡龙模拟程序,对于给定的一个初始棋

weixin_45883286的博客 481

泡泡龙(含原代码)

就是普通的泡泡龙单人游戏

C++ 经典泡泡龙源代码

C++ 经典泡泡龙源代码, 提供开发者参考,请忽商用

【搜索与回溯】泡泡龙

#include<bits/stdc++.h> using namespace std; int n,m,a[1000][1000],v; void dfs(int x,int y){ a[x][y]=0; if(a[x][y+1]==v) dfs(x,y+1); if(a[x][y-1]==v) dfs(x,y-1); if(a[x+1][y]==v) dfs(x+1,y); if(a[x-1][y]==v) dfs(x-1,y)...

wangpeiyu2022的博客 371

泡泡龙游戏,逻辑源代码

泡泡龙游戏逻辑源代码,视图层是自己的底层包,不方便公开,本人只提供泡泡龙游戏逻辑源代码,注释很详细

搜索总结

组合数输出 #include <iostream> #include <cstdio> #include <vector> using namespace std; typedef long long ll; int n,m; vector<int> v; void slove(int x) { if(v.size()==m)///组合数...

Spidy_harker的博客 704

基于物联网技术智慧园林绿化养护管理信息平台

近几年来,随着经济不断的发展,城市面积不断的扩大,城市管理中的园林绿化工作也在这种趋势下不断的发生着深刻改变。管养企业是否按制定的管养计划严格执行?绿化事件整改是否及时到位?绿地面积是否在稳步增长?管养的效果如何?如何客观评价管养企业的管养工作?这些都是我们各级管理者需要面对的问题。   智慧园林绿化养护管理信息平台的开发思路以“考核”为核心,整个信息平台体现出“新、快、高、全、享”五个特点。   智慧园林绿化养护管理信息平台的整个开发理念为:依托五大技术手段(全球卫星定位系统技术、地理信...

Cesium的博客QQ2252224326 2459

电磁波成像技术全解析:从γ射线到无线电波的应用实践

本文全面解析电磁波成像技术,从γ射线到无线电波的应用实践。详细介绍了不同波长电磁波的特性与实用场景,包括医疗影像、工业检测、安防监控等领域。特别探讨了X射线、红外热成像、毫米波雷达等前沿技术的实战应用,为读者提供技术选型指南和操作技巧。

weixin_29305337的博客 293

【小测试,大题解】烈日中的BFS

过了几天,夏天来了。朝阳似火,炙烤大地;老师严肃,严格无比…… 很快,一次“小测”来了。 同学们刚落座,测试就开始了。小航马上打开文档,读起题来。 “现在,你们要学的越来越多,学习任务更紧更多了,学习更加辛苦了,就如同夏天烈日。但是,坚持一下,烈日将变为暖阳,照亮你们的程序人生”看着快速收拾书包的同学们,TL老师意味深长地说道。

aliyonghang的博客 358

ReportStudio入门教程(四十一) - 固定报表列宽

我们继续上一篇博客,让他看起来

什么是江湖? 3518
上一篇: 【动态规划】数字三角形
下一篇: 1141. 【贪心算法】排队打水
开朗的坤坤
博客等级 码龄5年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值