public static void targetErreicht() { System.Diagnostics.Debug.WriteLine("Start new Target Thread"); bool zielnichterreicht = true; do { int goalsArrived = anzTargets; foreach (Kiste k in holder) { Feld testield = FieldMap_2D[k.getAlternatePoint().Y, k.getAlternatePoint().X]; if (testield.GetType().Name == "Target") { goalsArrived--; } //k.getAlternatePoint() } if (goalsArrived == 0) { zielnichterreicht = false; } System.Threading.Thread.Sleep(100); }while (zielnichterreicht); if (Playground != null) { End(); } }
public static Boolean hidding(object targetField) { Feld FieldCache = (Feld)targetField; if (FieldCache.block) { return(true); } return(false); }
public static bool shift(Kiste kiste, Feld feld2, Direction direction) { bool secondIsNotKiste = true; bool returnWert = false; Point targetPoint = AltPoint(kiste.getAlternatePoint(), direction); //Point test = Point.Add(kiste.getAlternatePoint(), new Size(0, -1)); foreach (Kiste k in holder) { if (kiste.getAlternatePoint().Equals(k.getAlternatePoint())) { continue; } if (targetPoint.Equals(k.getAlternatePoint())) { secondIsNotKiste = false; } } if (!hidding(feld2) && secondIsNotKiste) { switch (direction) { case Direction.Up: kiste.highAdding(); returnWert = true; break; case Direction.Down: kiste.downAdding(); returnWert = true; break; case Direction.Left: kiste.leftAdding(); returnWert = true; break; case Direction.Right: kiste.rightAdding(); returnWert = true; break; default: throw new Exception("Direction Error"); } shifts++; } return(returnWert); }