C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十)斜度α地图的构造及算法
2009-06-22 08:32:38 来源:WEB开发网如果大家能将上一节中讲解的内容都吸收的话,那么可以将修改的部分与上一节的代码进行对比,再结合本节前部分内容的讲解就会慢慢的理解了(请大家发散自己的思维吧)。
到这我们就完成了该斜度60的地图构造。按Ctrl+F5看看我们的成果吧:
图片看不清楚?请点击这里查看原图(大图)。
嘿嘿,A*寻路将我们的路径描绘得非常明显,显然主角是沿着这样一条斜度60的路线饶过这个片菱形障碍物区域的。而因为此例我将W(0,0)点和G(0,0)都定位在窗口的左上角,所以根据本节前部分关于G坐标系的讲解,上图中红色的区域即为含有负值的区域,所以不被寻路方法所识别。您可以尝试对该区域进行点击,它将告诉您路径不存在,从而也证明了我们这个坐标系的构建是成功的。
最后为了让朋友们能更好的理解比较,我将本节例子中的障碍物代码拷贝替换掉上一节的障碍物代码,并将菱形换回成正方形,代码如下:
//构建障碍物
for (int x = 10; x < 20; x++) {
for (int y = 0; y < 10; y++) {
Matrix[x, y] = 0;
rect = new Rectangle();
rect.Fill = new SolidColorBrush(Colors.GreenYellow);
rect.Opacity = 0.3;
rect.Stroke = new SolidColorBrush(Colors.Gray);
rect.Width = GridSize;
rect.Height = GridSize;
Carrier.Children.Add(rect);
Point p = getWindowPosition(x, y);
Canvas.SetLeft(rect, p.X);
Canvas.SetTop(rect, p.Y);
}
}
然后大家可以尝试运行一下新的Window9.xaml,运行效果图如下:
图片看不清楚?请点击这里查看原图(大图)。
同样的障碍物代码在第九节的直角地图坐标系中是垂直方型显示的,而在本节中则为菱形方式显示。同样证明了本节斜度α地图的成功构造!
Good idea!难道不是吗?嘿嘿,比较复杂也是非常重要的一节。如果你能掌握它,想想A*寻路在不同模式地图中可以完全忽略基本单元格的样式(无论是正方形的,或是菱形的,甚至六边形的)可谓无所不能,想想斜α地图在实际游戏开发中的运用几乎无处不在,这难道不是莫大的成就吗?
至此,关于地图表层的基础知识基本都讲解完了,地图构造原理涉及的知识方方面面,有人就打这样的比方:一个好的地图编辑器决定着一款游戏的成功与否,这毫不为过。所以我们离真正完成它还有很长的路要走。下一节我将介绍如何实现地图的遮罩效果,敬请关注。
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
更多精彩
赞助商链接