Esempio n. 1
0
        public IEnumerable <PreventRectOrdering> iterPreventRectsOrdering2(System.Drawing.Rectangle rect)
        {
            foreach (var preventRect in iterPreventRects())
            {
                double dist = Math.Sqrt(Math.Pow(rect.Y - preventRect.Y, 2) - Math.Pow(rect.X - preventRect.X, 2));
                // var a = Point.Subtract(new Point(rect.X, rect.Y), new Point(preventRect.X, preventRect.Y));
                var item = new PreventRectOrdering()
                {
                    rect = preventRect,
                    dist = dist,
                };

                yield return(item);
            }
        }
Esempio n. 2
0
        private Pt _calcPreventPt()
        {
            // Console.WriteLine("{0} _preventCollision", snake);

            List <PreventRectOrdering> rectResult = new List <PreventRectOrdering>();

            var headPreventCollisionRect = snake.headPreventCollisionRect;

            foreach (var preventRect in snake.iterPreventRects())
            {
                bool isCollision = _gamePlay.scene.hitTestCollision(preventRect, _ignorePreventCollisionIds);
                //

                if (isCollision == false)
                {
                    double dist = Math.Sqrt(Math.Pow(preventRect.X - headPreventCollisionRect.X, 2) + Math.Pow(preventRect.Y - headPreventCollisionRect.Y, 2));

                    double weighted = dist;

                    var item = new PreventRectOrdering()
                    {
                        x        = preventRect.X,
                        y        = preventRect.Y,
                        weighted = dist,
                    };

                    rectResult.Add(item);
                }
            }

            if (rectResult.Count > 0)
            {
                // Console.WriteLine("{0} FindPrevent={1}", snake, rectResult.Count);

                var rndResult = (from x in rectResult orderby x.weighted descending select x).First();

                return(new Pt()
                {
                    x = rndResult.x, y = rndResult.y
                });
            }

            return(null);
        }