// Create our sprites
 ship = AddSprite<ShipSprite>();
 barrier1 = AddSprite<BarrierSprite>();
 barrier2 = AddSprite<BarrierSprite>();
 barrier3 = AddSprite<BarrierSprite>();
 barrier4 = AddSprite<BarrierSprite>();
 missile = AddSprite<MissileSprite>();
 ufo = AddSprite<UfoSprite>();
 //line = AddSprite<LineSprite>();
 // Position the barriers
 barrier1.X = -60;
 barrier2.X = -20;
 barrier3.X = 20;
 barrier4.X = 60;
 // Create our texts
 Player1ScoreText = AddText(new Text
 {
     Alignment = HorizontalAlignments.Left,
     VerticalAlign = VerticalAlignments.Top,
     Scale = 0.4f,
     Position = new Vector2(-100f, 100f),
     Color = Color.White,
     Value = "Player 1 Score: " + SpaceInvaders.Player1Score
 });
 Player2ScoreText = AddText(new Text
 {
     Alignment = HorizontalAlignments.Right,
     VerticalAlign = VerticalAlignments.Top,
     Scale = 0.4f,
        }

        PlayScreenModes Mode = PlayScreenModes.Init;
        // Sprites on the screen
        public ShipSprite ship;
        MissileSprite missile;
        List<AlienMissileSprite> alienMissiles = new List<AlienMissileSprite>();
        UfoSprite ufo;
        BarrierSprite barrier1;
        BarrierSprite barrier2;
        BarrierSprite barrier3;
        BarrierSprite barrier4;
        //LineSprite line;
        List<AlienSprite> aliens = new List<AlienSprite>();
        List<LivesSprite> lifesprites = new List<LivesSprite>();
        float MoveWaitSeconds;
        float AlienMoveXStep = 10;
        float AlienMoveYStep = 10;
        float AlienHitBottomY = -70;
        float MoveWaitPercent = 0.97f;
        int level;
        int alienMoveSound = 1;
        int AlienCount;
        public int ActivePlayer;
        public int Lives = 3;
        AlienDirections alienDirection;
        // Text on the screen
        Text shipStatusText;
        Text DebugText;
Example #3
0
        /// <summary>
        /// Start the play screen
        /// </summary>
        public override void StartScene()
        {
            if (Mode == PlayScreenModes.Init)
            {
                Lives = 3;
                lifesprites.Clear();
                Sprites.RemoveAll(s => s is LivesSprite);
                Costume lifecostume = new Costume();
                lifecostume.Load("Ship");
                lifecostume.YCenter = VerticalAlignments.Bottom;
                float lifeSpacing = 10;
                for (int i = 1; i <= Lives; i++)
                {
                    LivesSprite newLifeSprite = AddSprite <LivesSprite>();
                    newLifeSprite.X       = LivesText.Position.X + 21 + ((i - 1) * lifeSpacing);
                    newLifeSprite.Costume = lifecostume;
                    lifesprites.Add(newLifeSprite);
                }
                Score = 0;
                Level = 0;
                StartLevel();
                HighScoreText.Value = "High Score: " + SpaceInvaders.HighScore;
                ufo.Reset();
                MoveWaitSeconds = 1;
                alienDirection  = AlienDirections.Right;

                ship.Hide();
            }
            ShowPlayerNumber();
        }
Example #4
0
        /// <summary>
        /// Move all of the aliens
        /// </summary>
        void Move()
        {
            if (Mode != PlayScreenModes.Playing)
            {
                return;
            }

            // Move all of the aliens left or right, and keep track if any touched an edge
            bool TouchedEdge = false;

            foreach (AlienSprite alien in aliens)
            {
                if (alien.State == AlienStates.Alive)
                {
                    if (alienDirection == AlienDirections.Right)
                    {
                        alien.X += AlienMoveXStep;
                        if (alien.IsTouchingRight())
                        {
                            TouchedEdge = true;
                        }
                    }
                    else
                    {
                        alien.X -= AlienMoveXStep;
                        if (alien.IsTouchingLeft())
                        {
                            TouchedEdge = true;
                        }
                    }
                    alien.alienMove();
                }
            }

            // Did any aliens hit an edge
            if (TouchedEdge)
            {
                // We touched an edge, so next time we'll use a different direction
                if (alienDirection == AlienDirections.Right)
                {
                    alienDirection = AlienDirections.Left;
                }
                else
                {
                    alienDirection = AlienDirections.Right;
                }

                // Schedule the next move to be down
                Wait(MoveWaitSeconds, MoveDown);

                // The time after next, continue moving across
                Wait(MoveWaitSeconds * 2, Move);
            }
            else
            {
                // Didn't hit an edge, just schedule the next move
                Wait(MoveWaitSeconds, Move);
            }

            playMoveSound();
        }