等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4289 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
/ J& Z' D5 {2 D# d6 a% V! t
關於你的疑問,下面將進行詳細的解答:
8 k6 t4 z( m, G) O% p(不想看解釋請直接看結論)
* e- l; q& b0 i) u) j, A+ i# }% y2 q% J7 s2 y
4 U/ ]# U/ H1 n
1.技術頁面顯示的船艦/防禦三圍問題
" P# |( R+ h5 i+ |: N! X首先要知道,在32位系統下integer的最大值是2,147,483,647
, f" z/ B( b2 S! d7 p若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
9 B+ e2 u/ Z _2 ^: w* W# J- o3 J因此可以看到,8 w5 e5 f7 @6 f
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
, D6 e, G/ \- p' f$ z$ r i但也能正確地顯示出7,000,000,0001 \2 C6 z5 x9 v0 P$ ^9 a6 s
至於受加成的數據,
2 j& Z/ l( ~* e) E) y1 Y% n由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,3 T, Y, R6 C2 v) x' r: j
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
8 y: J2 u7 ^6 b# f推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
! d& Z3 ]/ v% f' k" H8 @ S% v$ c% E結論:只是顯示問題~!!) _1 _, k7 f3 N6 F/ ~' ~- Q
$ x6 d" Y }6 }: N2 l2 C% f0 u/ e
3 K6 j" w8 p2 E: U9 W2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題: Z, y- W. P& i! e
這裡要公開以下戰鬥三圍數值計算公式才能說明:' F" N/ l7 k; Z3 y; C7 R7 J: \ T. g6 Y
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
$ {4 ]: B X8 a& ~: _ 防禦值(護盾) = 基礎防禦 * 總防禦加成3 D) }6 f- O, L" V7 e
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
$ }9 v5 i& g+ K+ z/ F% n由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,9 d' x% j0 ^1 m6 O
裝甲值則是"結構完整性(裝甲)"的十分之一,
! i' z; E& k- u, d/ s2 y以太空基地為例,
1 d1 i Y8 l$ g/ ]9 E需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算," K- f5 A0 n& t% U9 N; f# @! E
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
/ ~, Q# w) ?/ I& h! D! V$ f戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
$ g* u. ^# }& v( j9 ?; W" Q! `! u" j結論:測試結果沒有任何問題,沒有逆向加成~!!
4 E: }8 S. I: Q8 A2 J% y* R6 D. L! m9 N0 c3 P/ x
|
|