C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十)斜度α地图的构造及算法
2009-06-22 08:32:38 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

如果大家能将上一节中讲解的内容都吸收的话,那么可以将修改的部分与上一节的代码进行对比,再结合本节前部分内容的讲解就会慢慢的理解了(请大家发散自己的思维吧)。
到这我们就完成了该斜度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
更多精彩
赞助商链接