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

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

編輯:關於C語言

2)混

本示例教程中我將之定義為使精靈隨機亂向跑動。此附加屬性非常有趣,實現起來也很簡單,我們只需將精靈的移動目標進行重新隨機更改,即為直線移動方法與A*移動方法開頭添加如下一個判斷處理即可:

if (spirit.ExtraTime[1] > 0) {
 p = new Point(p.X + (p.X > spirit.X ? -random.Next(200) : random.Next(200)),
 p.Y + (p.Y > spirit.Y ? -random.Next(200) : random.Next(200)));
}

測試效果截圖:

3)冰:

本示例教程中我將之定義為使精靈移動速度、攻擊速度、施法速度減速。大家回憶一下第二十八節中關於精靈屬性的設計,其中精靈的所有類型屬性均由4個部分組成,以下為這3個速度屬性的構造定義:

/// <summary>
/// 獲取跑步速度(每移動一個單元格的花費時間,越小越快)
/// </summary>
public double VRunSpeed {
 get { return ABase[5] + Equip[5] + Buff[5] - VAgile * CoefficIEnt[5]; }
}
/// <summary>
/// 獲取物攻速度(越小越快)
/// </summary>
public double VAttackSpeed {
 get { return ABase[6] + Equip[6] + Buff[6] - VAgile * CoefficIEnt[6]; }
}
/// <summary>
/// 獲取施法速度(越小越快)
/// </summary>
public double VMagicSpeed {
 get { return ABase[7] + Equip[7] + Buff[7] - VAgile * CoefficIEnt[7]; }
}

其中的Buff即為附加屬性影響的部分。了解了原理,將之轉換成機器語言即為:

enemy.Buff[5] = enemy.ExtraEffect[magic.ExtraAttribute];
enemy.Buff[6] = enemy.ExtraEffect[magic.ExtraAttribute];
enemy.Buff[7] = enemy.ExtraEffect[magic.ExtraAttribute];

當判斷冰凍持續時間減為0後,我們只需更新這3個Buff值歸0即可。是不是很方便?嘿嘿,同時也證明了第二十八節我對精靈屬性結構設計定義的正確性。

測試效果截圖:

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