程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(十)(5)

C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(十)(5)

編輯:關於C語言

嘿嘿,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*尋路在不同模式地圖中可以完全忽略基本單元格的樣式(無論是正方形的,或是菱形的,甚至六邊形的)可謂無所不能,想想斜α地圖在實際游戲開發中的運用幾乎無處不在,這難道不是莫大的成就嗎?

至此,關於地圖表層的基礎知識基本都講解完了,地圖構造原理涉及的知識方方面面,有人就打這樣的比方:一個好的地圖編輯器決定著一款游戲的成功與否,這毫不為過。所以我們離真正完成它還有很長的路要走。下一節我將介紹如何實現地圖的遮罩效果,敬請關注。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved