等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4298 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
& |0 r# M0 G8 t6 |
關於你的疑問,下面將進行詳細的解答:5 L m) `% c3 `% P* W
(不想看解釋請直接看結論); U. [0 A* F* T- Q% C/ v1 s
7 m) N3 f9 H- L) ?+ ]0 n5 Q8 S) N" i- ?, {
1.技術頁面顯示的船艦/防禦三圍問題: @+ O* ?9 |$ \' v* V' I
首先要知道,在32位系統下integer的最大值是2,147,483,647
, n6 M4 s; R7 x) [6 }若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,- F2 i0 N# |" v7 I6 a. H+ k& R0 g
因此可以看到,
% m7 L+ E: g5 q$ I( W太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
% q2 i0 j1 _# p$ B# k但也能正確地顯示出7,000,000,000
4 F+ a; u0 `& m0 r- J {至於受加成的數據,9 ?8 M7 t) K$ d0 r" \0 X
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,/ i2 M8 h1 [3 B$ B# E) \
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了, ~1 o: c0 q; `- U% C3 C- H8 v$ L
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~- i7 l" m/ Z* a$ r; }
結論:只是顯示問題~!!
) \3 y k3 \( R: z; c3 p$ Q! e- K/ q2 o6 b5 p
/ ]/ C( v+ Z9 [6 l9 S2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題$ n4 P' M* b: |! D8 {0 J
這裡要公開以下戰鬥三圍數值計算公式才能說明:
7 u+ W% T$ N7 t1 v7 f, T 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20) H6 z+ ]5 O5 T* r$ U2 c8 o0 U0 G3 _
防禦值(護盾) = 基礎防禦 * 總防禦加成
' i5 B5 p* N E) E 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
! d+ G; W4 g) Z/ J2 A由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,& J7 {1 k+ T3 s' [1 W
裝甲值則是"結構完整性(裝甲)"的十分之一,/ \5 O, r$ h& ]4 a" T3 m
以太空基地為例,
0 q- q# a! S" Q- r7 o需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
6 Z+ Q/ j) l2 d, z8 w# {+ i v技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
( J& P. B/ ~/ ]4 o% M. ]# k2 }戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
7 h0 l Y& G5 }5 `) `7 i結論:測試結果沒有任何問題,沒有逆向加成~!!
" E+ W s# A& x0 u
& W2 A2 K4 c5 n3 U4 m# h7 b0 B- u |
|