关于连连看算法

关于连连看寻路算法的思路 图-:0, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 8, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 阅读详情

 

  连连看寻路时,使用回溯法进行逐步测试,如果发现某条路不行,则退一步再进行尝试,可以使用递归来实现,递归方式代码比较自然,另外也可以使用栈来实现,以下是一些实现思路:

  定义节点Node, Node包含左,右,上,下四个标志,表示这个节点是否进行了4个位置的寻路尝试.

 1. 首先将开始节点压入栈.

 2.判断栈是否为空.

 3.然后Peek栈顶节点的node_x.

   3.1判断nodex_x的四个点是否存在目标节点,如果存在则寻路成功,跳到步骤4.

   3.2如果node_x四个点存在通路(可行节点--已经消掉的方块)则将这个相邻的节点nodex_x_x压入栈,跳到步骤2.

   3.3如果node_x四个点多已经测试过了不是目标节点或不是可行点,那么则弹出node_x,跳到步骤2.

 4.栈变为空则表示无法找到有效路径,不为空时栈里的节点就是具体路线.

  stack.Push(node_start)

  while(stack.Count>0){

   node_x=stack.Peek();

  if(node_x.Top){

    /*TestTop*/

   }else if(node_x.Left){

   /*TestLeft*/

   }else if(node_x.Right){

   /*TestRight*/

   }else if(node_x.Bottom){

   /*TestBottom*/

   }else{

   /*四个节点都不可行则弹出栈*/

    stack.Pop();

    }

 

  }

/*

  说明:Testxxx 代码段会处理三种情况

  1. 判断邻近一节点是否是目标节,是的话则将节点压入栈然后跳出循环(break;)

  2.邻近点是可行节点(已经消掉的方块),
     2.1标记节点node_x        (node_x.L|T|B|L=false;)

     2.2标记节点node_x_x(node_x_x.R|B|T|R=false;) 具体取决于node_x是那个方向过来的,如果是Right过来则将node_x_x.Left设置成false以避免死循环);

     2.3将这个节点(node_x_x)压入栈继续循环.(continue;)

  3.不可行节点(未消除的方块,或到了边界)那么将对应的Top|Left|Bottom|Right标记成false;

 注意:2.1跟2.2步骤都没标记的话则产生死循环,而只标记2.1没标记2.2的话则会生进行一些多余的比较("原路回测")使最终结果无法确定(可能是错误的结果),而标记2.2没标记2.1时会出现死循环(某个消除了的节点反复进栈出栈),各种情况自己画图找出.

*/

//===================

参考文章:

 

限两个拐角

http://www2.flash8.net/teach/4927.htm

 

 

关于《连连看》的算法研究和演示Demo 连连看曾经是一款非常受欢迎的游戏,同时它也是一款比较古老的游戏。看到这里你千万不要认为本篇文章打算讨论《连连看》的历史以及它取得的丰功伟绩。恰恰相反,在这篇文章中我们打算讨论该游戏背后的实现思想,包括它定义的游戏规则,以及游戏的实现算法。作为应用,我们还将利用Java代码实现一个通用的《连连看》算法,并使用Java Swing框架创建一个演示实例。 1《连连看》的游戏规则是如何定义的? 阅读详情

相关推荐

java 实现 连连看的算法

前几天要写一程序 连连看 。上网查了很多。总结一下。 算法大致分为2种。 (1)  图的广度搜索算法(这边就不讲了)  (2)当连接两张图片的线条拐点不超过 2个的时候,此时分为3种情况。没有拐点,只有一个拐点,有两个拐点。           我们可以把连连看中的图片坐标看做是一个2维坐标,就用(x,y)坐标。红色的字体就是放图片的位置。黑色的就相当于那个边框。    (1)当

rudy45的专栏 2812

连连看游戏思维拓展(java版)

文章目录一、前言二、思路分析2.1,相同的卡片可以消除2.2,两张卡片间连线的拐弯不能超过两个1)两个节点是否可以直接相连2)如果否,则考虑能否通过2条直线相连3)如果否,则考虑3条直线相连2.2,用户操作和消除要有较为友好的动画4)否则就是不可连接2.4,游戏最后要有解1)当出现所有图案均无法连时,游戏会自动洗牌。2)使用拉斯维加斯算法+回溯法初始化有解的棋盘3)内置多种怎么操作都可解的棋盘4)游戏体验上给玩家新增道具消除5)有规律的初始化棋盘三、写在最后的话 一、前言 连连看规则要求 1,相同的卡片可

流星雨的博客 1225

《连连看》算法c语言演示(自动连连看)

(图片是游戏的示意图,来自互联网,与本文程序无关) 看题目就知道是写给初学者的,没需要的就别看了,自己都觉得怪无聊的。 很多游戏的耐玩性都来自精巧的算法,特别是人工智能的水平。比如前几天看了著名的Alpha GO的算法,用了复杂的人工智能网络。而最简单的,可能就是连连看了,所以很多老师留作业,直接就是实现连连看。 连连看游戏的规则非常简单: 两个图片相同。 两个图片之间,沿着相邻的格子画线,...

weixin_33807284的博客 2043

说说连连看游戏的算法设计——寻路篇

这几天正值windows developer preview发布,我就尝了个鲜,结果博文的一些材料就耽误了收集,深表歉意啊。 之前写了连连看的地图生成算法,其中某些方法是网上比较常见的,有的貌似还没发现过,就算是一个整理吧。今天的寻路算法同样是一个整理。 首先,我们要规定连连看认为两个图片是可消除的的条件是什么: 1、两个图片是同一类型的图片; 2、两个图片之间存在...

weixin_34331102的博客 637

《连连看》的算法!

 连连看所要求的是:1:两个目标是相同的 2:两个目标之间连接线的折点不超过两个。(连接线由x轴和y轴的平行线组成) 那么分析一下连接的情况可以看到,一般分三种情况1:直线相连 2:一个折点 3:两个折点 如图: 可以发现,如果有折点,每个折点必定有且至少有一个坐标(x或者y)是和其中一个目标点是相同的,也就是说,折点必定在两个目标点所在的x方向或y方向的直线上。所以设计思路就是: 假设目标点 p

bloveline的专栏 1119

Android连连看游戏源码详解与实战

本文还有配套的精品资源,点击获取 简介:本项目《安卓Android源码——三组图标可调连连看》基于Android平台,教导开发者如何创建一款可调整图标的连连看游戏。项目详细解析了Activity管理、游戏逻辑、图形绘制、资源管理、用户设置界面以及UI设计等多个Android应用开发的关键知识点。 1. Android应用基本架构理解 Android应用基本架构理...

weixin_42608299的博客 2115

连连看 算法 总结

连连看 算法 总结 首先 连连看 是 一款休闲小游戏,非常适合锻炼算法,一门语言的入门 也是不错的, 首先是 匹配算法, 匹配函数需要 接受两个 位置 进行 取得数据进行匹配, 取得数据 就只是 访问数组,因此 只要先判断这两个值 是否一样就 可以进行下一步匹配。 检测函数 很简单 判断结果 是否相同, 是否越界 public 0拐点 分 垂直遍历,水平遍历 垂直遍历: 水平遍历: 1拐点: 一...

zebin的博客 4474

连连看 寻路算法 源码

改变A*寻路算法中的估价函数打造连连看的寻路算法 源码

连连看算法

以前玩连连看游戏的时候就很好奇连连看的实现,后来一直没去深入研究过。最近you'sh

zhouf369的专栏 900

深入浅出卡尔曼滤波器算法

深入浅出讲解卡尔曼滤波器的工作原理及其公式推导,讨论卡尔曼滤波器的核心公式所代表的意义及个人的理解。

m0_37835056的博客 1364

【基金量化研究系列】基金绩效归因模型——Brinson多期归因模型之python实现

文章目录1. 引言2. Brinson多期归因模型的Python实现2.1 基准数据读取模块2.2 持仓数据读取模块2.3 持仓收益与基准计算模块2.4 Brinson多期归因模型核心算法Brinson_Multiple2.5 主函数模块3. 归因结果写在最后 1. 引言 在上文中,我们已经介绍了Brinson归因模型的基本思想。那么,就让我们动起手来,实现这一方法吧! 在Brinson多期归因模型实现的过程中,本文使用模块化方法,将整个实现过程划分为如下五个功能板块: Module 1: 基准数据读取模

Mikey_Sun的博客 2万+

连连看消除算法

 //连连看消除算法:(以具有7行8列的连连看为例)//根据传入的两个点和BOOL型的二维数组mbGrid[9][10] (TRUE代表有图片,FALSE代表无图片)//如果两点可以消去函数返回TRUE,否则返回FALSEBOOL CGameLogic::RemoveAble(int x1, int y1, int x2, int y2)...{    int i,j,k=0;

hizxc的专栏 2813

802.11ax 的OFDMA资源分配详解

802.11ax 引入的最重要的技术就是OFDMA。OFDMA中引入了RU(资源块)概念,也就是20Mhz/40Mhz/80Mhz/160Mhz的带宽可以切割成不同尺寸的RU,分配给不同的用户使用,这样就大大提高了频谱资源的利用率。 常见的RU尺寸有26/52/102/242/484/996,单位是子载波,每个子载波是78.125Khz,这样20Mhz的带宽可以划分为如下图所示的不同RU大小。 按照11ax规范的要求,上下行的数据传输都可以由AP来统一调度,这样上下行的OFDM...

weixin_43408952的博客 1万+

Android 连连看的算法

http://www.eoeandroid.com/thread-70191-1-2.html  改写的连连看算法如下: 前置条件:用一二维数组存放Map 首先是横向检测:private boolean horizon(Point a, Point b) { if(a.x == b.x && a.y == b.y)//如果点击的是同一个图案,直接返回false return f

crane 2499

Jupyter Lab 无法启动 Kernel 问题排查与解决总结

使用 curl,telnet,或 Python websocket-client 库可以本地模拟 WebSocket 握手行为,帮助分析服务端响应状态。避免使用 http:// + ws:// 组合方式部署 Jupyter Lab,特别是在远程或跨域访问场景。建议统一采用 https:// + wss:// 方式部署,确保浏览器信任并兼容。确认 WebSocket 已升级为 wss://,内核可正常启动。但在远程访问时,浏览器出于安全策略,默认拒绝 ws:// 协议。

weixin_43866043的博客 1855

Aurix TC3xx系列MCU ResourceM模块配置(多核资源分配)

为减轻主核的负载率或者平衡各个核的资源分配,通常需要把一些MCU内部资源分配到从核上,在EB tresos工具中,通过ResourceM模块实现多核资源分配。

m0_38045338的博客 1388

连连看全局消除算法

好久没写技术博客了。Iteye依然这么亲切! 内存分析了连连看内部数据,找出了方块摆放的那一段数据,用程序把它读出来,放到一个二维数组里面,构成一个矩阵。 这些数据就做为这个算法的数据基础。 这是今天突发奇想,写出来的代码,结合内存读出来的数据,可以瞬间把连连看里面的方块消得个精光。 开局:   一阵电闪雷鸣,瞬间之后,就变成下面这样子了:   但本篇文章不讲这个外挂程序。只讲...

凌云壮志 1140

芯片测试:WAT、CP、FT

最近部门来了一个日本回来的同事,虽然他尽量用非常Poor的中文给我解释一些东西,其中还夹杂着一些英文让我很受挫,于是最近来学一下WAT中的常用的单词含义。直接去查缩写、查单词很难去记住,要把具体的东西放在具体的场景,引发知识的连接才会在脑子里留下一定的映像。感兴趣的一起来学习一下这篇不错的文章吧。注释是我查询记录,如有不妥,欢迎指出修正。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 5082

Java 实现连连看算法

连连看是个经典的小游戏,规则是:两图案相同的方块在2折以内的线连接下可以消除。里面的算法还是非常有趣,今天来研究一下。 初始化棋盘 假设有一个8*8的棋盘,我们要将其扩充至10*10,为什么?因为这样外围的连接就可以不用越界了。 消除基本条件 判断是否具备消除的基本条件有 3 个 两个方块不能是同一个坐标 两个方块必须是同种类型(图案) 两个方块中不能有任何一个已经消除过的(消除过后的值用 mark 表示) // 判断是否具备消除的基本条件:两个方块不能是同一个坐标;两个方块必须是同种类型;两个方块中

Doge的技术小屋 2035

OP-TEE虚拟化支持详解

OP-TEE虚拟化支持解析 OP-TEE提供实验性虚拟化方案,支持多虚拟机共享安全执行环境。核心特性包括: 配置选项:CFG_VIRTUALIZATION启用虚拟化,CFG_VIRT_GUEST_COUNT限制虚拟机数量并分配均等内存资源; Hypervisor协作:需实现虚拟机生命周期通知、SMC参数转换、内存固定等关键协议; 当前限制:仅支持Armv8架构,硬件资源共享有限,采用静态内存配额机制; 架构实现:通过MMU分区切换和扩展内存分配器实现多租户隔离,Nexus核心层管理虚拟机上下文。该方案适用于

Linux内核架构师 109

第67步 时间序列建模实战:ARIMA建模(Stata)

第67步 时间序列建模实战:ARIMA建模(Stata)

Jet4505的博客 6819

连连看连接算法Javascript版

继连连看连接算法Python版后,我将该算法移植到了Javascript上,为在浏览器版连连看做准备。功能及使用方法参照另外一篇:连连看连接算法Python版。值得一提的是由于Javascript语言没有Java中Map那样的对应的数据结构,所以在实现这样的结构时就要另辟蹊径了,通用的方法应该是构建一个相关的类,并提供相应的方法操作。不过我发现一个简易的方法,适合将字符串(String)与

猫鱼酱 3093

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

连连看算法的实现

 图-: 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0 0, 8, 0, 0, 0, 0, 0, 0 , 0, 0 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0 0, 0, 0, 0, 0, 0, 0, 0 , 0,

1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java连连看算法_关于连连看寻路算法的思路[转载优快云]

图-:0, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 8, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 , 0, 00, 0, 0, 0, 0, 0, 0, 0 ...

weixin_34811804的博客 479

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python连连看_Python 连连看连接算法

功能:为连连看游戏提供连接算法说明:模块中包含一个Point类,该类是游戏的基本单元“点”,该类包含属性:x,y,value。其中x,y代表了该点的坐标,value代表该点的特征:0代表没有被填充,1-8代表被填充为游戏图案,9代表被填充为墙壁模块中还包含一个名为points的Point列表,其中保存着整个游戏界面中的每个点使用模块的时候应首先调用createPoints方法,初始化游戏界面中每个...

weixin_39817122的博客 349
上一篇: 关于yield的一些资料
下一篇: 系统分析与设计读书笔记
WDFrog
博客等级 码龄21年 7粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值