程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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語言
#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(二十八) 經典式屬性設計及完美的物理攻擊系統

戰斗即將開始!要實現MMORPG中的攻擊系統,必須為精靈增加相關的參數及屬性,這些內容及它們之間的牽連關系設計決定著游戲的新穎度與耐玩性;就好比當年的傳奇,系統再普通不過了,但是卻因為有著恰如其分的系統參數設定與完美的世界觀定位,成就了一代不朽巨作。那麼本節開始,我將首先對精靈控件進行屬性完善,使之具傳統經典游戲中的角色屬性。

首先看下圖:

這些屬性是目前最經典的角色屬性設置(不同的游戲中,某些屬性的命名可能會不同。例如上圖中的“體質”屬性在本節示例游戲中我稱之為“體格”;而“運勢”屬性我則稱之為“運氣”等等,但意義是一樣的);我們先分析:力量、智慧、敏捷、體質、運氣這5個屬性為所有基本屬性中的根屬性,何謂根屬性?就是所有基值屬性的最底層。當角色升級時,通過手動或系統自動根據角色的職業特性對這5個根屬性進行加值,而其他所有與之相關聯的基值屬性都將同時受到影響。例如我是這樣定義這5個根屬性的:

double _VPower;

/// <summary>

/// 獲取或設置力量

/// 影響最大負重,物理攻擊力(最小 - 最大)

/// --[相關基值屬性計算公式]:

/// 最大負重 = ABase[0] + Equip[0] + Buff[0] + VPower * CoefficIEnt[0]

/// 物理攻擊力最小值 = ABase[1] + Equip[1] + Buff[1] + VPower * CoefficIEnt[1]

/// 物理攻擊力最大值 = ABase[2] + Equip[2] + Buff[2] + VPower * CoefficIEnt[2]

/// </summary>

public double VPower {

 get { return _VPower + Equip[16] + Buff[16]; }

 set { _VPower = value; }

}

double _VAgile;

/// <summary>

/// 獲取或設置敏捷

/// 影響命中,閃避,跑速,攻速,施法速度

/// --[相關基值屬性計算公式]:

/// 命中 = ABase[3] + Equip[3] + Buff[3] + VAgile * CoefficIEnt[3]

/// 閃避 = ABase[4] + Equip[4] + Buff[4] + VAgile * CoefficIEnt[4]

/// 跑速 = ABase[5] - Equip[5] + Buff[5] - VAgile * CoefficIEnt[5]

/// 物攻速度 = ABase[6] - Equip[6] + Buff[6] - VAgile * CoefficIEnt[6]

/// 施法速度 = ABase[7] - Equip[7] + Buff[7] - VAgile * CoefficIEnt[7]

/// </summary>

public double VAgile {

 get { return _VAgile + Equip[17] + Buff[17]; }

 set { _VAgile = value; }

}

double _VPhysique;

/// <summary>

/// 獲取或設置體格

/// 影響最大生命值,物理防御力,格檔率(與暴擊率相反,物理或魔法攻擊傷害減半)

/// --[相關基值屬性計算公式]:

/// 最大生命值 = ABase[8] + Equip[8] + Buff[8] + VPhysique * CoefficIEnt[8]

/// 物理防御力 = ABase[9] + Equip[9] + Buff[9] + VPhysique * CoefficIEnt[9]

/// 格檔率 = ABase[10] + Equip[10] + Buff[10] + VPhysique * CoefficIEnt[10]

/// </summary>

public double VPhysique {

 get { return _VPhysique + Equip[18] + Buff[18]; }

 set { _VPhysique = value; }

}

double _VWisdom;

/// <summary>

/// 獲取或設置智慧

/// 影響最大魔法值,魔法防御力,魔法攻擊力(最小 - 最大)

/// --[相關基值屬性計算公式]:

/// 最大魔法值 = ABase[11] + Equip[11] + Buff[11] + VWisdom * CoefficIEnt[11]

/// 魔法防御力 = ABase[12] + Equip[12] + Buff[12] + VWisdom * CoefficIEnt[12]

/// 魔法攻擊力最小值 = ABase[13] + Equip[13] + Buff[13] + VWisdom * CoefficIEnt[13]

/// 魔法攻擊力最大值 = ABase[14] + Equip[14] + Buff[14] + VWisdom * CoefficIEnt[14]

/// </summary>

public double VWisdom {

 get { return _VWisdom + Equip[19] + Buff[19]; }

 set { _VWisdom = value; }

}

double _VLucky;

/// <summary>

/// 獲取或設置幸運

/// 影響暴擊率(物理或魔法攻擊加倍)及其他

/// --[相關基值屬性計算公式]:

/// 暴擊率 = ABase[15] + Equip[15] + Buff[15] + VLucky * ACoefficIEnt[15]

/// </summary>

public double VLucky {

 get { return _VLucky + Equip[20] + Buff[20]; }

 set { _VLucky = value; }

}

/// <summary>

/// 獲取或設置屬性基數

/// 0-14對應基礎屬性值

/// </summary>

public double[] ABase { get; set; }

/// <summary>

/// 獲取或設置裝備加成總和

/// 0-14對應基礎屬性值

/// 15-19對應5大屬性

/// </summary>

public double[] Equip { get; set; }

/// <summary>

/// 獲取或設置加持/減持值總和

/// 0-14對應基礎屬性值

/// 15-19對應5大屬性

/// </summary>

public double[] Buff { get; set; }

/// <summary>

/// 獲取或設置屬性系數(成長率)

/// 0-14對應基礎屬性值

/// </summary>

public double[] CoefficIEnt { get; set; }

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