admin 發表於 2015-9-20 18:42:41

透過研究探險技術能獲得的最大行星數

http://owiki.de/index.php/Astrophysik#.C3.9Cbersicht

變數解釋: $USER=玩家編號ID
$CONF['planets_tech']=透過研究探險技術的殖民星數量
$CONF['planets_officier']=僱用事務官的額外殖民星數量
$CONF['min_player_planets']=無須研究探險技術的殖民星數量
$USER[$resource]=玩家探險技術等級
$USER['factor']['Planets']=玩家目前的所有星球數量
static function maxPlanetCount($USER)
      {
                global $resource;
                $CONF      = Config::getAll('universe', $USER['universe']);

                $planetPerTech      = $CONF['planets_tech'];
                $planetPerBonus      = $CONF['planets_officier'];
               
                if($CONF['min_player_planets'] == 0)
                {
                        $planetPerTech = 999;
                }

                if($CONF['min_player_planets'] == 0)
                {
                        $planetPerBonus = 999;
                }
               
                // http://owiki.de/index.php/Astrophysik#.C3.9Cbersicht
                return (int) ceil($CONF['min_player_planets'] + min($planetPerTech, $USER[$resource] * $CONF['planets_per_tech']) + min($planetPerBonus, $USER['factor']['Planets']));
      }

關鍵是這一行:
return (int) ceil($CONF['min_player_planets'] + min($planetPerTech, $USER[$resource] * $CONF['planets_per_tech']) + min($planetPerBonus, $USER['factor']['Planets']));
傳回最大能殖民的星球數量

靜待是否有人能解讀這些代碼的意思
:)

若风 發表於 2015-9-20 20:58:19

:(:(:(:(
看不懂

admin 發表於 2015-9-20 22:09:48

若风 發表於 2015-9-20 20:58
看不懂

会编程的人就懂
:)

这是原作者写的代码

由于有很多人觉得
最大殖民星数量好像怪怪的
所以就直接贴代码上来
让大家明白
:time:

k032146 發表於 2015-9-21 00:02:41

所以最多是62個?.?

sswapple001 發表於 2015-9-21 04:34:51

k032146 發表於 2015-9-21 00:02
所以最多是62個?.?

不是~
估計你這62是由於$USER[$resource] ,以為其中的124是指探險等級,每2級多1個星球,所以出現62這個數字..
但這裡的$resource其實就是探險技術等級的變量,$resource[]是關於研究的一個數組,124相當於探險技術的ID~

sswapple001 發表於 2015-9-21 08:41:41

其實這段代碼並沒有實際指出一個具體的數字,
ceil($CONF['min_player_planets'] + min($planetPerTech, $USER[$resource] * $CONF['planets_per_tech']) + min($planetPerBonus, $USER['factor']['Planets']));
這段代碼計算出來的結果就是最大殖民數量,
ceil()是向上取整,即如果結果有小數就進位,例如ceil(3.6)結果是4,
min()是取最小值,例如min(4,8)結果是4,


再具體一點,因為09行~17行這些if語句,可以看到結果會有兩個情況:
(1) 如果$CONF['min_player_planets']為0,
那麼$planetPerTech和$planetPerBonus就被賦值成999,假設探險等級被升級至無限大,那麽$USER[$resource] * $CONF['planets_per_tech']就會大於999,min($planetPerTech, $USER[$resource] * $CONF['planets_per_tech'])的結果就是999
這$USER['factor']['Planets']單憑上面這些代碼並不知道代表什麼,但可以推斷是事務官對殖民星數量的影響值,假設也可以是無限大,那麼同理,min($planetPerBonus, $USER['factor']['Planets'])結果也是999
所以傳回值是ceil(0+999+999),即1998
(2)如果$CONF['min_player_planets']不為0,
那麼當探險等級和$USER['factor']['Planets']同為無限大時,兩個min()函數的取值分別為$planetPerTech和$planetPerBonus,根據06~07行的賦值可知這兩個變量為$CONF['planets_tech']和$CONF['planets_officier']
所以傳回值是ceil($CONF['min_player_planets']+$CONF['planets_tech']+$CONF['planets_officier']),


結合遊戲分析,沒升探險和沒有事務官時,也是可以殖民的,即$CONF['min_player_planets']不會是0,事務官好像也只有襲擊專家能+2殖民數量,
那麼只會是(2)的情況,當探險升到無限高級,有襲擊專家時,最大殖民數量是ceil($CONF['min_player_planets']+$CONF['planets_tech']+min($CONF['planets_officier'], 2)),


綜合推斷,$USER是用戶類,用來存放玩家資料,$CONF是設定類,用來存放參數設定,後台可以利用$CONF['planets_tech']和$CONF['planets_officier']來設定探險技術和事務官的殖民最大值,利用$CONF['min_player_planets']來設定初始能殖民的最大值,
假如後台設定如下:
$CONF['min_player_planets']設為20
$CONF['planets_tech']設為60
$CONF['planets_officier']設為2
那麼理論殖民最大值就是82

j200283 發表於 2015-9-21 09:45:30


[*]if($CONF['min_player_planets'] == 0)
[*]{
[*]    $planetPerTech = 999;
[*]}
[*]
[*]if($CONF['min_player_planets'] == 0)
[*]{
[*]    $planetPerBonus = 999;
[*]}


感覺相同的東西分開了 0...0



[*]if($CONF['min_player_planets'] == 0)
[*]{
[*]    $planetPerTech = 999;
[*]    $planetPerBonus = 999;
[*]}

k032146 發表於 2015-9-21 09:46:36

果然不是正常人類學的東東:$

admin 發表於 2015-9-21 09:51:05

j200283 發表於 2015-9-21 09:45
[*]if($CONF['min_player_planets'] == 0)
[*]{
[*]    $planetPerTech = 999;



這樣寫也是可以的

這是原作者的代碼
換做我寫的話
就會像你一樣寫在一起
:)

admin 發表於 2015-9-21 09:54:52

sswapple001s@G 發表於 2015-9-21 08:41
其實這段代碼並沒有實際指出一個具體的數字,
ceil($CONF['min_player_planets'] + min($planetPerTech, $US ...

U1:
$CONF['min_player_planets']=10
$CONF['planets_tech']=0(無限)
$CONF['planets_officier']=2
這是u1的後台設定
理論上應該能無限殖民
只要探險技術無限大

你解讀得不錯
:)

歡迎您加入開發的行列
:)
頁: [1] 2
檢視完整版本: 透過研究探險技術能獲得的最大行星數