WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十五)地图编辑器的初步使用

 2010-09-30 21:01:14 来源:WEB开发网   
核心提示:上一节我们制作好了地图编辑器,并初步实现了导出地图中的障碍物信息及实现A*模拟寻路,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十五)地图编辑器的初步使用,那么当我们得到了包含有障碍物数据信息的xml文件后,又该如何将之应用到本教程的示例游戏中呢?本节还是以上一节的那幅地图为

上一节我们制作好了地图编辑器,并初步实现了导出地图中的障碍物信息及实现A*模拟寻路。那么当我们得到了包含有障碍物数据信息的xml文件后,又该如何将之应用到本教程的示例游戏中呢?

本节还是以上一节的那幅地图为例,我们首先通过编辑器载入该地图并在上面描绘出所有障碍物:

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十五)地图编辑器的初步使用

图片看不清楚?请点击这里查看原图(大图)。

然后点击导出障碍物按钮,我们将得到一个包含有类似如下信息的xml障碍物数据文件:

<Item ID="Obstruction" Value="240_0,241_0,238_1,239_1,240_1,236_2,237……>

接下来打开示例游戏项目中的Config.xml配置文件,并找到<Map Sign="1">这个代表1号地图的节点。在此节点中增加一个名为Obstruction的属性,并将刚才导出的障碍物数据信息xml文件里的Value值复制到Obstruction属性值内,最后的修改结果如下:

<Map Sign="1" Obstruction="240_0,241_0,238_1,239_1,240_1,236_2,237……>

障碍物设定完后,我们还需要在地图障碍物初始化中读取它:

        //障碍物固定值与变动值(二维矩阵)
        byte[,] FixedObstruction = new byte[256, 256], VaryObstruction;
        /// <summary>
        /// 初始化障碍物
        /// </summary>
        private void InitObstruction() {
            for (int y = 0; y < FixedObstruction.GetUpperBound(1); y++) {
                for (int x = 0; x < FixedObstruction.GetUpperBound(0); x++) {
                    //设置默认值,可以通过的均在矩阵中用1表示
                    FixedObstruction[x, y] = 1;
                }
            }
            string[] obstruction = Super.GetTreeNode(
Super.SystemConfig, "Map", "Sign", "1").Attribute("Obstruction").Value.Split(',');
            string[] str;
            for (int i = 0; i < obstruction.Count(); i++) {
                str = obstruction[i].Split('_');
                FixedObstruction[Convert.ToInt32(str[0]), Convert.ToInt32(str[1])] = 0;
            }
            VaryObstruction = (byte[,])FixedObstruction.Clone();
        }

1 2  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接