读书人

求宝石迷阵获得可移动位置的算法,该如

发布时间: 2012-05-09 12:13:59 作者: rapoo

求宝石迷阵获得可移动位置的算法
我在做一个宝石迷阵的算法,现在的迷阵的布局如下,我应该如何做才可以获得可以移动的点,也就是获得这张地图上的[4,2]和[3,6]这2个点(红色标注)
{ 7, 4, 7, 4, 8, 6, 6, 5 },
{ 3, 6, 5, 3, 2, 7, 2, 3 },
{ 1, 8, 2, 4, 1, 8, 2, 4 },
{ 2, 4, 5, 6, 7, 2, 1, 2 },
{ 4, 4, 3, 4, 4, 3, 5, 5 },
{ 8, 3, 4, 2, 4, 7, 1, 1 },
{ 4, 5, 4, 2, 8, 2, 4, 5 },
{ 7, 3, 1, 6, 3, 2, 3, 1 }

想来半天也没想出好的办法,求各位大大指点下。

[解决办法]
按照你的游戏规则规定的可消除移动动作来判断嘛。

最基本的最不考虑效率的算法可以这样:

C/C++ code
 遍历每一个位置[i, j]       <-----------------------------------------------------+       |                                                                          |       |                                                                          |      \|/                                                                         |方向 dir 循环 上 下 左 右   <-------------------------------------------------+   |       |                                                                      |   |      \|/                                                                     |   |移动 dir 方位的值到当前位置                                                   |   |       |                                                                      |   |      \|/                                                                     |   |判断当前位置与 dir 垂直方面没有三个以上连续同值的元素-------无----------------+   |       |                                                                          |       |                                                                          |       | 有                                                                       |       |                                                                          |      \|/                                                                         |此元素可移动并消除,跳出 dir 循环                                                 |       |                                                                          |       |                                                                          |      \|/                                                                         |判断是否还有位置没有遍历 --------------有-----------------------------------------+       |         | 无       |        \|/      结束
[解决办法]
虽然没细看,不过ls的字符画很好很强大

五子棋做过么,类似的处理啊,遍历每个点,看如果把这个点的上下左右的子交换过来,是不是能够有3子或更多子相连,不就可以了么
如果要优化一下可以遍历以后返回相连子数最多收益最大的方案

不是很清楚lz的疑惑在哪里啊~~~

读书人网 >软件架构设计

热点推荐