我正在从Java切换到C#,我想知道这是否可行?我想要做的是创建一个Enum {north, south, east, west}
类型的二维数组。这样我就可以调用map[1,2].north
来查明地图上的那个单元格是否有北墙。
很抱歉粗略的代码,我暂时无法访问我的电脑,所以我有点抽象。
答案 0 :(得分:3)
对于枚举:
enum Dirs { North, South, East, West }
只需将数组声明为:
Dirs[,] dirs = new Dirs[10, 10];
如果您需要每个单元格都能够有多个墙,请使用[Flags]
属性标记枚举,并使值为2的幂:
[Flags]
enum Dirs { North = 1 << 0, South = 1 << 1, East = 1 << 2, West = 1 << 3 }
因此,您可以设置,例如:
dirs[1, 2] = Dirs.North | Dirs.East;
正如评论中提到的@ Scott Chamberlain - 检查你可以做的方向:
bool hasNorthWall = dirs[1, 2].HasFlag(Dirs.North);
答案 1 :(得分:0)
试试:
private EnumName[,] arrayName;
答案 2 :(得分:0)
这是使用enum
声明和测试墙的方法。
namespace ConsoleApplication1
{
[Flags]
enum Wall
{
North = 1,
South = 2,
East = 4,
West = 8
}
static class Program
{
static void Main(string[] args)
{
int grid = 10;
var map=new Wall[grid, grid];
// fill in values here ...
if(map[1, 2].HasFlag(Wall.North))
{
// cell (2, 3) has a wall in the north direction
}
}
}
}