Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xaml C中Windows 8应用商店应用程序的游戏循环#_C#_Xaml_Windows 8_Windows Runtime_Windows Store Apps - Fatal编程技术网

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

C# Xaml C中Windows 8应用商店应用程序的游戏循环#,c#,xaml,windows-8,windows-runtime,windows-store-apps,C#,Xaml,Windows 8,Windows Runtime,Windows Store Apps,我想在设计Windows8应用商店的逐段游戏应用程序(XAML/C#)时获得一些指导 每回合,AI都会执行一些任务,玩家也会执行一些任务。这可以视为状态机/固定工作流 我可以考虑使用游戏循环[1],或者在由用户输入触发的状态机中创建和跟踪每个状态[2]: [1]: where(true) { BeginTurn(); AiDoSomething1(); await PlayerInput1(); AiDoSomething2(); await Playe

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

您可以使用。使用此选项,您只需在虚拟机中设置一个值,然后对视图中的视图状态做出反应。

不确定您的意思是否是更字面的游戏循环,但为了防止有人搜索到它,您可以使用以下三种方法在Windows 8中创建游戏循环:

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

  • 更多详情请参见

    您遇到了什么样的问题?你可以在你的虚拟机中坚持这种逻辑,这样就没有问题了。第一次这么做的时候,试着看看这个问题是否有已知的模式。[2] 简单明了,但工作流通过各种用户输入功能分散。这看起来不对。[1] 等待用户输入,那么这是否意味着我需要将用户输入(例如,单击按钮)绑定到触发我的(等待PlayerInput1)正在等待的事件的函数?使用
    VisualStateManager