【发布时间】:2012-10-10 17:47:30
【问题描述】:
在设计 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] 很简单,但工作流程分散在各种用户输入功能中。那看起来不对。 [1] 等待用户输入,这是否意味着我需要将用户输入(例如,按钮单击)绑定到一个函数,该函数会触发我的 (await PlayerInput1) 正在等待的事件?
-
使用
VisualStateManager:msdn.microsoft.com/en-us/library/windows/apps/…
标签: c# xaml windows-8 windows-runtime windows-store-apps