不同的功能不同延迟c#

时间:2014-02-12 11:44:25

标签: c# winforms delay

我正在制作一个类似于蛇的简单c#游戏,我有两个移动方面。我有一种移动它们的方法,但是我希望它们以不同的速度移动。这是我现在所用方法的简化版本。

private async void mover()
{
    while (GlobalVar.Status == "alive")
    {
         if (GlobalVar.Direction == "up")
         {
              try { moveupp(GlobalVar.Row, GlobalVar.Column, "player"); }
              catch (System.IndexOutOfRangeException) { died(); }
         }
         if (GlobalVar.OppDirection == "up")
         {
              try { moveupp(GlobalVar.Row, GlobalVar.Column, "opp1"); }
              catch (System.IndexOutOfRangeException) { died(); }
         }
         await Task.Delay(500);
   }
}

这里,在第一个IF语句中,我的角色(玩家)向上移动,而在第二个IF语句中,对手(opp1)向上移动。它们与延迟“await Task.Delay(500);”之间的500毫秒延迟同步工作。 我的问题是,无论如何它们都可以一起运行,两者之间有不同的延迟吗?那么opp1可以比玩家更快地移动? 非常感谢提前!

1 个答案:

答案 0 :(得分:1)

我会使用两个不同的计时器而不是延迟任务。另外,我不会使用异常来控制程序流程:

private PlayerTimer_Tick(object sender, EventArgs e)
{
     if (GlobalVar.Status != "alive")
         return; // you can also stop timer in this case

     if (GlobalVar.Direction == "up")
     {
         if (GlobalVar.Column == 0)
             died();
         else
             moveupp(GlobalVar.Row, GlobalVar.Column, "player");  
     }
}

同时为opp1创建计时器,并为这些计时器设置不同的时间间隔 - 玩家为500,opp1为另一个值。