等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4218 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
& \ y# t+ S Q* Z+ H關於你的疑問,下面將進行詳細的解答:
8 g; O$ u( p9 m, B/ W: [(不想看解釋請直接看結論)
% v, g. T& D4 b2 I$ a' T1 R
0 Z0 |, V7 t/ H4 I4 w. h+ _& q `% ~) R
1.技術頁面顯示的船艦/防禦三圍問題
& ^, }% E% ~6 h* ^; H首先要知道,在32位系統下integer的最大值是2,147,483,647: f( r: ]0 V* s: Q6 n3 b7 Z- B* I
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,1 _9 R2 W& f7 C
因此可以看到,( Q* A- a+ `- s U$ L. s2 O
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
! e" I3 X# |6 z/ K# r2 K但也能正確地顯示出7,000,000,000! u9 K) c3 ^/ L7 x2 }
至於受加成的數據,2 a0 R/ E5 X% C
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,& W" r! @" r: g0 v0 v, w
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了) ?- R3 C- ^7 h% }. g; j
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
' H D# R2 ]7 T# [* f: t結論:只是顯示問題~!!- R$ B2 f5 B5 K4 K3 |: M/ V5 p
* V# |) W) _1 g8 r. `& V* Y
7 Q `. T* {3 v9 r* q$ V
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題) ?5 }9 J0 ^! P3 U9 \. A
這裡要公開以下戰鬥三圍數值計算公式才能說明:
; X% W( e% H# r 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
/ ~! u+ I9 j, g 防禦值(護盾) = 基礎防禦 * 總防禦加成# p1 |" n% i( b g& K. Q6 z I- i! ^
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成4 r* a. q" E# Y& k) \1 ]; Y* K
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
! e6 Y# X; C6 T0 O4 }! F; t0 G: e. w9 v裝甲值則是"結構完整性(裝甲)"的十分之一,
% V: G0 q. o3 i9 M/ C0 k以太空基地為例,2 ~+ K% |$ G; M$ i
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算," V$ L5 S' P" v; H1 O. F
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,0007 e+ ?+ u' B7 n" @$ W _+ O
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,0002 B7 L9 h/ x* Z$ o' t; A& X4 b
結論:測試結果沒有任何問題,沒有逆向加成~!!1 Z) o$ l: ~* a l- G
f& ^' u1 E& x
|
|