示例#1
0
文件: Ant.cs 项目: S-a-b-r/anthill
 public override void Touch(Movier other)
 {
     if (other != null && other is Food)
     {
         DoDamage(other);
     }
 }
示例#2
0
文件: Queen.cs 项目: S-a-b-r/anthill
 public override void Touch(Movier other)
 {
     if (other != null && other is Ant && other.hp >= 5)
     {
         DoDamage(other);
     }
 }
示例#3
0
文件: Queen.cs 项目: S-a-b-r/anthill
        public override (double dx, double dy) GetNextMove(IEnumerable <Movier> others)
        {
            var target = new Movier()
            {
                x = this.x + targetx, y = this.y + targety
            };

            return(Shift(target, speed));
        }
示例#4
0
        public double Dist(Movier other)
        {
            if (other == null)
            {
                return(double.MaxValue);
            }
            var cx = other.x - this.x;
            var cy = other.y - this.y;

            return(Math.Sqrt(cx * cx + cy * cy));
        }
示例#5
0
        public void DoDamage(Movier other)
        {
            if (other == null)
            {
                return;
            }
            var dmg = Math.Min(other.hp, this.damage);

            this.hp  += dmg;
            other.hp -= dmg;
        }
示例#6
0
        void AquariumObjectWhantToSpawn(Movier obj)
        {
            if (obj == null)
            {
                return;
            }
            var child = obj.CreateChild();

            if (child == null)
            {
                return;
            }
            objects.AddRange(child);
        }
示例#7
0
        public override (double dx, double dy) GetNextMove(IEnumerable <Movier> others)
        {
            var target = Nearest(others, obj => obj is Food && Dist(obj) < EYE_RANGE && Dist(obj) > 0);

            if (target == null)
            {
                target = new Movier()
                {
                    x = this.x + targetx, y = this.y + targety
                }
            }
            ;
            return(Shift(target, -speed));
        }
示例#8
0
        protected (double dx, double dy) Shift(Movier other, double shift)
        {
            if (other == null)
            {
                return(0, 0);
            }
            var dist = Dist(other);

            if (dist < 0.00001)
            {
                return(0, 0);
            }
            var cx = other.x - this.x;
            var cy = other.y - this.y;

            shift = Math.Min(shift, dist);
            return(shift * cx / dist, shift *cy / dist);
        }
示例#9
0
 public virtual void Touch(Movier other)
 {
 }