/// <summary> /// Initializes a new instance of the <see cref="Marcher4"/> class. /// </summary> /// <param name="startDirection">The start direction.</param> /// <param name="startX">The start X.</param> /// <param name="startY">The start Y.</param> /// <remarks></remarks> public Marcher4(Door4 startDirection, int startX, int startY) { Contract.Requires(startDirection.ExactlyOneValueSet()); Contract.Requires(startX >= 0 && startY >= 0); Direction = startDirection; X = startX; Y = startY; }
/// <summary> /// Legt fest, dass eine Tür durchschritten wurde /// </summary> /// <param name="set">Das Lookup-Set</param> /// <param name="room">Der Raum</param> /// <param name="direction">Die Richtung</param> private static void SetBeenThere(HashSet<Tuple<IRoom4, Door4>> set, IRoom4 room, Door4 direction) { Contract.Requires(set != null); Contract.Requires(room != null); Contract.Requires(direction.ExactlyOneValueSet()); set.Add(new Tuple<IRoom4, Door4>(room, direction)); }
/// <summary> /// Ermittelt, ob eine Tür bereits durchschritten wurde /// </summary> /// <param name="set">Das Lookup-Set</param> /// <param name="room">Der Raum</param> /// <param name="direction">Die Richtung</param> /// <returns><c>true</c>, wenn der angegebene Raum bereits durch diese Tür verlassen wurde, ansonsten <c>false</c></returns> private static bool BeenThere(HashSet<Tuple<IRoom4, Door4>> set, IRoom4 room, Door4 direction) { Contract.Requires(set != null); Contract.Requires(room != null); Contract.Requires(direction.ExactlyOneValueSet()); return set.Contains(new Tuple<IRoom4, Door4>(room, direction)); }