等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4187 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
6 J# f- _# x- k: i ?$ v( @" A0 w7 ^6 _關於你的疑問,下面將進行詳細的解答:6 C/ G" V* n) a4 w
(不想看解釋請直接看結論)
4 o# e8 Y( p& Z: B8 a0 P! b8 G" v6 D
L. }+ ?% q: @) c
1.技術頁面顯示的船艦/防禦三圍問題
) i+ j; B1 \. X" N: f首先要知道,在32位系統下integer的最大值是2,147,483,647
0 z* c& V% l- u/ }. e% C3 p5 L若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
4 M5 [3 A& z( u) ^4 \因此可以看到,
+ s3 u+ R( `" O8 s太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647- N X3 I8 c9 _6 E3 n
但也能正確地顯示出7,000,000,000
. H3 _) R- ?" a' V7 D8 A至於受加成的數據,% z/ E4 ^) U5 Q
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,9 |" b- H: f+ C8 e
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
. p$ I# K) V. M8 T推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
! R: F* N3 l4 m5 [$ B5 }結論:只是顯示問題~!!' G: x9 r, h1 g% X0 f* f
$ E. o, Z: L- T3 X6 @0 s. I4 b. r: @
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題$ X1 D, z- O& p( c3 N8 ^
這裡要公開以下戰鬥三圍數值計算公式才能說明:
1 `% P& b0 z8 ~6 [- C: h6 X7 K 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)* e U- A7 n5 H0 p- q: ^
防禦值(護盾) = 基礎防禦 * 總防禦加成) [* G$ ?+ e7 c+ D4 K
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成2 h0 l# O! G3 a) J+ } Z
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
) k6 J1 v$ j J$ ^ S5 |裝甲值則是"結構完整性(裝甲)"的十分之一,
# }3 e- Y/ i. M' o1 z以太空基地為例,
' c- p. X0 L- t8 |0 U需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,+ a2 O' O/ q& S6 m/ v
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,0000 s% J2 F. k) Z3 z
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000% m+ L7 ?* N* [1 n6 f
結論:測試結果沒有任何問題,沒有逆向加成~!!! `4 r+ ~0 ?0 l' W
6 X) T& M, r; s8 q5 H5 C
|
|