等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4235 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
6 g$ V5 @* Y$ R( {7 M
關於你的疑問,下面將進行詳細的解答:6 p3 ~/ K6 @( ^. G: E( E; Y
(不想看解釋請直接看結論)3 l/ w, R* a9 C) z8 r; n. Z$ b5 D
' V) q2 C) L0 J" k
: ?1 f/ F Y. b2 e+ f9 z
1.技術頁面顯示的船艦/防禦三圍問題0 J& B) u' @3 {: u. b( D
首先要知道,在32位系統下integer的最大值是2,147,483,647; {* H- b/ i; Q& [
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,9 A* S% r/ P. n' M6 N0 q9 ]4 `& Y
因此可以看到,$ \2 z- S$ U5 D ]
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
9 k; c* x: x' P0 ?% x$ T但也能正確地顯示出7,000,000,000! A4 T/ o/ Y/ v; X- D
至於受加成的數據,. P" I% a$ c9 I" ?. }
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
1 _% {4 i( J; W7 u1 ?+ ~因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
" y! v$ W' k$ {. d推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
' ~/ c9 @0 f4 h+ o結論:只是顯示問題~!!
2 ?" V' Z- q% g& X( [8 F, Z6 u
1 F; _: P$ V; a: e% h- {
/ r8 T/ H7 ^, B& G& H6 P: T2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
, O2 p, I* |- d這裡要公開以下戰鬥三圍數值計算公式才能說明:/ ?2 J) v& c# P. q+ a( Z
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
# E/ x$ ^) B. }7 v1 D" \/ I 防禦值(護盾) = 基礎防禦 * 總防禦加成
, B& H- h$ H7 b 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
+ ]* B) I3 T/ U由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,7 a! q, G+ l7 A
裝甲值則是"結構完整性(裝甲)"的十分之一,% G2 k% l: h' i$ k7 ^
以太空基地為例,
& e& r) S. A; M7 n. r% V: w/ _- a需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
! u( O& R8 x1 Q( C1 @) f5 }技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000( q N% h) X Z
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
* C. v2 r# d7 f1 o. n1 D結論:測試結果沒有任何問題,沒有逆向加成~!!4 I1 a4 N( J, @9 T7 }3 Y
3 G5 H' {/ Y( U4 |/ p
|
|