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

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

編輯:關於C語言

4)障礙物數組的導出與導入:

我們可以事先制作好一個XML模板用於存放地圖中的障礙物信息:

<?XML version="1.0" encoding="utf-8" ?>
<Item ID="Obstruction" Value="" />

當繪制出滿意的地圖障礙物並通過A*模擬測試無誤後即可將此時的障礙物數組信息進行導出保存:

//導出障礙物信息文件
private void outputMatrix_FileOk(object sender, CancelEventArgs e) {
 SaveFileDialog outputMatrix = sender as SaveFileDialog;
 string result = "";
 for (int y = 0; y <= ObstructionMatrix.GetUpperBound(1); y++) {
  for (int x = 0; x <= ObstructionMatrix.GetUpperBound(0); x++) {
   if (ObstructionMatrix[x, y] == 0) {
    result = string.Format("{0}{1}", result, string.Format("{0}_{1},", x, y));
   }
  }
 }
 SetXMLValue(Data, "Item", "ID", "Obstruction", "Value", result.TrimEnd(','));
 Data.Save(outputMatrix.FileName);
 MessageBox.Show("導出成功!");
}

以上圖為例,該圖中的障礙物信息導出後的文件內容如下:

這些障礙物數據以x_y的形式命名,並以,號間隔,因此對其重新載入也是非常容易的事:

//導入障礙物信息文件
private void loadMatrix_FileOk(object sender, CancelEventArgs e) {
 OpenFileDialog loadMatrix = sender as OpenFileDialog;
 try{
    XElement XML = XElement.Load(string.Format(@"{0}", loadMatrix.FileName));
    if (XML.HasAttributes) {
      ClearGrid();
      RemoveRect();
      string[] matrix = GetXmlValue(XML, "Item", "ID", "Obstruction", "Value").Split(',');
      for (int i = 0; i < matrix.Count(); i++) {
        SetRect(string.Format("Rect_{0}", matrix[i]), new SolidColorBrush(Colors.Yellow), new SolidColorBrush(Colors.Black), GridWidthSlider.Value, GridHeightSlider.Value, 0, 0, Convert.ToInt32(matrix[i].Split('_')[0]), Convert.ToInt32(matrix[i].Split('_')[1]));
      }
    }
 } catch {
   MessageBox.Show("導入失敗!請檢文件是否匹配");
   e.Cancel = true;
 }
}

至於這些障礙物數據該如何才能為本教程示例游戲所用?嘿嘿~且聽下回分解。

地圖編輯器通過以上的構造及功能設置已初具雛形,但是離真正完整功能的編輯器還是有著非常大的距離。後續教程中我會根據需要,在此編輯器的基礎上不斷添加新功能,目的只有一個:使游戲設計更輕松,更快速。一定要關注哦!

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