等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4701 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
! H! `0 D( X% @* v/ }1 L
關於你的疑問,下面將進行詳細的解答:
1 z3 o7 c$ o6 z- ^# T+ _9 X( z(不想看解釋請直接看結論) h/ m3 c( }# ^4 w; u% \8 O
2 A- o9 b7 t Z8 M! k: \% A# e8 T
! r$ l1 N: @. t4 Z# z1.技術頁面顯示的船艦/防禦三圍問題
$ O- l4 E" l" ^& e首先要知道,在32位系統下integer的最大值是2,147,483,647
- ^8 ?: ]. {! I. z若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,1 ^, Q# R4 H$ d6 |8 C; u/ R. ^# F) ?
因此可以看到,! X) o$ x$ V1 b5 Y& {' ^* P
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647, X9 b- Z3 I6 ^ Z
但也能正確地顯示出7,000,000,000, P( Q& h$ N$ ^; P0 O
至於受加成的數據,
1 z g) r, b9 X9 p. H; t) ]由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
+ E$ \ Y3 f) M) N: l6 F* q6 v因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
0 O; R% N& c, S! \6 q% s推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~% p7 M; L! G4 ~+ Y% e" q! |/ v
結論:只是顯示問題~!!! y& e7 N9 [6 V# ^* L, z
/ ?- k2 u6 m' u" E) v
& F/ i' n3 }. }+ j5 C/ t+ g2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題6 g- ]! u2 n" {) ?5 d
這裡要公開以下戰鬥三圍數值計算公式才能說明:( o( b. f/ U& Y+ a. i
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
9 F+ N0 v. a. b/ m/ j 防禦值(護盾) = 基礎防禦 * 總防禦加成; x) q# T* l& ~7 K2 d, F) J) [
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成7 p" ^ z" f; Y, j$ R$ o
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
, }; A2 o6 P3 P4 n裝甲值則是"結構完整性(裝甲)"的十分之一,+ _6 I+ q% F, w& t7 @
以太空基地為例,
q) R! Z7 n6 `. v需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,1 v5 |) p6 T5 J- ?
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000- I, k. m* ]3 x/ d' p9 s$ x; p7 x
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
C4 t& n% ?* ~3 z結論:測試結果沒有任何問題,沒有逆向加成~!!9 O( A2 d! H4 i8 C8 l
# W/ x* ]7 u% R: M
|
|