Esempio n. 1
0
        public static Impact SearchAround(Me me)
        {
            var s  = new Sight();
            var im = new Impact(new Position(4, 5), -1);

            for (int i = 1; i < 8; i++)
            {
                foreach (var test in s.Arround(me.p, i))
                {
                    var newIm = new Impact(test);
                    if (newIm.hits > im.hits || im.hits == 0)
                    {
                        im = newIm;
                    }
                }
                ;
            }
            return(im);
        }
Esempio n. 2
0
 public static void setImpact(Impact newIm)
 {
     im = newIm;
 }
 public bool Equals(Impact im)
 {
     return(im.p.x == this.p.x && this.p.y == im.p.y);
 }
Esempio n. 4
0
        public Path AddPosition(Position p)
        {
            var im = new Impact(p);
            LinkedList <Impact> li = new LinkedList <Impact>(road);

            li.AddLast(im);

            Path path = new Path(li);

            path.score = score;
            var howSafe = Safety.IsItSafeToStand(p);

            if (Safety.isItSafeToBomb(p, p, Me.BombRange, 7))
            {
                var bonusSpeed = (howSafe > 4)? true : false;
                path.score += ((im.hits) * (3 + ((float)3 / (road.Count() + 1))));

                if (im.hits > maxHits || im.hits == maxHits && bonusSpeed)
                {
                    path.maxHits     = im.hits;
                    path.maxHitIndex = road.Count();
                }
                else
                {
                    path.maxHits     = maxHits;
                    path.maxHitIndex = maxHitIndex;
                }
            }

            if (Grid.isItem(p))
            {
                path.score += ((Me.numberOfBombs > 0)? 3 : 9);
            }


            var danger = (howSafe > 3) ? 1 : 100;

            if (Safety.IsItSafeToStand(p) > 0)
            {
                path.score = (path.score - ((3 + ((float)road.Count() / (float)howSafe)) * danger));
            }


            if (road.Count() > 0)
            {
                if (road.Last().p.Equals(p))
                {
                    path.score = path.score - (1 + (float)2 / road.Count());
                }
                if (road.Count() > 1)
                {
                    if (road.Last.Previous.Value.p.Equals(p))
                    {
                        path.score = path.score - (1 + (float)2 / road.Count());
                    }
                }
            }

            path.safeToBomb = safeToBomb;

            return(path);
        }