2017-02-14 2 views
0

私の問題はこれです:私のゲームの日は、現実の世界の1/6になるはずです。ゲームの日は12ゲーム時間です。したがって、1つのゲーム時間は20分リアルタイムです。それがそうなっているものです。しかし、私が時間を見てみると、1時間ではなく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 
); 
} 
+1

'$ d = $ t/60/60/6 - 68646;で減算を理解できません。コメントは役に立たない... –

+0

宿題の質問のように見える。あなたはこれをデバッグするために何をしましたか? – jdv

+0

私が何かを減らさなかった場合、それは現在のゲームの日に68846になるでしょう。私は小さい番号から始めたいので、私はその日を小さくするために縮小を使用しています。技術的には、現在の日を負にしない限り、任意の数値にすることができます。その日が68846,200、または1であっても、時間と分は同じように計算されます。そのため、実際には関係はありません。デバッグするには、時が何時変わったのかを観察して、現在は1時間前と30時を過ぎています。それが期待通りに機能したら、それは00、:20、:40となります。 –

答えて

0

だから私は1日に6時間の4時間が必要な場合は、4分の1に分割する必要があります.6分周では6時間が4時間になります。除数はゲームの日の実際の生活時間の数であり、ゲームの日数は24時間ではないからです。問題が解決しました。

関連する問題