// 从posi开始查找,寻找在arr中的同类元素
function _findSame(arr, posi, predicate) {var w = arr[0].length;var h = arr.length;predicate = predicate || function(el) {return el === arr[posi.y][posi.x]};var dict = {};var rst = [];find(posi);return rst;function find(posi) {if (dict[_hash(posi)]) {return;}var currEl = arr[posi.y][posi.x];if (!predicate(currEl))return;dict[_hash(posi)] = true;rst.push(posi);var x = posi.x,y = posi.y;var posiArr = near(posi);_.each(posiArr, function(n, i) {if (isOut(n, w, h))return;find(n);});}
}function near(posi) {var x = posi.x,y = posi.y;return [{x: x,y: y - 1}, {x: x,y: y + 1}, {x: x - 1,y: y}, {x: x + 1,y: y}];
}function isOut(posi, width, height) {return posi.x < 0 || posi.x >= width || posi.y < 0 || posi.y >= height;
}function _hash(x, y) {if (undefined == y) {return _hash(x.x, x.y);}return 10000 * x + y;
}

以下是代码demo(请注意,坐标原点在左上角)

/*TEST
*/var logArr = function(arr) {console.log(arr.map(function(el) {return el.x + "-" + el.y;}).join("\n"));
};var arr = [[1, 1, 1],[2, 2, 1],[3, 3, 1]
];var rst = _findSame(arr, {x: 0,y: 0
});
logArr(rst);var rst2 = _findSame(arr, {x: 0,y: 0
}, function(el) {return el == 1 || el == 2;
});
logArr(rst2);

以下是结果

三消游戏的一个重要帮助函数相关推荐

  1. 三消游戏查找算法的原理和实现

    本文首发于公众号: 小蚂蚁教你做游戏.欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识. 嗨!大家好,我是小蚂蚁. 今天这篇文章分享一下三消查找算法的原理和实现,其实三消的机制最早源于 ...

  2. 简单述三消游戏逻辑:

    讲述三消游戏逻辑: 项目简介:支持六种元素,以及障碍元素,行,列,彩虹特殊道具 核心就是填充算法和一个匹配算法: 填充: 本文采用分步填充(即一次只向下移动一个单位) public bool Fill ...

  3. 关于年会抢红包游戏的一个思考

    1. 游戏介绍 0x1:游戏规则 该游戏名叫红包接龙,规则如下: 年会会场内所有人都通过钉钉群的方式参与该游戏,会场人数一般为200~300人(大部分能时候是超过红包最大拆分份数): 1. 由老板发出 ...

  4. 一款java的篮球游戏_NBA-BASKETBALL 一个非常有趣的nba 篮球游戏 简单操作容易上手代码值得学习 Game Program 238万源代码下载- www.pudn.com...

    文件名称: NBA-BASKETBALL下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 5441 KB 上传时间: 2014-01-20 下载次数: 1 提 供 ...

  5. 【UE4】模仿《黑暗之魂》系列游戏制作一个简单的锁定敌人的功能

    这是我拆解游戏项目的CameraSystem做出的一点点小总结,然后写了一个非常非常简单的锁定敌人的功能: 第一步:设置敌人属性,标志为可被锁定 创建一个敌人蓝图,随便搞个模型进去 创建一个接口蓝图, ...

  6. 转珠游戏-三消游戏-智龙迷城-神魔之塔-转珠算法的实现(一)-combo计算

    转珠游戏算法1-combo计算 转珠游戏介绍 智龙迷城 最短路径? 消珠问题简化 算法实现 CODE (C++) 结论 转珠游戏介绍 转珠游戏不同于传统三消游戏,传统三消是通过单次移动(移位)消除相连 ...

  7. c语言写游戏用那些函数,c语言做游戏常用到的一些函数大全2011.doc

    PAGE / NUMPAGES C语言做游戏常用到的一些函数大全 2010-10-10 14:10| (分类:默认分类) 原文:C语言做游戏常用到的一些函数大全 时间延迟函数函数名: delay功 能 ...

  8. python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

    python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...

  9. cocos2d-x 3.4 vs+cocostudio类神经猫三消游戏《Rabbit Escape》

    Hi,好久不见,在最近的一周里面,自己在着手写一个之前很火的小游戏 围住神经猫,当然首先还是先去网上看了一下关于怎样制作这个小游戏的教程,在cocos开发者平台上找到了类神经猫三消游戏<Rabb ...

最新文章

  1. 数据查询和业务流分开_数据仓库介绍与实时数仓案例
  2. [ARM-assembly]-ARMv8-A64指令集总结和学习
  3. ubuntu mysql 多端口_ubuntu 16.04下mysql5.7.17开放远程3306端口
  4. LeetCode 1109. 航班预订统计(差分思想)
  5. (3)FPGA开发语言介绍(第1天)
  6. Android 系统(160)---Android 32/64 bits 升级准则
  7. Vue——知识体系总结
  8. elcipse 编译cocos2d-x android
  9. 关于微信和微信小程序
  10. SQL注入攻击原理与防御措施
  11. 数学逻辑习题集(1)
  12. OpenGL ES glad 下载和使用
  13. SteamVR Unity工具包(VRTK)之概览和控制器事件
  14. DOM初探(16)——查看元素的集合尺寸
  15. deepin深度操作系统
  16. 计算机英语与普通英语,计算机英语和普通英语有什莫不同? – 手机爱问
  17. oracle安装在非图形,非图形化静默安装Oracle 11g
  18. 【Linux】Protected multilib versions XXX错误
  19. 怎样让一个正常人理解“线性代数”
  20. 大数据四大常识,你知道多少

热门文章

  1. PHP课程网站络管理系统(源代码+论文)
  2. 阿里云安装mysql、nginx、redis
  3. CAD2015提示未安装.net4.5
  4. 2022年T电梯修理考试题库及模拟考试
  5. Linux服务器配置与管理(基于Centos7.2)任务目标(四)
  6. 进制转换(Q进制转换成T进制)详解版
  7. matlab 专业分流系统(2)
  8. 基于highway-env的DDPG-pytorch自动驾驶实现
  9. 26岁离开国企,身背巨债,凭着满腔热血,涅槃重生
  10. 服务器的安装与维护技巧——数据湾