等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4364 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
& `. [3 H ^# R
關於你的疑問,下面將進行詳細的解答:
2 ]# J' A/ n1 A% h(不想看解釋請直接看結論)
; W& E, r8 H% {3 o! r7 y. d. c3 O$ d
) _3 f6 N f. H2 Z
1.技術頁面顯示的船艦/防禦三圍問題
4 k. V9 s4 _9 j/ k6 v: x首先要知道,在32位系統下integer的最大值是2,147,483,6471 Q% k$ p" B' Q, J
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
8 n2 v/ x9 G- `$ x因此可以看到,2 p* h; c' v) U/ v
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647" ~* E& F3 m' }1 _) q! R3 Z
但也能正確地顯示出7,000,000,000: {. h: s1 t* r3 q" y4 W- Q
至於受加成的數據,
9 b" D) X; t9 Q+ _* v% t由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
: V$ p8 X- C0 I# \* F" x因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
`( n1 x1 g' W7 F推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~1 z0 _( q/ |2 ]9 Z- z/ O$ b `
結論:只是顯示問題~!!- q M5 m. N0 E6 X
, A. E) R$ \$ H& Y' a, N
& C! q# {( C; A$ X6 y9 {6 B& {2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
' O. S5 n+ m! N- B% i0 ?這裡要公開以下戰鬥三圍數值計算公式才能說明:5 c8 v5 M. e, J) ~
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)- N, b3 N3 ^4 S# D; O, r
防禦值(護盾) = 基礎防禦 * 總防禦加成; z+ B$ S3 j- L% J1 m+ E* x) G
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
7 V" w% b( W7 u& G% e由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,' l l8 S& p% u" n! e! p6 j
裝甲值則是"結構完整性(裝甲)"的十分之一,) o1 m+ }5 s' P) Q
以太空基地為例,
1 @" R( ?3 N' E/ H& Y% \1 V3 v g: y需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算, c: O1 G# G* @( e3 V8 Q- s/ K
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
9 v0 N: t9 J8 d0 |3 W, o- J8 u# R* v戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
) Q; [7 E) D& x! S+ u: C結論:測試結果沒有任何問題,沒有逆向加成~!!: ]3 k7 t" U+ F g: e6 r
0 ]: u* Z, p& b! z' J4 j: C- i |
|