等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4077 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
) F: ]7 V- _9 A! R' e) I4 N關於你的疑問,下面將進行詳細的解答:
# h+ t7 d. ~6 G0 ?(不想看解釋請直接看結論)
% k( z6 W3 O6 C8 s- ~0 [8 o0 v* I! F; Y$ C1 F2 a( p _1 X% ^
* V# [; c+ Q* F( c
1.技術頁面顯示的船艦/防禦三圍問題1 E; E. U* V' }! b4 Y# c
首先要知道,在32位系統下integer的最大值是2,147,483,647
5 R5 x, v6 x; {& T; j5 L' N若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,* y4 j/ o/ _+ P3 O& G" p
因此可以看到,& l, L$ v5 w1 p; A& r, p9 {* [) {
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
/ n/ [( K. x1 @; b9 E% d+ G2 s H但也能正確地顯示出7,000,000,000$ F. C- @; C0 Y$ T1 o& J2 S4 C! P# d
至於受加成的數據,( R# `: L+ W4 e
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,1 @/ a% H! ~# I
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
4 O' Q5 R/ a$ n! l, h推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~$ w1 ?8 r; F1 k8 q# Z
結論:只是顯示問題~!!4 B# Y T% g. a8 a. P
. V' K( C& T0 I. z" M( f$ N9 ]" S! B- r
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
2 p- T3 `! M9 P3 \. `這裡要公開以下戰鬥三圍數值計算公式才能說明:
5 k! M% V" \8 w; b 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20); n8 K. v% g& ^- M/ B
防禦值(護盾) = 基礎防禦 * 總防禦加成
+ H0 U2 p2 e4 z& t- ~ 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
3 T/ e2 R2 k6 d8 r' b O$ g% o( v由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,$ h& u; t+ m8 k
裝甲值則是"結構完整性(裝甲)"的十分之一,5 G' \$ V7 B4 ]% ^4 B
以太空基地為例,
* O& Y9 { Z2 l2 Z3 D需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,2 y- E n; @2 P1 W: q
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,0000 Q! l& l6 z+ P; d4 E
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
4 ]. H. P4 I! D H+ ?3 T結論:測試結果沒有任何問題,沒有逆向加成~!!
# j. ?% M# K7 z! e- f5 Y; x1 \5 `. ^ h0 s
|
|