2

在设计 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 商店应用程序,是否有一种众所周知的模式来解决这种情况?

4

2 回答 2

1

您可以使用VisualStateManager. 使用它,您只需在 VM 中设置一个值,然后对视图中的视图状态做出反应。

于 2012-10-10T18:23:34.047 回答
0

不确定您是否指的是更字面意义上的游戏循环,但以防万一有人搜索,您可以通过以下三种方式在 Windows 8 中创建游戏循环:

  1. 使用 XNA/MonoGame 并完成它。需要承担很大的外部依赖
  2. 使用 CompositionTarget.Rendering。简单,但无法知道帧之间经过了多少时间
  3. 使用 MonoGame 的 GameTimer。使用幕后的最后一种方法和秒表来跟踪经过的时间。如果您不使用 XNA,可能是您最好的选择

更多细节可以在http://www.spottedzebrasoftware.com/blog/windows-8-game-loop.html找到

于 2013-05-06T12:03:02.953 回答