私は C# を使用しており、画面上のオブジェクトを操作する必要があります。座標を保持する構造体をセットアップしてから、移動できる方向の数を制限する列挙型をセットアップします。
private enum Direction
{
UpperLeft = new Coord(-1, -1),
UpperCenter = new Coord(0, -1),
UpperRight = new Coord(1, -1),
Left = new Coord(-1, 0),
Right = new Coord(1, 0),
LowerLeft = new Coord(-1, 1),
LowerCenter = new Coord(0, 1),
LowerRight = new Coord(1, 1)
};
private struct Coord
{
public int row { get; private set; }
public int col { get; private set; }
public Coord(int r, int c) : this()
{
row = r;
col = c;
}
public static Coord operator +(Coord a, Coord b)
{
return new Coord(a.row + b.row, a.col + b.col);
}
}
基本的に私が目指しているのは、割り当てられた列挙型に基づいて画面上にあるオブジェクトを移動させることです。
だから私は仮説的にこれか何かのようにそれを使用したいと思います:
public class ThingThatMovesToTheLeft
{
Direction dir = Direction.Left;
Coord pos = new Coord(0,0);
public void Move()
{
this.pos = this.dir + this.pos;
}
}
基本的に私の質問は、列挙型を構造体に型キャストして、この方法で使用できるようにする方法です。私はそれを構造体にキャストすることができないようです。(さらに、VisualStudio では文句を言わずにそれらの Coord 構造体に列挙型を割り当てることができたので、構造体を列挙型に割り当てても問題ないと思いました。これは許容される慣行ですか、それともすべきではありませんか?)