基于Pierre Dellacherie的俄罗斯方块-05Pierre Dellacherie算法
基于Pierre Dellacherie的俄罗斯方块-05Pierre Dellacherie算法
Pierre Dellacherie算法感觉上像是一个遍历算法,给与各个参数不同的权重,使得更加合理的摆放方块
评估主要是6个参数:
LandingHeight:下落后的高度,方块最后不能下落之后,方块的重心(也就是中心点的高度),相当于高度越低越安全,我这里并没有记录每一个图形的中心点,统一为高度减去1,如图小方块Z下落之后高度为4,我这里需要重心,我就选择重心 - 1 = 3

ErodedPieceCellsMetric:消除贡献值=消除行数该方块参与消除的格子数。
例如,该情况下消除了2行,该方块提供了2个单位的格子。那么贡献值=2*2=4
RowTransitions:行变换数。按行遍历,从哪一行有方块开始计算,边界定义为有方块,从方块到空记作一次变换,从空到有方块在记作一次变化,如图
从有方块开始计算从上到下一次是4 + 4+2+4
BoardColTransitions:列变换数:同行变换数,只不过换成了按列遍历。(上下两侧算做边界)
BoardBuriedHoles:空洞数,空洞指的是,每列中某个方块下面没有方块的空白位置,该空白可能由 1 个单位或多个单位组成,但只要没有被方块隔断,都只算一个空洞。注意,空洞的计算以列为单位,若不同列的相邻空格连在一起,不可以将它们算作同一个空洞。如图所示

BoardWells:井数,就像是水井一样,空白的个数。井指的是某一列中,两边都有方块的连续空格,(左右两边看做实体)一定要注意两边都有方块才能看做是井。还需要注意井深度,井的深度是连续累加的。如图所示最右边深度为2,就是1+2,需要把井的深度做累加,如图所示已经标识的很清楚

权重的话,有人用小数,我这里为了方便计算全部乘以10作为整数计算了
#define LANDINGHEIGHT -45
#define ROWSELIMINATED 34
#define ROWTRANSITIONS -32
#define COLUMNTRANSITIONS -93
#define NUMBEROFHOLES -79
#define WELLSUMS -34
函数为:nValue = -45 × landingHeight + 34 × erodedPieceCellsMetric - 32 × boardRowTransitions - 93 × boardColTransitions - 79 × boardBuriedHoles - 34 × boardWells
即使所有数都会是负数,nValue 值大的为最优位置
如果出现两个局面评分相同那怎么办?这个时候需要加入一个计算优先度的函数,这个也很简单。公式: nPriority=100 * 板块需要水平移动移动的次数 + 板块需要选择的次数
PD算法的设计是 如果板块摆放再游戏区域的左侧优先度要加上10,那是因为他的那个游戏横向的小方格数量是10个,是一个偶数,而他的中心点在6这个位置。nPriority值小的为最优位置
以上就是Pierre Dellacherie算法的全部内容
获取某方块的所有形态可以放置的所有位置这个才是难点
基本的实现步骤是:
先确定总共有40中可能(方块为4中旋转方式,依照我这个方式来说,每一种可以摆放的列的位置是 0-9,因为有的方块的左侧是空白的,所以是0开始,方块最窄也是2,所以结尾是0)
行的话从上往下依次下降直到最后不能下降为止,就记作当前图形
得到所有形态可以放置的所有位置,计算各个参数
计算所有位置的nValue 值和nPriority值
比较值的大小找到最优位置
基于Pierre Dellacherie的俄罗斯方块-05Pierre Dellacherie算法的更多相关文章
- 基于OpenSLL的RSA加密应用(非算法)
基于OpenSLL的RSA加密应用(非算法) iOS开发中的小伙伴应该是经常用der和p12进行加密解密,而且在通常加密不止一种加密算法,还可以加点儿盐吧~本文章主要阐述的是在iOS中基于openSL ...
- 基于Matlab的MMSE的语音增强算法的研究
本课题隶属于学校的创新性课题研究项目.2012年就已经做完了,今天一并拿来发表. 目录: --基于谱减法的语音信号增强算法..................................... ...
- 美团网基于机器学习方法的POI品类推荐算法
美团网基于机器学习方法的POI品类推荐算法 前言 在美团商家数据中心(MDC),有超过100w的已校准审核的POI数据(我们一般将商家标示为POI,POI基础信息包括:门店名称.品类.电话.地址.坐标 ...
- 基于模糊Choquet积分的目标检测算法
本文根据论文:Fuzzy Integral for Moving Object Detection-FUZZ-IEEE_2008的内容及自己的理解而成,如果想了解更多细节,请参考原文.在背景建模中,我 ...
- 五种基于RGB色彩空间统计的皮肤检测算法
最近一直在研究多脸谱识别以及如何分辨多个皮肤区域是否是人脸的问题 网上找了很多资料,看了很多篇文章,将其中基于RGB色彩空间识别皮肤 的统计算法做了一下总结,统计识别方法主要是简单相比与很多其它基于 ...
- 《基于Arm实验箱的国密算法应用》课程设计 结题报告
<基于Arm实验箱的国密算法应用>课程设计 结题报告 小组成员姓名:20155206赵飞 20155220吴思其 20155234昝昕明 指导教师:娄嘉鹏 设计方案 题目要求:基于Arm实 ...
- 20155234 昝昕明《基于ARM实验箱的国密算法应用》课程设计个人报告
20155234 昝昕明<基于ARM实验箱的国密算法应用>课程设计个人报告 个人贡献 参与课设题目讨论及完成全过程: 资料收集: SM1算法及和ARM之间通信 负责串口代码调试: 协调完成 ...
- 基于OpenSSL的RSA加密应用(非算法)
基于OpenSSL的RSA加密应用(非算法) iOS开发中的小伙伴应该是经常用der和p12进行加密解密,而且在通常加密不止一种加密算法,还可以加点儿盐吧~本文章主要阐述的是在iOS中基于openSL ...
- 硕毕论文_基于 3D 卷积神经网络的行为识别算法研究
论文标题:基于 3D 卷积神经网络的行为识别算法研究 来源/作者机构情况: 中 国 地 质 大 学(北京),计算机学院,图像处理方向 解决问题/主要思想贡献: 1. 使用张量CP分解的原理, ...
- 基于搜索的贝叶斯网络结构学习算法-K2
基于搜索的贝叶斯网络结构学习算法-K2 2018-04-05 19:34:18 ItsBlue 阅读数 3172更多 分类专栏: 贝叶斯网络 网络结构学习 版权声明:本文为博主原创文章,遵循CC ...
随机推荐
- STM32F103 的 USART5使用
STM32F103zet6 的串口5是UART5 不是 USART5
- http和https有什么区别?网站有没有必要启用https
最近在浏览文章的时候发现,很多站长都在纠结网站到底要不要做https的问题.作为个人站长,也一直关注着这块.最近查阅了很多资料,对https也有了更进一步的认识,这里对https的有关问题做了一个总结 ...
- Java面向对象编程:多态(自我理解)
多态 (1)概念:同一个行为具有多个不同表现形式或形态的能力:就是同一个接口,使用不同的实例而执行不同的操作. (2)优点:消除类型之间的耦合关系:可替换性:可扩充性:接口性:灵活性:简化性: (3) ...
- 编辑器(Editor) vs 集成开发环境(Integrated Development Environment,下文简称 IDE)
编辑器(Editor) vs 集成开发环境(Integrated Development Environment,下文简称 IDE) 经常看到一些程序员拿编辑器和 IDE 进行比较,诸如 Vim 比 ...
- react实现某个元素节点截图(html2canvas)
1.安装所需插件:html2canvas: 2.引入插件: import html2canvas from 'html2canvas'; 3.使用: const creatImg = () => ...
- 二叉树系列之Treap树
Treap是一棵拥有键值.优先级两种权值的树 struct node{ int size;//以这个结点为根的子树的结点总数量,用于名次树 int rank;//优先级 int key ...
- wpf 使用了 template 了的 combobox 中,displaymemberpath 有 bug,仅在 popup 中生效
需求是:仅想改变combobox的默认样式,所以 template 是直接在属性窗口点击转化为本地值的. using System.Collections.Generic; using System. ...
- Jmeter七、jmeter中的参数化
参数化是为了更好的模拟真实的业务场景 CSV data set config组件 1.更容易使用和理解 2.适合大参数量场景 3.设置方便灵活 EOF=end of file 没有找到文件 comma ...
- clamav测试用例 API
最近接触到clamav这一块,本身是一个很简单的任务,只需要调用他的API对文件进行检测即可,但是在进行大量搜索发现,网上最多只有API的讲解,且质量层次不齐,这可为难住我了,作为一个名副其实的&qu ...
- .netCore Nuget包引用记录
1.画图 System.Drawing.Common 2.