예제 #1
0
        void generateFood()
        {
            int viewStartX = player.body[0].X - (Width / 2) - 20;
            int viewStartY = player.body[0].Y - (Height / 2) - 20;

            int viewEndX = player.body[0].X + (Width / 2) + 20;
            int viewEndY = player.body[0].Y + (Height / 2) + 20;


            for (int i = 0; i < 20; i++)
            {
                Point f = new Point(randomizer.Next(viewStartX, viewEndX), randomizer.Next(viewStartY, viewEndY));
                if (!food.Contains(f))
                {
                    food.Add(f);
                }
            }

            int         x, y;
            SpecialFood fd;

            for (int i = 0; i < 8; i++)
            {
                x  = randomizer.Next(viewStartX - 3000, viewEndX + 3000);
                y  = randomizer.Next(viewStartY - 3000, viewEndY + 3000);
                fd = new SpecialFood(new Point(x, y), "coffee");
                special_food.Add(fd);
            }

            for (int i = 0; i < 2; i++)
            {
                x  = randomizer.Next(viewStartX - 5000, viewEndX + 5000);
                y  = randomizer.Next(viewStartY - 5000, viewEndY + 5000);
                fd = new SpecialFood(new Point(x, y), "shield");
                special_food.Add(fd);
            }
        }
예제 #2
0
        void generateNewSpecialFood(string effectName, int viewStartX, int viewEndX, int viewStartY, int viewEndY)
        {
            SpecialFood fd;
            Point       f;
            double      angle = (player.angle * 180 / Math.PI) + 180;

            //south-east
            if (angle <= 340 && angle >= 290)
            {
                int side = randomizer.Next(0, 2);
                if (side == 0)
                {
                    f = new Point(randomizer.Next(viewEndX + 1000, viewEndX + 4000), randomizer.Next(viewStartY, viewEndY));                     //east
                }
                else
                {
                    f = new Point(randomizer.Next(viewStartX, viewEndX), randomizer.Next(viewEndY + 1000, viewEndY + 3000));                    //south
                }
            }
            //north-east
            else if (angle >= 20 && angle <= 70)
            {
                int side = randomizer.Next(0, 2);
                if (side == 0)
                {
                    f = new Point(randomizer.Next(viewStartX, viewEndX), randomizer.Next(viewStartY - 3000, viewStartY - 300));                    //north
                }
                else
                {
                    f = new Point(randomizer.Next(viewEndX + 300, viewEndX + 3000), randomizer.Next(viewStartY, viewEndY));                    //east
                }
            }
            //south-west
            else if (angle >= 200 && angle <= 250)
            {
                int side = randomizer.Next(0, 2);
                if (side == 0)
                {
                    f = new Point(randomizer.Next(viewStartX, viewEndX), randomizer.Next(viewEndY + 300, viewEndY + 3000));                    //south
                }
                else
                {
                    f = new Point(randomizer.Next(viewStartX - 3000, viewStartX - 300), randomizer.Next(viewStartY, viewEndY));                    //west
                }
            }
            //north-west
            else if (angle >= 110 && angle <= 160)
            {
                int side = randomizer.Next(0, 2);
                if (side == 0)
                {
                    f = new Point(randomizer.Next(viewStartX, viewEndX), randomizer.Next(viewStartY - 3000, viewStartY - 300));                    //north
                }
                else
                {
                    f = new Point(randomizer.Next(viewStartX - 3000, viewStartX - 300), randomizer.Next(viewStartY, viewEndY));                    //west
                }
            }
            //east
            else if (angle < 20 || angle > 340)
            {
                f = new Point(randomizer.Next(viewEndX + 300, viewEndX + 3000), randomizer.Next(viewStartY, viewEndY));
            }
            //west
            else if (angle > 160 && angle < 200)
            {
                f = new Point(randomizer.Next(viewStartX - 3000, viewStartX - 300), randomizer.Next(viewStartY, viewEndY));
            }
            //south
            else if (angle > 250 && angle < 290)
            {
                f = new Point(randomizer.Next(viewStartX, viewEndX), randomizer.Next(viewEndY + 300, viewEndY + 3000));
            }
            //north
            else
            {
                f = new Point(randomizer.Next(viewStartX, viewEndX), randomizer.Next(viewStartY - 3000, viewStartY - 300));
            }

            fd = new SpecialFood(f, effectName);
            special_food.Add(fd);
        }