等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4677 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
& X6 r0 P4 E$ i$ y' Q關於你的疑問,下面將進行詳細的解答:" D' P! g" Z) O+ {
(不想看解釋請直接看結論)- M+ T% b/ ^" z. G
+ M! V, r+ m+ G3 _& o8 a0 `9 {
' t- H0 j q1 T" V3 m" J
1.技術頁面顯示的船艦/防禦三圍問題
8 A2 _& K; H3 L首先要知道,在32位系統下integer的最大值是2,147,483,647
d1 |: C' J1 A( n, e ?若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,7 `- [, J+ A2 J& i6 X( s: |( C; _$ g
因此可以看到, @0 _, s% Y% n# x& c9 w" b
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
4 [# T' N- y, V* K8 L4 E但也能正確地顯示出7,000,000,000! K% H1 J- m9 ^' {; y; y J; b1 X
至於受加成的數據,
. z. B) ^& A& X: j6 G s% W+ c u由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,4 }" r5 S# X' T* ~ K9 r$ R n
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了$ _) a# X% i) ^: _
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
6 ~7 V" n4 O" O) ], \0 s% G; ~: M結論:只是顯示問題~!!
+ [4 [( H Z8 P/ @" f4 g/ s6 [5 C+ I4 D
, j. n& q( M# o& a2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
4 {5 l/ U; U7 v9 Q0 m# l這裡要公開以下戰鬥三圍數值計算公式才能說明:% F& T, T7 C/ u6 W$ e; N
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)6 P& N: Q* w. o3 L% G0 |5 v8 A" ~
防禦值(護盾) = 基礎防禦 * 總防禦加成
' E/ e7 _. {5 Q: i+ ^ i! \( S5 M 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成3 N* D; b W2 o$ s, m8 N u0 C! f
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
- W1 G6 l$ y" [3 d; S; E# k& ~裝甲值則是"結構完整性(裝甲)"的十分之一,) K4 y- n. k: e. z' z
以太空基地為例," \& s" I5 x2 l
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
( z7 J- m2 a3 E4 t, n) _) B技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
+ C$ T( a0 ]; r戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
% k) i8 Z- U% |* n5 W7 d) R結論:測試結果沒有任何問題,沒有逆向加成~!!3 g9 R' R3 U0 J$ C- m/ ~
0 I3 x7 m2 B. t
|
|