2017-03-12 52 views
0

作爲一個人的工作,我必須在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)等等,直到結束燃燒的情況下(這將是最後被改變)。

我應該如何使用這個調度計時器?

謝謝你的回覆! :)

+0

我認爲你的'LesArbresSontCalcines'的每個計時器刻度,你只想改變一個或兩個「Feu」。一旦完成,你應該退出。然後再過8秒鐘一兩次。也許通過Math.Random選擇多少。目前您的for循環只是一次執行全部。 – user326608

回答

0

您需要重新設計處理程序。創建類成員int [7] j和int i = 0;

然後在處理程序索引j數組中使用i值來確定j索引是什麼。然後增加j指數然後增加i mod 7.所以現在需要560秒來完成序列。

0

謝謝你的回答!我會盡力修復它! :)

祝您有美好的一天!