透過研究探險技術能獲得的最大行星數
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
看不懂
会编程的人就懂
:)
这是原作者写的代码
由于有很多人觉得
最大殖民星数量好像怪怪的
所以就直接贴代码上来
让大家明白
:time: 所以最多是62個?.? k032146 發表於 2015-9-21 00:02
所以最多是62個?.?
不是~
估計你這62是由於$USER[$resource] ,以為其中的124是指探險等級,每2級多1個星球,所以出現62這個數字..
但這裡的$resource其實就是探險技術等級的變量,$resource[]是關於研究的一個數組,124相當於探險技術的ID~ 其實這段代碼並沒有實際指出一個具體的數字,
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
[*]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;
[*]}
果然不是正常人類學的東東:$ j200283 發表於 2015-9-21 09:45
[*]if($CONF['min_player_planets'] == 0)
[*]{
[*] $planetPerTech = 999;
嗯
這樣寫也是可以的
這是原作者的代碼
換做我寫的話
就會像你一樣寫在一起
:) 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