等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4713 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
( x1 y' B" \3 Z# P! Y3 r. O1 w+ l關於你的疑問,下面將進行詳細的解答:
! Y0 j& c/ r9 @# W(不想看解釋請直接看結論): L2 J9 g& ~7 i: s" N' W
# H* b* ~ @; G0 T0 o2 M/ \2 a
1 B9 p% _0 C T5 m4 H1.技術頁面顯示的船艦/防禦三圍問題7 R3 E$ B9 s$ n% c* D4 @
首先要知道,在32位系統下integer的最大值是2,147,483,647$ R: X1 C$ D5 i! V8 s1 j9 c; {! N2 g
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
, z' B# g0 M) c1 r5 u( p因此可以看到,
! Z0 `; _. O' Z+ H太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
) E( U$ v, O3 F但也能正確地顯示出7,000,000,000
: V5 U6 p0 W( a0 W3 o4 m, G至於受加成的數據,& p# A6 B+ t* `
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,1 ]/ T. B4 G0 q# Q2 h2 T/ O/ D
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
9 S3 g/ a5 R6 ~* D6 ?# N8 a4 J* z推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
6 h# T' _# p3 x1 E結論:只是顯示問題~!!# ^0 G+ F. _$ O( j' q
1 }) R# Z$ l$ X# F* d* Y) q
& b( N2 F0 T* g$ L2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題& ^6 Z8 i2 u+ J
這裡要公開以下戰鬥三圍數值計算公式才能說明:+ e) u% k0 L) o8 p% I- ^* i3 h( X+ w
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20). O* S I% f% b' ?, u1 f
防禦值(護盾) = 基礎防禦 * 總防禦加成
; p V. t+ w3 M. D 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成3 }6 W% Z' y5 V6 d
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
0 s( ^; `0 c1 ^! z* w3 Z- X裝甲值則是"結構完整性(裝甲)"的十分之一,
# ]: l: O% h1 j% Y- V以太空基地為例,% w. n8 m, S/ [) v$ W
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
7 M7 r$ |% G* J! a技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,0009 G$ U' ~# I5 `: ~6 V
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,0009 [# p% d0 l2 k# d( x
結論:測試結果沒有任何問題,沒有逆向加成~!!
: j# V9 d! {) f/ }
* {0 W" [+ H$ w0 w4 M( O1 j |
|