作者ddavid (谎言接线生)
看板GameDesign
标题Re: [程式] 圈地面积 最小面积取得相关 (方向判定)
时间Wed Feb 27 04:06:24 2013
不要想那麽多,这图的大小没有大到哪去,所以最简单的做法就是假设你是一张
1024*768的图,那你就开个1024*768的阵列。阵列里面可能有几种值(只是举例):
0:还没被圈过的点
1:已经被圈起来清掉过的点
2:正在被你画圈经过的点
你没看错,就直接把你画过的点全部trace过去填2记下来,不管直走横走斜走都
一样,直到你发现接下来要走到的点旁边有另一点值是1,表示你圈到一个范围了,
就随便找一个为0的点跑floodfill,边界可以是1或2。被floodfill过的点全填3标记
起来。
3:可能要被清掉的候选点
怎麽决定floodfill下去要清掉哪一边?事实上图的面积你一开始就是知道的,
然後每一次清掉的点数量也可以记录,所以事实上随时你都知道你图还剩多少面积没
被清掉。因此你就比较:
本次floodfill的面积
(目前总面积 - 本次floodfill的面积)
这两个值。前者面积小,就把目前标2跟标3的清掉(标成1)。这表示你一开始
乱猜去做floodfill的那边真的比较小。
如果後者面积小,就把标0跟标2的清掉(标成1),然後把3恢复成0。这表示你
一开始猜错边了,那就把另一边的全清掉。
事实上开阵列有些好处,除了你可以很简单知道你目前还可不可以往某方向走(
只有标为0而且旁边有1的点是未清的边界可以用来「移动」,只有标为0且旁边没1的
点是未清而且非边界的点可以用来「圈」)以外,天蚕变游戏其实常有些额外规则如
:
1. 如果你清掉太大块背景图的主要目标区(哎,常见的就是那个美女本身啦XD)但
游戏还没结束,会有些惩罚。(像我看过不少原本下面应该要是美女图,但是你如果
直接把美女的部分清一大块出来,背景就会变成超丑恶心图之类的,在这种情况下清
光算失败XD)
2. 当把背景图中主要的部分清到80%(或90%之类的,不一定)以上就算过关了,但
这时就要依那个比例来计算最後的奖励如分数、加残机数或是奖赏图的养眼程度(爆
)。
类似像这样的额外规则,你直接有个全pixel的阵列就很好做,直接把清掉的部
分And一个跟全图同大小的主要目标遮罩然後统计数量就好。要是你用向量啊线段啊
顶点啊啥有的没的去算在里面在外面在上面,会烦死XD
对於秀图也有好处。你直接把这个阵列当成一种遮罩,考虑是0非0就知道你剩下
的图该秀哪些部分了。
这也许不是唯一的方法,也不是效能一定最好的方法,不过应该很直观好做XD
--
「珍贵的回忆?还不是跟梦一样虚幻不实的东西?你想要什麽样的回忆,我帮你
做出来啦!」
--艾蜜思,谎言事务所实现使者
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.167.118.171
※ 编辑: ddavid 来自: 118.167.118.171 (02/27 04:25)
1F:推 euph:先感谢您的回文 我好好来研究一下 02/27 09:35