Exemple #1
0
 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;
 }
Exemple #2
0
 /// <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();
 }
Exemple #3
0
 /// <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);
 }