最近在做一个功能模块,它实现的功能是:回合制行走。。每一个回合只能走一步, 只能沿着周围相邻的地方走,不能跳着地图块走。。如何编写cocos2dx代码防止用户跳着走。
简单的说:就是想实现每回合能走的地图是可以点击的,不能走的是无法点击的。想了几天了,还是没头绪。。。在线等大神来解答,,五一妥妥的要加班的节奏
附上地图一张:

刚看了一下其他帖子,都是菜鸟者居多,大神局少,,,,
帖子别沉!!
难道是我表达能力太差,,,大神们都没看懂我的意思??:964:
每个地图块持有相邻地图块的指针或者ID如何?
能不能再具体点?id如何实现呀
ID就是1,2,3,4,5,6
肯定有更好的办法的
我和3楼的想法好像一样,哈哈
配置关卡的时候,给每个地图配置好它相邻的所有地图ID,当然玩家走到当前地图的时候,就点亮它的相邻地图~
走到下一个地图的时候,把上一次点亮的地图变暗,然后继续把自己的相邻地图点亮~
这个应该是最简单粗暴的方法吧
最简单就是建立个每个地图块所相邻地图块id的配置表
每走一步都要进行点亮地图和熄灭地图,判断会不会太复杂了眻
恩恩,然后捏?
因为在配置关卡的时候就已经把各个地图的相邻地图ID配置好了,是固定的~
不需要在每一步的时候再实时判断谁是它的相邻地图,所以不会消耗什么时间
不过,这样处理的话,配关卡的时候貌似挺麻烦的,毕竟要自己去给每个地图填写它的相邻地图ID,万一关卡很复杂的话…(呵呵
)
然后,反过来,应该就是你说的那样了,每走一步就实时判断当前地图的相邻地图有哪些(碰撞检测),然后进行点亮和点暗操作
这样就不知道效率如何了,没试过~
如果效率可以忍受的话,我觉得我会选择这种方式,这样配关卡方便很多~(好吧,懒人专用)
突然想到两种的结合吖,嘿嘿,在进入关卡的时候,给所有地图初始化,初始化要做什么呢?
就是计算它们的相邻地图,然后保存起来,这样以后就可以随时获取,不需要实时计算了。
最终我还是没有用碰撞检测,我用的是id,最简单的逻辑判断if语句。。。自己写逻辑还是很花时间吖:904:
不晓得还有没更好的办法?:898:
如果id是 有规律的数值的话
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
这样的话 那 判断是否相邻 就是ID ±1 和 ±5 就不用每个都配相邻了。 觉得这样可以么? 如果是不规律的就没啥太好的办法,只能配了。