|
等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4385 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|顯示全部樓層
3 R, w$ e: Q% t9 D
關於你的疑問,下面將進行詳細的解答:( H+ E* r l& [/ D
(不想看解釋請直接看結論)( q* |+ k* V+ g9 p$ J% H
% h d) t# q1 `9 C; `% f V% F% ^( E. P* x
1.技術頁面顯示的船艦/防禦三圍問題
4 ~2 `* v6 C* J& x( N) G4 X& A! E `首先要知道,在32位系統下integer的最大值是2,147,483,647; y1 ]4 r5 s7 Q$ b9 f0 p0 q4 x" p
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型, _1 U- i1 f: e. p7 u- R" f; `9 U
因此可以看到,5 r+ u$ s2 q! K1 A$ L4 l
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
% g s/ E* A: ^) T0 i9 c' I+ A0 E但也能正確地顯示出7,000,000,000
1 I, W+ r5 L. w9 s至於受加成的數據,
0 x p! a- s0 X# r" Z5 a( x! D由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,$ ? {) R* y3 l
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
, @: z2 v5 s% k8 u' Y9 i推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~9 V' l+ R9 Q' U1 L! f
結論:只是顯示問題~!!& J4 v: p, s- ~1 M' x8 V
! {, [, A$ `4 Y" L3 q1 L! y1 I
' e; U5 K& T/ }0 X! Z$ l+ U% s
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題0 S. T7 G5 m% q0 E+ Q' l* u
這裡要公開以下戰鬥三圍數值計算公式才能說明:
' k- ~ U) _& A, K 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)' X V1 x- n4 w8 R+ O
防禦值(護盾) = 基礎防禦 * 總防禦加成6 ^( K" D3 y7 r/ q
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
% E' |" f9 u% d+ K) R/ t( R由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,! }% |5 l: R6 z
裝甲值則是"結構完整性(裝甲)"的十分之一,' }; h' `! v/ |2 c5 e; @+ P& y
以太空基地為例,
$ h- J* h. g$ s4 }% c- r0 O需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
3 |4 M+ ~# U+ A2 y技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
, X3 X# l5 c2 a戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000: G J% j) O4 J8 g) t
結論:測試結果沒有任何問題,沒有逆向加成~!!- L F0 T* @' J# t
1 i6 V& E& _4 M9 g+ r) [* a
|
|