Xaml C中Windows 8商店应用程序的游戏循环#

时间:2012-10-10 17:47:31

标签: c# xaml windows-8 windows-runtime windows-store-apps

在设计Windows 8商店,转弯游戏应用程序(XAML / C#)时,我正在寻找一些指导。

每回合,AI都会执行一些任务,玩家会完成一些任务。这可以视为状态机/固定工作流程。

我可以考虑使用游戏循环[1]或创建和跟踪由用户输入触发的状态机中的每个状态[2]:

[1]:
where(true)
{
    BeginTurn();
    AiDoSomething1();
    await PlayerInput1();

    AiDoSomething2();
    await PlayerInput2();
    EndTurn();
}

[2]:
void PlayerInput1()
{
    lock(_lock)
    {
        if(State == State.State1)
        {
            State = State.State2;
            AiDoSomething2();
        }
    }
}

void PlayerInput2()
{
    lock(_lock)
    {
        if(State == State.State2)
        {
           State = State.State1;
           EndTurn(); BeginTurn();
           AiDoSomething1();
        }
    }
}

对于使用XAML / C#的Windows 8商店应用,是否有一种众所周知的模式可以解决这种情况?

2 个答案:

答案 0 :(得分:1)

您可以使用VisualStateManager控制视觉状态。使用此功能,您只需在VM中设置一个值,然后对视图中的视图状态做出反应。

答案 1 :(得分:0)

不确定你是否意味着游戏循环更符合字面意义,但万一有人在这里搜索,有三种方法可以在Windows 8中创建游戏循环:

  1. 使用XNA / MonoGame并完成它。需要承担巨大的外部依赖
  2. 使用CompositionTarget.Rendering。很容易,但无法知道帧之间经过了多长时间
  3. 使用MonoGame的GameTimer。使用幕后的最后一种方法和秒表来跟踪经过的时间。如果您不使用XNA,可能是您最好的选择
  4. 可以找到更多详细信息http://www.spottedzebrasoftware.com/blog/windows-8-game-loop.html