C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十五)地图编辑器的初步使用
2010-09-30 21:01:14 来源:WEB开发网上一节我们制作好了地图编辑器,并初步实现了导出地图中的障碍物信息及实现A*模拟寻路。那么当我们得到了包含有障碍物数据信息的xml文件后,又该如何将之应用到本教程的示例游戏中呢?
本节还是以上一节的那幅地图为例,我们首先通过编辑器载入该地图并在上面描绘出所有障碍物:
图片看不清楚?请点击这里查看原图(大图)。
然后点击导出障碍物按钮,我们将得到一个包含有类似如下信息的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();
}
Tags:开发 WPF Silverlight
编辑录入:爽爽 [复制链接] [打 印]- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WPF学习笔记12. Binding (5)
- ››WPF学习笔记11. Binding (4)
- ››WPF学习笔记10. Binding (3)
- ››WPF学习笔记9. Binding (2)
- ››WPF学习笔记8. Binding
更多精彩
赞助商链接