目录

  • 前言
  • 所要解决的问题
  • 问题分析
  • 解决办法
  • 总结

前言

本文介绍了一种消消乐游戏的核心规则算法,我已经填了N个标签戳,相信你应该不会因为王者荣耀而搜到这篇文章。我们这里只介绍消消乐中关于三个相同颜色的色块成同一直线(横竖都可)的判别算法。


一、所要解决的问题

我们对问题进行简化,如图1所示,不同类型的色块我们用不同的数字表示,当满足消除条件时,用0表示需要消除的色块(伏笔),即图2.

图 1
1 1 1 2
1 2 1 1
1 1 2 2
2 1 2 1
图 2
0 0 0 2
0 2 1 1
0 1 2 2
2 1 2 1

二、问题分析

判别关于三个相同颜色的色块成同一直线的核心问题在于并行的搜索行列中存在的连续相同数字,即在进行列(行)搜索时,不能影响行(列)搜索。举个例子,如图1所示,在进行列搜索的过程中发现第一列前三个元素满足消除的条件,如果这时候对第一列第一个元素进行修改,那么原本满足消除条件的第一行前3个元素,将会因为列搜索时将第一列第一个元素改为0,而影响第一行原本的搜索结果。

三、 解决办法

那么就分而搜索,并行查找。这也是目前很多方法所用到的。即将原矩阵拷贝成两份,分别进行列搜索,行搜索。如图3,4所示

图 3

图 4

接下来核心问题是,如何整合两个搜索结果。大多数解决方法是以其中一个结果为基础,在此基础上去整合另外一个结果。但这通常耗时且效率低,在这我介绍一种巧妙的方法。在这我们先捋一下我们的需求:让列搜索结果知道行搜索结果消除的元素。那么接下来我观察下图3和图4相乘的结果,如图5所示:

图 5
0 0 0
0
0

那如果对非零元素再求根号呢?如图6所示:

图 6
0 0 0 2
0 2 1 1
0 1 2 2
2 1 2 1

是不是正是我们想要得到的结果呢?这只是用到了0*N=0的原理,这里

总结

这是我们团队(河南大学RSBD)举办的编程比赛中的一道题,算法虽然很简单,收获却很大,面对这个问题,很开心我的第一想法不是通过暴力for循环的方式解题,而是相信一定存在规律。

消消乐游戏中,一种巧妙的消除条件判别算法相关推荐

  1. Unity3D动作类游戏中两种相机抖动

    Unity3D动作类游戏中两种相机抖动 在动作类RPG游戏中,为了体现角色的技能和增加动作打击感,我们常常会给相机添加抖动效果来配合特效做一些技能效果. 我在网上搜了一下,然后结合自己的项目总结一下, ...

  2. Java代码实现消消乐游戏中的消除功能

    有n行m列矩阵,每个位置的元素取值(1~9),同一行或者同一列中如果有三个以及三个以上的数字相同时,将改相同的数字全部消除(即改为0) **注意:**同一个数字可能同时在某一行和某一列被消除. 解题思 ...

  3. Java web编写的消消乐游戏 完整源码、下载即可以运行

    今天为大家分享一个java web编写的学生选课系统,目前系统功能已经完善,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步. 开发环境 开 ...

  4. PLARIUM第一个剧情引导类型的消消乐游戏《迷失之岛:消消乐冒险》在IOS和安卓平台上线。

    手机端最大的集身临其境的故事情节和物品收集于一体的消消乐解谜游戏 以色列,特拉维夫 -- (美国商业资讯) -- Plarium,一个手机,社交,网页游戏的开发公司,拥有来自全球2.5亿的玩家,今天宣 ...

  5. Unity甜品消消乐--核心原理

    此游戏为甜品消消乐游戏,会大概说一些核心的算法,如有错误请指出. 思路: 消消乐游戏是一种休闲类的游戏,大家都应该玩过,如上述图片中饼干是障碍物,其他的甜品我们可以来使其数量为三,来使它们消除.最常见 ...

  6. 宾果消消消鸿蒙版,宾果消消消官方版

    游戏介绍 宾果消消消官方版是一款非常好玩的消除游戏,简单的游戏画面,趣味十足的游戏玩法,丰富的游戏关卡,玩家可以在这款宾果消消消官方版游戏中畅玩一夏哦!萌趣的消除玩法,带你体验最酷爽的消除玩法~感兴趣 ...

  7. 宾果消消消鸿蒙版,宾果消消消最新版

    宾果消消消最新版是官方推出的全新版本,在新版本当中将为玩家们推出更多有趣的消除关卡,还有刺激的魔幻冒险在等着你,游戏由著名的影视明星赵丽颖倾情代言哦,全新的三十个关卡给力上线,更加优质的界面拥有华丽的 ...

  8. 开放世界游戏中的大地图的实现——内容制作篇

    https://www.gameres.com/304464.html 开放世界游戏中的大地图的实现--程序技术篇 二.内容制作篇:设计和创造(Content Design & Creatio ...

  9. 开放世界游戏中的大地图的实现——内容制作篇/异次元篇

    转自:https://www.gameres.com/304464.html https://www.gameres.com/304808.html 二.内容制作篇:设计和创造(Content Des ...

最新文章

  1. python处理速度_如何让Python处理速度翻倍?内含代码
  2. Linux centos下项目环境搭建及版本部署
  3. matlab 实现多维作图函数(slice)
  4. 2018-01-17 Antlr4实现简单语言之整数比较表达式
  5. 数字语音信号处理学习笔记——绪论(1)
  6. html5 筛子,html5摇骰子游戏
  7. 信号与系统 chapter1 常见信号及其变换
  8. 866. 试除法判定质数
  9. 从java多态到策略模式_设计模式中的多态——策略模式详解
  10. 【差分隐私组合定理,直方图,列联表代码实现】差分隐私代码实现系列(五)
  11. 基于MPI并行的VTI介质逆时偏移成像与ADCIGs提取
  12. 全网首发:怎样制作CDKEY(4)-生成CDKEY
  13. 【转】科普贴:BIOS和UEFI的启动项
  14. Python实现股票涨跌预测——随机森林模型
  15. TCP/IP协议之struct sock结构体
  16. 宇宙被超级计算机控制,宇宙被超级计算机控制, 欧空局发现一无法解释痕迹, 根本没有...
  17. 面板行业从“渐冻”中复苏,TCL科技大尺寸面板龙头站上C位
  18. 爬虫 【第一章】爬虫基本原理
  19. java使用drawtext重叠_DrawText的使用
  20. 微信小程序存在的风险_微信小程序存在哪些风险

热门文章

  1. Unity性能优化技巧
  2. 阿里云服务器华东地域杭州和上海有什么区别?
  3. 调度算法-多级反馈队列+例题详解
  4. MALT1 抑制剂,1926163-57-6,Z-VRP-DArg-FMK
  5. markdown给图片加背景色
  6. 神经网络中常见的激活函数
  7. 变分自编码器VAE:原来是这么一回事 | 附开源代码
  8. 认识常见中间件-redis(二)-redis缓存雪崩、缓存击穿、缓存穿透
  9. 南方数码iData数据工厂二次开发图层选择
  10. openjdk下载与安装