Exemple #1
0
        public void Action(int type)
        {
            if (type == 0)
            {
                isFirst = true;
            }
            String pr      = nextC.p.x + " " + nextC.p.y;
            String act     = "";
            int    dis     = this.p.getDistance(nextC.p);
            var    targAng = gettingThere(nextC.p);
            var    speed   = (gettingThere(nextC.p) / 180.0);

            switch (type)
            {
            // Racer
            case 0:
                Console.Error.WriteLine("Speed id " + this.speed.getSpeed());

                int turn = (this.speed.getSpeed() / 80);
                turn = Math.Min(turn, 4);
                if (this.testGlide(nextC.p, turn, 600) && gettingThere(nNextC.p) > 90 && (Game.tlap > 0 || nextC.num != 0))
                {
                    pr  = nNextC.p.x + " " + nNextC.p.y;
                    act = this.testGlide(nextC.p, 1, 450)?"50":"1";
                    Console.Error.WriteLine("GLIDING !!");
                }
                else
                {
                    int print = (int)(200 - speed * 200);



                    if (targAng > 120 && dis < 1500)
                    {
                        print = 5;
                        Console.Error.WriteLine(" POSITIONING");
                    }
                    else if (targAng > 18 && getNext().getDistance(nextC.p) < 3000)
                    {
                        print = print / 2;
                        Console.Error.WriteLine("BRAKING /2");
                    }



                    act = print + "";
                }
                if (Pods.HitEn(this) || Pods.meP.ElementAt(1).getNext().equal(getNext(), 800) && shield <= 0)
                {
                    shield = 5;
                    act    = "SHIELD";
                }
                else
                {
                    shield--;
                }
                act = (kickStart)? act + " KICK ME" : act;
                Console.WriteLine(pr + " " + act);
                break;

            // BLOCKER
            case 1:

                Pod en;
                en = (Pods.enP.ElementAt(0).prog > Pods.enP.ElementAt(1).prog || (Pods.enP.ElementAt(0).prog == Pods.enP.ElementAt(1).prog&& Pods.enP.ElementAt(0).p.getDistance(this.p) < Pods.enP.ElementAt(1).p.getDistance(this.p))) ? Pods.enP.ElementAt(0) : Pods.enP.ElementAt(1);
                Pod frd = Pods.meP.ElementAt(0);
                if (goKick == true && frd.kickStart && p.getDistance(frd.p) < 1500 && Game.getNext(target.num).num == frd.nextC.num && p.getDistance(target.p) > 400)
                {
                    pr  = frd.p.x + " " + frd.p.y;
                    act = "" + 200;
                }
                else
                {
                    if (!gettingInPos)
                    {
                        target       = Game.checkPs.ElementAt((en.nextC.num + 2) % Game.checkPs.Count);
                        gettingInPos = true;
                    }


                    // Ready to Attack
                    if (en.nextC.num == target.num && en.getNext().getDistance(this.p) < 5000)
                    {
                        if (!en.getNext().equal(getNext(), 900))
                        {         // ATTACK !!
                            act = 200 + "";
                            pr  = en.getNext().x + " " + en.getNext().y;
                        }
                        else
                        {
                            act = "SHIELD";
                            pr  = en.p.x + " " + en.p.y;
                        }
                    }
                    else
                    {
                        if (this.testGlide(Game.getNext(target.num).p.getOuter(target.p.x, target.p.y, 400), 4, 600))
                        {
                            act    = " 1";
                            pr     = en.p.x + " " + en.p.y;
                            goKick = true;
                        }
                        else
                        {
                            if (this.p.equal(target.p, 2000))
                            {
                                act = "10";
                            }
                            else
                            {
                                act = "90";
                            }


                            pr = target.p.x + " " + target.p.y;
                        }
                    }
                }
                if (frd.kickStart && getNext().equal(frd.getNext(), 800))
                {
                    // act = "SHIELD GO GO ";
                    frd.kickStart = false;
                    goKick        = false;
                }
                if (Pods.HitEn(this))
                {
                    act    = "SHIELD ATTACK!";
                    goKick = false;
                }
                ;
                Console.WriteLine(pr + " " + act);
                if (((target.num + 1) % Game.checkPs.Count) == en.nextC.num)
                {
                    gettingInPos = false;
                    direct       = false;
                }

                break;
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            #region init
            string[] inputs;
            int      laps = int.Parse(Console.ReadLine());

            Game.tlap = (laps);
            Pods ps = new Pods();

            int checkpointCount = int.Parse(Console.ReadLine());
            for (int i = 0; i < checkpointCount; i++)
            {
                inputs = Console.ReadLine().Split(' ');
                int checkpointX = int.Parse(inputs[0]);
                int checkpointY = int.Parse(inputs[1]);

                Game.checkPs.Add(new CheckP(i, checkpointX, checkpointY));
            }
            ps.checkPs = Game.checkPs;
            #endregion

            // game loop
            while (true)
            {
                Console.Error.WriteLine(Game.tlap);
                #region setUp
                for (int i = 0; i < 2; i++)
                {
                    inputs = Console.ReadLine().Split(' ');
                    int x = int.Parse(inputs[0]);
                    int y = int.Parse(inputs[1]);

                    ps.SetP(i, x, y);

                    int vx = int.Parse(inputs[2]);
                    int vy = int.Parse(inputs[3]);

                    ps.getP(i).speed = new Speed(vx, vy);

                    int angle = int.Parse(inputs[4]);

                    ps.getP(i).ang = Math.Max(0, angle);

                    int nextCheckPointId = int.Parse(inputs[5]);

                    ps.getP(i).SetC(Game.checkPs.ElementAt(nextCheckPointId));
                }
                for (int i = 0; i < 2; i++)
                {
                    inputs = Console.ReadLine().Split(' ');
                    int x = int.Parse(inputs[0]);
                    int y = int.Parse(inputs[1]);

                    ps.SetP(i + 2, x, y);

                    int vx = int.Parse(inputs[2]);
                    int vy = int.Parse(inputs[3]);

                    ps.getP(i + 2).speed = new Speed(vx, vy);

                    int angle = int.Parse(inputs[4]);

                    ps.getP(i + 2).ang = angle;

                    int nextCheckPointId = int.Parse(inputs[5]);

                    ps.getP(i + 2).SetC(Game.checkPs.ElementAt(nextCheckPointId));
                }
                #endregion

                // To debug: Console.Error.WriteLine("Debug messages...");
                // using
                // using 16516
                Pods.meP.ElementAt(0).Action(0);
                Pods.meP.ElementAt(1).Action(1);
            }
        }