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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十二)神奇的副本地图

 2009-06-22 07:08:39 来源:WEB开发网   
核心提示: 上面代码已经进行了很详细的描述:首先我在鼠标左键事件中判断点击的地方是否是障碍物(点击的点在副本地图中是否是黑色的),是的话主角就不移动,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十二)神奇的副本地图(5),否则就启动简单的直线移动,接下来我

    上面代码已经进行了很详细的描述:首先我在鼠标左键事件中判断点击的地方是否是障碍物(点击的点在副本地图中是否是黑色的),是的话主角就不移动,否则就启动简单的直线移动。接下来我们需要设置几个变量它们分别存储副本地图的图片源、主角的X,Y精确坐标以及主角最终移动目的点。设置好后最后就是在界面线程中时时获取主角的X,Y坐标,并且判断主角当前位置是否是障碍物了。如果是则将当前的移动由普通直线移动转换成A*寻路移动;同时我们还可以判断如果是黄色的话则传送到点(200,20),当然大家还可以设置其他很多颜色来启动相应的事件,是不是很神奇?嘿嘿。

    下面两图分别是采用A*寻路的主角移动和改进型的A*寻路(直线移动+A*寻路)的主角移动:

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十二)神奇的副本地图

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十二)神奇的副本地图

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

从上图可以明显看到,单纯的使用A*进行主角移动及饶过障碍物是不自然的,路线很机械且并不真实。而通过直线移动+副本地图+A*实现的改进型A*寻路所实现的主角移动则可谓几乎接近完美,与现实吻合。

    这里要顺带提一下的是:本节只为演示需要所以我使用的副本地图只有一窗口大小,因此当主角移动到窗口外时pickColor()方法的参数X,Y超出了副本地图的大小导致抛出异常并使程序关闭这是肯定的而并非BUG,这样也同样证明了pickColor()方法的正确性。

上一页  1 2 3 4 5 6  下一页

Tags:开发 WPF Silverlight

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