首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Vertex[]转换为图形

将Vertex[]转换为图形
EN

Stack Overflow用户
提问于 2013-05-18 21:05:24
回答 2查看 108关注 0票数 0

我正在制作一款吃豆人游戏,目前我正在开发幽灵AI。我计划使用Dijkstra的算法进行寻路。我的问题是,当我的游戏加载时,图的顶点存储在一个矩阵中。我试着像这样给每个顶点分配它的所有边

代码语言:javascript
复制
    for(int x = 0; x<40; x++)
    {
        for(int y = 0; y<40; y++)
        {
            Vertex vertex = map[x][y];
            vertex.adjacencies = new Edge[]{new Edge(map[x-1][y], 1), new Edge(map[x+1][y], 1), new Edge(map[x][y-1], 1), new Edge(map[x][y+1], 1)};
        }
    }

问题是它有时会抛出数组越界异常。我如何解决这个问题,而不是放入大量的if语句来检查当前顶点是否在图的边缘?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-18 21:10:31

一种简单的方法是在边缘周围包含一个不可遍历的边界。

例如,如果您的实际map是40x40,则可以声明一个42x42数组。行0和n是不可遍历的,列0和n也是不可遍历的。

你仍然需要处理吃豆人在左边和右边之间的圆柱形旅行。

票数 0
EN

Stack Overflow用户

发布于 2013-05-18 21:10:05

你应该以1的“边框”开始你的循环,如下所示:

代码语言:javascript
复制
for(int x = 1; x < 39; x++)

因为,当您使用mapx-1创建边时,当x开始为0时,它会将-1作为数组索引,因此会抛出array Out Bound异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16624576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档