示例#1
0
        private void CheckBulletHits()
        {
            for (int i = 0; i < Player.ActiveBullets.Count; i++)
            {
                for (int j = 0; j < ActiveAsteroids.Count; j++)
                {
                    if (i >= Player.ActiveBullets.Count)
                    {
                        break;
                    }

                    if (Player.ActiveBullets[i].HitEntity(ActiveAsteroids[j]))
                    {
                        Player.ActiveBullets.RemoveAt(i);
                        ActiveAsteroids.AddRange(ActiveAsteroids[j].Destroy());
                        ActiveAsteroids.RemoveAt(j);
                    }
                }
            }
        }
示例#2
0
        void GenerateNewAsteroid()
        {
            // Find where to generate the asteroid
            int     xBoundsNumber = rand.Next(0, 2);
            XBounds xBound;

            int     yBoundsNumber = rand.Next(0, 2);
            YBounds yBound;

            switch (xBoundsNumber)
            {
            case 0:
                xBound = XBounds.WithinScreen;
                break;

            case 1:
                xBound = XBounds.RightOfScreen;
                break;

            case 2:
                xBound = XBounds.LeftOfScreen;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            if (xBound == XBounds.WithinScreen)
            {
                yBoundsNumber = rand.Next(0, 1);
                switch (yBoundsNumber)
                {
                case 0:
                    yBound = YBounds.AboveScreen;
                    break;

                case 1:
                    yBound = YBounds.BelowScreen;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            else
            {
                switch (yBoundsNumber)
                {
                case 0:
                    yBound = YBounds.WithinScreen;
                    break;

                case 1:
                    yBound = YBounds.AboveScreen;
                    break;

                case 2:
                    yBound = YBounds.BelowScreen;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            // Generate coords
            float x;
            float y;

            switch (xBound)
            {
            case XBounds.WithinScreen:
                x = (float)rand.Next(0, (int)screenWidth);
                break;

            case XBounds.LeftOfScreen:
                x = (float)rand.Next(-11, 0);
                break;

            case XBounds.RightOfScreen:
                x = (float)rand.Next((int)screenWidth, (int)screenWidth + 11);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            switch (yBound)
            {
            case YBounds.WithinScreen:
                y = (float)rand.Next(0, (int)screenHeight);
                break;

            case YBounds.AboveScreen:
                y = (float)rand.Next(-11, 0);
                break;

            case YBounds.BelowScreen:
                y = (float)rand.Next((int)screenHeight, (int)screenHeight + 11);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            Vector2 pos = new Vector2(x, y);

            // Generate direction by picking a random point on the screen
            float   screenX = (float)rand.Next(0, (int)screenWidth);
            float   screenY = (float)rand.Next(0, (int)screenHeight);
            Vector2 dir     = new Vector2(screenX, screenY);

            dir.Normalize();

            // Generate a speed
            float speed = (float)rand.Next(1, 3);

            // Create the asteroid
            //Asteroid a = AsteroidGenerator.GetConvexAsteroid(rand, pos, 0f, speed, dir);
            //ActiveAsteroids.Add(a);

#warning test
            Asteroid a = AsteroidGenerator.GetConvexAsteroid(2, new Vector2(400f, 300f), 0f, 0.5f, Vector2.UnitX, AsteroidSize.Huge);
            ActiveAsteroids.Add(a);
        }