【发布时间】:2013-07-18 03:13:15
【问题描述】:
我正在编写一个简单的 AI 函数,它将返回移动方向(上、下、左、右、保持静止),我的第一反应是使用简单的枚举:
public enum Direction
{
None,
Up,
Down,
Left,
Right
}
但我也想有对角线方向,这意味着做一个更详细的枚举:
public enum Direction
{
None,
Up,
UpLeft,
Left,
DownLeft,
Down,
DownRight,
Right,
UpRight
}
我的功能类似于:
public Direction Move()
{
Direction moveDirection;
// Calculate direction to move
return moveDirection;
}
但是,我觉得必须有一种更优雅的方式来做到这一点。我想过为垂直和水平移动分别做一个[Flags] enum(基本上是两个bools),但是我不能包括None 的情况。
我的问题是:有没有更好(更简洁、更简洁、更易于修改/维护)的方式来指示我希望实体向哪个方向移动?约束是它应该是离散的(所以没有速度向量)。
【问题讨论】:
-
北、东北、东、东南、南、西南、西、西北
-
垂直 = 1/0/-1,水平 = 1/0/-1。它使 1 或 2 行来确定目标细胞。
-
使用Flags你可以有none case,只要定义为
= 0,其他的为2。如果你不添加任何flags(按位运算),它将是等于无。在我看来,这将是最优雅的方式。