2017-06-23 31 views
2

我試圖製作一個遊戲,每個月是28天,每年有4個月。 我似乎無法找到一種方法來修改月份和年份的長度。如何在c中爲DateTime創建一個自定義年份#

看來可以製作自己的日曆,但我不知道如何處理這個問題。

+2

你必須實現一個自定義'DateTime'類型。您可能需要查看[參考源](https://referencesource.microsoft.com/#mscorlib/system/datetime.cs,df6b1eba7461813b)獲取靈感 –

+0

Jessen是對的!你必須使用這個實現,並使用它,你可以輸入你每年的日子,每月的日子等等。這只是一點點工作,但你只能實現你需要的方法。例如,只有一個構造函數等等。 –

回答

1

我不相信你可以在自定義範圍中使用DateTime。但是,除了我的頭頂上,您可以建立一個天數,月數和年數的計數器,每次計數達到28時,重置計數器並將其添加到月份計數器中,與月份計數器達到4的年份相同。

你可以使用觸發器進步的日子裏,每個玩家進入睡眠狀態或使用蜱定時器的時間,例如,讓我們說每1000 MS,每個由1

八九不離十剔增加計數器像這樣:

public void Ticker() 
    { 
     System.Timers.Timer aTimer = new System.Timers.Timer(); 
     aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
     aTimer.Interval = 1000; 
     aTimer.Enabled = true; 
    } 

    void OnTimedEvent(object source, ElapsedEventArgs e) 
    { 
     if (days < 28) 
      days++; 
     else 
      days = 0; 
     if (days == 28 && months < 4) 
      months++; 
     else if (days == 28 && months == 4) 
     { 
      months = 0; 
      years++; 
     } 
    } 
+1

你的意思是不是小於?如果你的日子變成了28,如果你在第二天之前把天數重置爲0,它永遠不會等於真。 – yes

+0

哦,是啊,我打了一杯咖啡之前..哎呀.. –

+1

我btw認爲這將是更容易的只是計算總天數,並使用模和分部得到幾個月和幾年。比如'day = totalDays%daysPerMonth'等等......優點是你可以計算出fe。時間跨度很容易。 – yes

相關問題