经典论坛's Archiver

ayewhy 发表于 2008-6-28 12:04

求教:一个类似迷宫类的问题

[img]http://space.flash8.net/bbs/attachments/month_0806/20080628_7a0bb3083f17ce11a002K8Ztn3gXi7Lg.jpg[/img]

类似上图的地图,方格是路,我通过键盘控制红点走方格,我想把红点已经走过的路封死,或者說,红点已经走过的路不能再走,
这应该怎么做呢?

flashyiyi 发表于 2008-6-29 21:28

抱歉,图看不到。

这类要注意一点,就是数据与图像最好分离。如果可以最好开个数组来记录路径,而不是控制显示出来的对象。

ayewhy 发表于 2008-6-30 10:54

我之前的思路
一 將走过的坐标x,y记录到一数组1  arr1=[x,y]
二 將数组1存入一个二维数组2,arr2=[[x,y],[x2][y2]]
三 將下一步要走的坐标m,n记录到数组3 arr3=[m,n]
四 然后循环arr2 查找arr2中是否有跟arr3 相同的元素,如果有则是死路。

下面这个是数组对比函数(感谢之前闪吧的朋友的提醒)
function getIndex(arr1,arr2):Number {
        for (var k in arr2) {
                if(arr1.toString()==arr2[k].toString())
                                {
                                        return Number(k);
                                }
                                else return -1;
        }
}
不过arr1.toString的方法好像不通用。不知道有没有其他的方法能实现数组对比?

zijiguang 发表于 2008-6-30 11:29

整张地图就是一个数组;
然后每走一步就设定数组中相应方块的walkable=false;
你自己找区块游戏教程看看..

libins 发表于 2008-6-30 11:54

[quote]原帖由 [i]zijiguang[/i] 于 2008-6-30 11:29 发表 [url=http://bbs.blueidea.com/redirect.php?goto=findpost&pid=4083359&ptid=2867330][img]http://bbs.blueidea.com/images/common/back.gif[/img][/url]
整张地图就是一个数组;
然后每走一步就设定数组中相应方块的walkable=false;
你自己找区块游戏教程看看.. [/quote]
这个方法不错,效率也高~

ayewhy 发表于 2008-7-5 21:08

:D 感谢楼上二位,不过我还是用我自己的土办法,我之前循环写错了

页: [1]



Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.