public PlayerState( int number, string name, ColorState color, PositionState position, DirectionState direction, bool alive) { this.Number = number; this.Name = name; this.Color = color; this.Position = position; this.Direction = direction; this.Alive = alive; }
/// <summary> /// 与えられた位置から与えられた方向に進んだ次の位置を求める。 /// 例えば (1, 2), Right を渡すと (2, 2) を返す。 /// </summary> /// <param name="pos">位置</param> /// <param name="dir">向き</param> /// <returns>次の位置</returns> public static PositionState GetNextPosition(PositionState pos, DirectionState dir) { switch (dir.Value) { case Direction.Right: return new PositionState(pos.X + 1, pos.Y); case Direction.RightUp: return new PositionState(pos.X + 1, pos.Y - 1); case Direction.Up: return new PositionState(pos.X, pos.Y - 1); case Direction.LeftUp: return new PositionState(pos.X - 1, pos.Y - 1); case Direction.Left: return new PositionState(pos.X - 1, pos.Y); case Direction.LeftDown: return new PositionState(pos.X - 1, pos.Y + 1); case Direction.Down: return new PositionState(pos.X, pos.Y + 1); case Direction.RightDown: return new PositionState(pos.X + 1, pos.Y + 1); } throw new ArgumentException(); }
/// <summary> /// 与えられた向きを右(時計回り)に45度回転した向きを取得する。 /// </summary> /// <param name="dir">向き</param> /// <returns>右に45度回転した向き</returns> public static DirectionState GetRight(DirectionState dir) { switch (dir.Value) { case Direction.Right: return new DirectionState(Direction.RightDown); case Direction.RightUp: return new DirectionState(Direction.Right); case Direction.Up: return new DirectionState(Direction.RightUp); case Direction.LeftUp: return new DirectionState(Direction.Up); case Direction.Left: return new DirectionState(Direction.LeftUp); case Direction.LeftDown: return new DirectionState(Direction.Left); case Direction.Down: return new DirectionState(Direction.LeftDown); case Direction.RightDown: return new DirectionState(Direction.Down); } throw new ArgumentException(); }
public InitialPlayerState(PositionState position, DirectionState direction) { this.Position = position; this.Direction = direction; }
public bool Equals(DirectionState other) { if ((object)other == null) return false; return this.Value.Equals(other.Value); }