找回密码
 点一下
查看: 1387|回复: 4

关于不能重复访问建筑

[复制链接]
发表于 2009-9-9 11:17:35 | 显示全部楼层 |阅读模式
上火车前最后一贴

英雄无敌里+攻击 属性的建筑 每个英雄只能访问一次,如何限制每个建筑只能让英雄访问一次呢?

最开始我用的单位组,访问一个就添加进组,但是那样的话需要很多很多组,而且测试的时候莫名其妙的失灵,第一次访问就失败

后来我用的自定义值,每个英雄有一个质数的附加值,每个建筑初始自定义值为1,访问后,设置建筑自定义值乘以英雄对应的质数
那样 每次判断是否建筑的值能否被整除就能知道是否访问了,但是那样的话,每个种类的英雄就只能招募一个,死亡骑士阵亡了,以后的所有死亡骑士就都无法访问了,很郁闷   大家觉得呢
发表于 2009-9-9 12:02:09 | 显示全部楼层
很简单,你反过来就可以了。把自定义值保存在英雄身上而不是建筑上就可以。

这样可以记住这个英雄访问过那些建筑。你既然模拟英雄无敌,那么地上摆放的中立建筑必然预置且固定的。
回复

使用道具 举报

发表于 2009-9-9 17:03:43 | 显示全部楼层
头目的方法正解……
不过如果建筑过多
那么依次乘以的话
直接溢出了……
毕竟素数之间的间隔是几何增加的
所以使用素数不如使用2进制
方法如下
先为每个出现的英雄编号,无论类别,出现一个算一个
依次自定义值从1开始依次加1
如果一个英雄没有访过某个建筑,就设置建筑自定义值+上2^英雄的自定义值
判断是否访问过
也不复杂,如果设建筑的自定义值为M,英雄的为N
那么如果M/(2^N)-M/(2^N+1)*2==1
那么就是访问过了
运算就是求M的二进制中,第N位是否为1

这样的方法只能保存30个英雄(整数的最大值为2^31-1,再多久溢出了)
回复

使用道具 举报

发表于 2009-9-9 18:36:01 | 显示全部楼层
应该是很多很多单位组的比较好啊………………
LZ应该是T出了问题吧………………
回复

使用道具 举报

发表于 2009-9-9 19:07:31 | 显示全部楼层
小血你没玩过魔法门
英雄是可能后招的
然后单位组没法动太创建
恩恩
LZ只会T呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-25 21:17 , Processed in 0.044426 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表