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

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

編輯:關於C語言

C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(三十五)地圖編輯器的初步使用

上一節我們制作好了地圖編輯器,並初步實現了導出地圖中的障礙物信息及實現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();
}

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