0
我的問題是:我的比賽日應該是真實世界日的1/6。比賽日有12個小時。因此一個遊戲小時實時20分鐘。或者這就是它應該是。但是,當我觀察時間,而不是一個小時20分鐘,實際上是30分鐘。我無法弄清楚是什麼原因造成的。我的功能有什麼問題?如果RL天有6個遊戲日,如何獲得遊戲時間?
public function getGameTime() {
$t = time();
$d = $t/60/60/6 - 68646;//the number taken off makes the current time day 200 instead of a really big number
$fraction = $d - floor($d);
if ($fraction<(1/12)) $hour = 0;
else if ($fraction<(1/12)*2) $hour = 1;
else if ($fraction<(1/12)*3) $hour = 2;
else if ($fraction<(1/12)*4) $hour = 3;
else if ($fraction<(1/12)*5) $hour = 4;
else if ($fraction<(1/12)*6) $hour = 5;
else if ($fraction<(1/12)*7) $hour = 6;
else if ($fraction<(1/12)*8) $hour = 7;
else if ($fraction<(1/12)*9) $hour = 8;
else if ($fraction<(1/12)*10) $hour = 9;
else if ($fraction<(1/12)*11) $hour = 10;
else $hour = 11;
for ($minute = 59; $minute>=0; $minute--) {
if ((($hour*60+$minute)/720)<$fraction) {
$min = $minute;
break;
}
}
return array(
"day" => floor($d),
"hour" => $hour,
"minute" => $min
);
}
我不明白你在'$ d = $ t/60/60/6 - 68646;'中的減法。評論沒有幫助... –
看起來像一個作業問題。你做了什麼來調試呢? – jdv
如果我沒有減少任何東西,它會使當前的比賽日68846.我想從一個較小的數字開始,所以我使用減少使一天更小。從技術上講,只要它不會使當前的日子消極,它可以是任何數字。無論天數是68846,200還是1,小時數和分鐘數仍然可以相同計算,因此這部分實際上是不相關的。爲了調試,我觀察了什麼時候改變了時間,並且目前是在一小時之內和在過去30。如果按照預期的方式運行,那將是:00,:20和:40。 –