개인 작업으로 WPF에서 산불 시뮬레이션을 수행해야합니다.어떻게 wpf에서 루프를 재사용 할 수 있습니까? Forest Fire Simulation
모든지도를 그리드로 만들고 배열을 사용했습니다. 화재는 난수를 통해 추가됩니다 (예 : ex : case = "Forest"일 때 배열에 있음). 불은 모든 "산림 사건"을 태우고 있으며 바람에 의존합니다 (N S E W 등). 모든 것이 잘 작동합니다!
그러나 "불의 루프"를 통해 사소한 문제가 발생합니다. 내 단추 '화재 진도'(화재 확장을 수행함)를 클릭하면 모든 숲 사건이 동시에 발생합니다. (방향은 정확하고 올바른 방향의 경우 만 화상을 입습니다. 문제는 여기에 없습니다.)
경우이 같은 연소 될 것입니다 후 나는 각각의 경우로이 루프를 쿨 다운 싶었 :...
케이스 숲 레코딩합니다 모든 경우를 사례 숲이 화상을 기다립니다 등등 그리고 없습니다.. 오른쪽 방향 (바람의)
디스패처 타이머 (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로 교체하는 것은 (A 검게 나무를 나타냅니다) 그냥 아래와 같이 함수를 호출합니다.
내 코드의이 부분에서 모든 레코딩 케이스는 같은 시간에 죽은 트리로 변경됩니다. 그리고 하나씩.
첫 번째 레코딩 케이스가 (ArbreMort1.gif와 함께) 어둡게 처리되고 끝 레코딩 케이스 (변형 될 마지막 것까지)가 될 것입니다.
이 디스패처 타이머는 어떻게 사용해야합니까?
답장을 보내 주셔서 감사합니다. :)
'LesArbresSontCalcines'의 각 타이머 틱에 대해 하나 또는 두 개의 "Feu"만 변경하려고한다고 생각합니다. 끝나면 끝내야합니다. 그런 다음 또 다른 8 초 후 하나 또는 두 개 더. 어쩌면 Math.Random을 통해 당신은 얼마나 많은 것을 선택할 것인가. 현재 for 루프는 모든 것을 한 번에 실행합니다. – user326608