等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4725 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
5 ?4 m' F# m' }1 Z* P5 T
關於你的疑問,下面將進行詳細的解答:: o- D" g' p8 F8 [
(不想看解釋請直接看結論)
- ^. x" C! d5 `8 L+ K C6 W8 t; S1 o7 w4 I1 u! @, o; g8 Y5 b/ @
. c' I! q9 Q% H8 N- ~
1.技術頁面顯示的船艦/防禦三圍問題
/ o; H `) q6 P' [6 o; t2 K- l首先要知道,在32位系統下integer的最大值是2,147,483,647
, N5 B4 I- a T" L4 Y若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,3 m' A* e* }: B, ~( `
因此可以看到,
% q8 {) J ^9 A) E2 P太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647/ h5 O6 ]; K# Y1 _$ ]4 ~& A$ K
但也能正確地顯示出7,000,000,000
. Y- A Q7 @- g& b/ {" E% H至於受加成的數據,
7 H7 ]' M" v2 [4 Y9 V" D2 X由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,# {; w0 U; x0 \6 B* Q8 j
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
9 p) N" X5 p) Z2 O, u) F8 @/ L推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
' C5 y+ r6 v' P9 K1 c7 M+ j結論:只是顯示問題~!!
! }# S1 q# x2 L+ ~% J2 k
" ^2 M: B! @5 p% f2 r" E0 k8 Q ]5 D* @9 f n+ s
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
) ?1 |: g" G3 L4 }! P: P7 w: ]1 L這裡要公開以下戰鬥三圍數值計算公式才能說明:
1 D4 p, [5 ?: C+ T 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)2 ]6 z/ g/ H0 p4 n$ P R+ @
防禦值(護盾) = 基礎防禦 * 總防禦加成
2 K- U; W: p( V( b 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成0 ^5 Z1 b6 c' h7 E" Z
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
( E1 j! U; C* U" U) \裝甲值則是"結構完整性(裝甲)"的十分之一,& w6 Q9 A3 h2 E! e% r5 z
以太空基地為例,2 o: k5 H+ }) ]8 |$ W; V
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,9 ]* s5 ?6 X1 g, e6 k5 i/ ?
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
/ j4 F7 S0 Z6 j7 o4 {戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,0002 ?/ T# @% s. S+ B0 O/ N' \6 B( r
結論:測試結果沒有任何問題,沒有逆向加成~!!3 |/ R% y$ \0 a) h- r( O
# h$ y/ ]9 s$ p. r R _ |
|