Beispiel #1
0
        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();
            }
        }
Beispiel #2
0
        public static Boolean hidding(object targetField)
        {
            Feld FieldCache = (Feld)targetField;

            if (FieldCache.block)
            {
                return(true);
            }
            return(false);
        }
Beispiel #3
0
        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);
        }