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

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

編輯:關於C語言

以力量屬性VPower為例,它影響著最大負重、物理攻擊力最小值、物理攻擊力最大值這3個基值屬性,又以其中的物理攻擊力最大值為例:

/// <summary>

/// 獲取物理攻擊力最大值

/// </summary>

public double VAttackMax {

 get { return ABase[2] + Equip[2] + Buff[2] + VPower * CoefficIEnt[2]; }

}

從它的CLR構造可以看出VAttackMax = ABase[2] + Equip[2] + Buff[2] + VPower * Coefficient[2],並且最關鍵的它是只讀的(即通過多個影響其值的相關屬性值集合而成,並非通過直接賦值得到,這樣做可以輕松構建出通用且易於維護的精靈屬性系統)。其中Abase[2]為該精靈物理攻擊力最大值的原始基礎值,例如戰士的ABase[2]可以定為30,那麼魔法師的ABase[2]大約為10左右等等;Equip[2]為所有裝備的力量加成值總和,這個不用說大家也明白;Buff[2]為所有加持減持等效果的附加值;Coefficient[2]為該精靈的力量系數,例如狂戰士的Coefficient[2]可以定為10,而牧師的CoefficIEnt[2]則約為2左右等等。那麼其他的諸如敏捷屬性VAgile,體格屬性VPhysique等等均是類似的關聯設計。

屬性定義完成後,接下來便可以著手設計精靈的物理攻擊系統。

同樣的我們首先對物理攻擊的需求進行分析,即物理攻擊的觸發、過程及結束處理:

當我們在其他精靈身上點擊鼠標左鍵後,首先進行敵對判斷,如果是敵對的則將物理攻擊對象鎖定為該精靈(敵人),然後主角向其位置跑去,當該敵人進入主角的攻擊距離(范圍)內時,主角向其發起物理攻擊,然後通過公式計算出傷害值並輸出顯示出來。這就是最典型的物理攻擊發生過程。

下面是我根據此原理過程寫的一些關鍵邏輯代碼:

步驟一,主角與對象精靈之間的敵對判斷,根據注釋並且憑借大家N年的網游PK經驗應該不難理解^_^:

/// <summary>

/// 判斷主角是否與監視對象敵對

/// </summary>

/// <param name="obj">自身精靈</param>

/// <param name="obj">對象精靈</param>

/// <returns>是/否</returns>

private bool IsOpposition(QXSpirit me, QXSpirit obj) {

 //假如對象為自己則返回否

 if (me == obj) {

  return false;

 //假如對象的PK值大於或等於7則返回是

 } else if (obj.VPK >= 7) {

     return true;

 } else {

     //根據自身的PK模式與對方的PK模式進行比較進行相應返回

     switch (me.PKMode) {

       case PKModes.Peace:

        return false;

       case PKModes.Whole:

         return true;

       case PKModes.GoodAndEvil:

        //在善惡模式下對方為全部攻擊模式時返回是

        return obj.PKMode == PKModes.Whole ? true : false;

       case PKModes.Faction:

         return me.VFaction != obj.VFaction ? true : false;

       case PKModes.Clan:

         return me.VClan != obj.VClan ? true : false;

       default:

         return false;

     }

   }

}

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