作爲一個人的工作,我必須在WPF中進行森林火災模擬。我該如何冷卻wpf中的循環?森林火災模擬
我用網格創建了所有的地圖,並使用了一個數組。 通過一個隨機數添加火焰(當數組爲ex = case =「Forest」時)。 火正在燃燒所有的「森林案例」,它取決於風(N S E W等)。一切工作正常!
但我遇到了一個小問題,通過「消防循環」。我的意思是,當我點擊我的按鈕「火災進展」(火災擴展)時,所有的森林情況都以同時的方式燃燒(方向是正確的,只有正確方向的情況纔會燃燒,問題不在這裏)
我想冷卻時間這個循環,因爲每個案件後情況將被燒燬,如:。
案例森林燒傷等待案例林2度燙傷等,而不是在所有的情況下。 (風的)正確的方向
我試圖使用調度計時器(TimeSpan)。但沒有成功。唯一的工作是循環的結果是減速(秒,毫秒,天,無論)但所有情況c在同一時間絞死。而不是一個一個。
道歉,如果我的英文不是語法正確!
這裏是我的代碼:
private void DeclencherLeFeu()
{
TempsDuJeu = new DispatcherTimer();
TempsDuJeu.Interval = TimeSpan.FromSeconds(1);
TempsDuJeu.Tick += new EventHandler(OnTimerGameEvent);
TempsDuJeu.Start();
TempsQueMetLeFeuPourBrulerLaForet = new DispatcherTimer();
TempsQueMetLeFeuPourBrulerLaForet.Interval = TimeSpan.FromSeconds(8);
TempsQueMetLeFeuPourBrulerLaForet.Tick += new EventHandler(LesArbresSontCalcines);
TempsQueMetLeFeuPourBrulerLaForet.Start();
}
注:LesArbresSontCalcines意味着英語的樹木被燒燬。它調用一個函數只是如下:
private void LesArbresSontCalcines(object sender, EventArgs e)
{
for (int i = 0; i < 7; i++)
{
for (int j = 1; j < 10; j++)
{
if (MonTableau[i, j].Name == "Feu")
{
MonTableau[i, j].Source = new BitmapImage(new Uri(@"E:\tp999\wpfapplication13\wpfapplication13\ArbreMort1.gif", UriKind.RelativeOrAbsolute));
ImageBehavior.SetAnimatedSource(MonTableau[i, j], new BitmapImage(new Uri(@"E:\tp999\wpfapplication13\wpfapplication13\ArbreMort1.gif", UriKind.RelativeOrAbsolute)));
MonTableau[i, j].Name = "Noir";
}
}
}
}
注:所有燃燒的情況下(我用的森林情況下fire.gif)與ArbreMort1.gif替換(代表塗黑樹)。
在我的代碼的這一部分,所有的燃燒情況只是在同一時間改變爲死樹。而不是一個一個。
我試圖做的第一個燃燒的情況下將首先被黑暗(與ArbreMort1.gif)等等,直到結束燃燒的情況下(這將是最後被改變)。
我應該如何使用這個調度計時器?
謝謝你的回覆! :)
我認爲你的'LesArbresSontCalcines'的每個計時器刻度,你只想改變一個或兩個「Feu」。一旦完成,你應該退出。然後再過8秒鐘一兩次。也許通過Math.Random選擇多少。目前您的for循環只是一次執行全部。 – user326608