等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4211 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
% d ^: i# M/ v5 [. a( R- U0 F
關於你的疑問,下面將進行詳細的解答:. U! I, `& E+ C1 u: W1 B
(不想看解釋請直接看結論)
7 u' x( R5 x, x. P1 h: M/ n7 C. h# `3 O1 G5 j7 y5 H& |
; k" P3 R; b0 m4 j" Z w
1.技術頁面顯示的船艦/防禦三圍問題, @8 M+ _& w2 [4 I& C
首先要知道,在32位系統下integer的最大值是2,147,483,647
2 ~' ? P, M" t2 w1 B" {若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
4 S3 B4 [ l7 j9 e2 ]因此可以看到,
7 o* N3 R$ K2 N4 I' R% f7 K* N太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
' E# S# g6 Z: w3 [. ^/ P6 @5 e& P/ G但也能正確地顯示出7,000,000,000
$ _' ^4 e5 ?& c0 R' \/ U/ X至於受加成的數據,1 i# A5 o: `; _! _
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,7 v3 ?( n! l2 T7 S
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了) A9 C! k& g; }2 Y
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
3 P; @4 h2 s6 P P( a) H I( }結論:只是顯示問題~!!
4 _' t3 p9 |) v, Y8 m8 e' W: g1 _" ] a4 { E+ b+ H" y
: P+ p' j1 D/ R8 _3 H4 N2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
, }$ C5 I# S$ Y, l這裡要公開以下戰鬥三圍數值計算公式才能說明:
F7 C0 ]! ^- _; I4 Q: d 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)3 S+ L& |/ D$ }* S
防禦值(護盾) = 基礎防禦 * 總防禦加成5 K1 \# q* L7 P' g0 n
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
7 P4 Q D8 V& W, t4 v由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
X) H! I% @: p/ s: z8 z- u% w裝甲值則是"結構完整性(裝甲)"的十分之一,- B/ E" f o- W7 i/ t
以太空基地為例, g- x1 l* u& m. K8 W
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
) N K3 E9 \/ |8 K技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
* U; n# \2 w8 e戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,0002 d0 t: g" E$ N& F
結論:測試結果沒有任何問題,沒有逆向加成~!!
1 m3 ]+ U9 ~3 _8 h0 K* A
+ H! A8 D T4 b$ V0 O |
|