我正在制作一个类似于蛇的简单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可以比玩家更快地移动? 非常感谢提前!
答案 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为另一个值。