等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4677 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
: B7 l2 n) e' q' U2 \關於你的疑問,下面將進行詳細的解答:3 }" |, l* i/ U7 v/ `2 l
(不想看解釋請直接看結論)' h/ J/ \2 @ J* O
2 m/ b8 o. a6 g+ M0 R
. e( x; c; C; M; W1.技術頁面顯示的船艦/防禦三圍問題4 B% n- o- J- y
首先要知道,在32位系統下integer的最大值是2,147,483,647
! W! a: z6 E" s( Q) S/ B若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,8 c6 |) o+ u- P9 N. Q4 g q0 I. x8 F
因此可以看到,; W) i& d$ p2 y0 t% z" S
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647& a$ Z2 i$ J- }' U G
但也能正確地顯示出7,000,000,0008 t' S/ P3 v( U4 ~- L' I
至於受加成的數據,$ X; U' t5 g' V- U
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
6 F" p# D. ~' J* `8 R! Y: x e因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了5 D3 G# Q0 [9 g9 k
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
& m9 E6 E' V$ ~4 \5 F M; T8 T& {* l結論:只是顯示問題~!!3 \. _7 j. j2 Z& d, }: r4 G
) X2 j: h. P, e# B+ V1 m
# `$ M0 A: u5 y% Q' [+ q# v2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
, |! ~6 w0 g. m0 l9 u這裡要公開以下戰鬥三圍數值計算公式才能說明:* f+ m1 N: L W0 ]. K# L
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
3 K7 b9 I! y) g8 R' v 防禦值(護盾) = 基礎防禦 * 總防禦加成3 B& R0 Q' |8 @/ m
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
# Q2 B6 m& Y6 J6 F- P, P: s7 c7 u5 g由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,. S6 e( h6 N0 }3 \! Y- p+ |% u2 |3 p
裝甲值則是"結構完整性(裝甲)"的十分之一,$ i% U; X4 p6 X. b: h% z
以太空基地為例,8 ^1 _7 h! D7 c. B7 m
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
) u ?. b. v w4 A1 u技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000' ?2 A& I: @3 ?) Q6 O! }
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000& w3 v1 n7 R: ]( e7 O7 t
結論:測試結果沒有任何問題,沒有逆向加成~!!
* |9 A$ U% ~' ~) o7 L3 E& [/ o
2 u* g5 z" H7 M0 H |
|