等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4748 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
$ _$ a) h; ~ G/ R }4 F關於你的疑問,下面將進行詳細的解答:- N, t8 w( L& q8 Q3 `6 t
(不想看解釋請直接看結論)* w# _+ p6 @3 S; \
) j6 `7 L+ z8 X: y' K4 V" A, [3 ?: [) d2 J5 c3 C' {
1.技術頁面顯示的船艦/防禦三圍問題& F& [4 c. X: ~
首先要知道,在32位系統下integer的最大值是2,147,483,647
z9 B6 B% V/ W5 B! v( f若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,8 {7 ? D$ H0 A( e/ f' l4 G8 ]
因此可以看到,7 c3 E& g1 g# Z4 v4 r
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
$ P' z2 X+ `; U2 n$ y6 z但也能正確地顯示出7,000,000,000
5 ?+ F$ T, `9 K. J至於受加成的數據,7 y, V; {/ X; F. i% \
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
- K% R1 f( \1 {0 p h; s" r$ p因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了: y5 q8 M5 N0 V8 k$ {
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
8 S- O, W- D" _" r, V; d, r+ R結論:只是顯示問題~!!
! a% y* j! x% q$ }: b! q. x
( X' g& r9 Z; i- |7 W- K( B/ O8 W, H2 |
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題) L5 [. G5 @9 m1 V+ a6 s" @
這裡要公開以下戰鬥三圍數值計算公式才能說明:
9 l! Z/ p5 Q& U0 ]% ~- V; q 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)* A- }. b2 E7 \: M7 K1 c
防禦值(護盾) = 基礎防禦 * 總防禦加成
: x% J8 @$ @" B$ ], V 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成/ }6 i/ ^) c3 ?5 d
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
, [* O- Z4 g( {裝甲值則是"結構完整性(裝甲)"的十分之一,* D' s8 E# e# v% U, F; F
以太空基地為例,+ d! @1 ?# ]) Z' S2 ?
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
5 _4 A m0 o: M7 V' U+ i技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
1 k/ O. Y' F/ g: H) [% `4 s戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,0006 B2 W i8 z3 Q) y+ ^7 G" Q' Z' S
結論:測試結果沒有任何問題,沒有逆向加成~!!
7 H9 z; E" y, ^- q* W- o! m# K
, B& E7 g c, A0 F |
|