Пример #1
0
 public Balle(Raquette r, Game game, String texture, MurDeBriques mu) : base(game, texture, new Vector2(0, 0))
 {
     raquette     = r;
     murDeBriques = mu;
     vitesseX     = 3;
     vitesseY     = 3;
 }
Пример #2
0
        protected override void Initialize()
        {
            Raquette     raquette;
            Hud          hud;
            MurDeBriques mu;

            hud = new Hud(this, "score", new Vector2(10, 10));
            this.Components.Add(hud);

            raquette = new Raquette(this, "Textures/whiteSquare");
            this.Components.Add(raquette);

            mu = new MurDeBriques(this);
            this.Components.Add(mu);

            Balle balle1 = new Balle(raquette, this, "Textures/ball", mu);

            balles.Add(balle1);
            this.Components.Add(balle1);

            base.Initialize();
            this._graphics.IsFullScreen              = false;
            this._graphics.PreferredBackBufferWidth  = 800;
            this._graphics.PreferredBackBufferHeight = 600;
            this._graphics.ApplyChanges();
        }
Пример #3
0
        public void Initialize(Viewport Viewport, Raquette LaRaquette)
        {
            _Viewport = Viewport;

            Speed = 0.4f;

            Direction = new Vector2(0, -1f);

            float xPosition = LaRaquette.Position.X + (6 * LaRaquette.SizeScale);

            if (_BulletSide == BulletsSide.Right)
            {
                xPosition = LaRaquette.Position.X + (LaRaquette.Texture.Width * LaRaquette.SizeScale) - Texture.Width - (6 * LaRaquette.SizeScale);
            }

            Position = new Vector2(xPosition, LaRaquette.Position.Y);
        }
Пример #4
0
        public void HandleInput(Microsoft.Xna.Framework.Input.KeyboardState keyboardState, Raquette _Raquette)
        {
            if (keyboardState.IsKeyDown(Keys.Space) && !_Launched && _StartTimer <= 0.0f)
            {
                _Launched = true;
            }

            if (keyboardState.IsKeyDown(Keys.Space) && _Stuck)
            {
                _Stuck = false;
                PositionY = _Raquette.Position.Y - 20;
                Speed = 0.5f;
            }

            //Si la balle est stuck tant que la balle reste dans le cadre on la fait bouger avec la raquette
            if (((keyboardState.IsKeyDown(Keys.Left) && (Position.X > _Viewport.X)) || (keyboardState.IsKeyDown(Keys.Right) && (Position.X + Texture.Width) < (_Viewport.Width + _Viewport.X) )) && _Stuck)
            {
                PositionX = _Raquette.PositionX + _DistanceFromRaquette;
            }
        }
Пример #5
0
        protected override void Initialize()
        {
            // Screen stuff
            graphics.PreferredBackBufferWidth  = screenWidth;
            graphics.PreferredBackBufferHeight = screenHeight;
            graphics.ApplyChanges();

            _windowSize.X = this.graphics.PreferredBackBufferWidth;
            _windowSize.Y = this.graphics.PreferredBackBufferHeight;
            _mainFrame    = new Rectangle(0, 0, (int)GraphicsDevice.Viewport.Width, (int)GraphicsDevice.Viewport.Height); //_windowSize.X, _windowSize.Y

            _menu     = new Menu(this, _windowSize);
            _nbBalles = 3;
            _score    = 0;
            _balle    = new Balle(this, _windowSize);
            _raquette = new Raquette(this, _windowSize);

            // Affichage de la souris sur l'écran de menu
            IsMouseVisible = true;

            base.Initialize();
        }
Пример #6
0
        public void Update(Microsoft.Xna.Framework.GameTime gameTime, Balle _Balle, Raquette _Raquette)
        {
            if (_Vie != BriqueLevel.Morte)
            {
                if (_Raquette.ListeBonus.ContainsKey(BonusType.PowerBall))
                {
                    _Balle.PowerBall = true;
                }
                else
                {
                    _Balle.PowerBall = false;
                }

                bool InvertX = false;
                bool InvertY = false;
                bool Collision = false;

                //Colision Balle Venant du haut et de gauche
                if (_Balle.Direction.Y > 0 && _Balle.Direction.X > 0)
                {
                    InvertX = false;
                    InvertY = false;
                    Collision = false;

                    //Colision a gauche
                    if(CollisionRectangleGauche.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        Collision = true;
                        InvertX = true;
                    }

                    //Colision en haut
                    if (CollisionRectangleHaut.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        Collision = true;
                        InvertY = true;
                    }

                    if (!Collision && CollisionRectangleHautGauche.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        if ((Position.X - _Balle.CenterPositionX) < (Position.Y - _Balle.CenterPositionY)) //Balle plus proche du rectangle du haut
                        {
                            Collision = true;
                            InvertY = true;
                        }
                        else //Balle plus proche du rectangle du côté
                        {
                            Collision = true;
                            InvertX = true;
                        }
                    }
                }
                //Collision Balle venant du haut et de droite
                else if (_Balle.Direction.Y > 0 && _Balle.Direction.X < 0)
                {
                    InvertX = false;
                    InvertY = false;
                    Collision = false;

                    //Colision a droite
                    if (CollisionRectangleDroite.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        Collision = true;
                        InvertX = true;
                    }

                    //Colision en haut
                    if (CollisionRectangleHaut.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        Collision = true;
                        InvertY = true;
                    }

                    if (!Collision && CollisionRectangleHautDroit.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        if ((_Balle.CenterPositionX - (Position.X + C_DEFAULT_BRIQUE_WIDTH)) < (Position.Y - _Balle.CenterPositionY)) //Balle plus proche du rectangle du haut
                        {
                            Collision = true;
                            InvertY = true;
                        }
                        else //Balle plus proche du rectangle du côté
                        {
                            Collision = true;
                            InvertX = true;
                        }
                    }
                }
                //Collision Balle venant du bas et de droite
                else if (_Balle.Direction.Y < 0 && _Balle.Direction.X < 0)
                {
                    InvertX = false;
                    InvertY = false;
                    Collision = false;

                    //Colision a droite
                    if (CollisionRectangleDroite.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        Collision = true;
                        InvertX = true;
                    }

                    //Colision en bas
                    if (CollisionRectangleBas.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        Collision = true;
                        InvertY = true;
                    }

                    if (!Collision && CollisionRectangleBasDroit.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        if ((_Balle.CenterPositionX - (Position.X + C_DEFAULT_BRIQUE_WIDTH)) < (_Balle.CenterPositionY - (Position.Y + C_DEFAULT_BRIQUE_HEIGHT))) //Balle plus proche du rectangle du bas
                        {
                            Collision = true;
                            InvertY = true;
                        }
                        else //Balle plus proche du rectangle du côté
                        {
                            Collision = true;
                            InvertX = true;
                        }
                    }
                }
                //Collision Balle venant du bas et de Gauche
                else if (_Balle.Direction.Y < 0 && _Balle.Direction.X > 0)
                {
                    InvertX = false;
                    InvertY = false;
                    Collision = false;

                    //Colision a gauche
                    if (CollisionRectangleGauche.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        Collision = true;
                        InvertX = true;
                    }

                    //Colision en bas
                    if (CollisionRectangleBas.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        Collision = true;
                        InvertY = true;
                    }

                    if (!Collision && CollisionRectangleBasGauche.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY))
                    {
                        if ((Position.X - _Balle.CenterPositionX) < (_Balle.CenterPositionY - (Position.Y + C_DEFAULT_BRIQUE_HEIGHT))) //Balle plus proche du rectangle du bas
                        {
                            Collision = true;
                            InvertY = true;
                        }
                        else //Balle plus proche du rectangle du côté
                        {
                            Collision = true;
                            InvertX = true;
                        }
                    }
                }

                if (Collision)
                {
                    if (_Raquette.ListeBonus.ContainsKey(BonusType.PowerBall))
                    {
                        _Vie = BriqueLevel.Morte;
                    }
                    else
                    {
                        if (_Vie != BriqueLevel.Incassable)
                        {
                            _Vie--;
                        }

                        _Balle.ToucheBrique(InvertX, InvertY);
                    }

                    _Raquette.UpdateScore(100);

                    if (_VieOriginelle > _Vie)
                    {
                        MustReloadContent = true;
                    }
                }

                foreach (Bullets Bullet in _Raquette.ListeBullets)
                {
                    if (CollisionRectangleBrique.Intersects(Bullet.CollisionRectangle))
                    {
                        if (_Vie != BriqueLevel.Incassable)
                        {
                            _Vie--;
                        }

                        Bullet.isObsolete = true;

                        _Raquette.UpdateScore(100);

                        if (_VieOriginelle > _Vie)
                        {
                            MustReloadContent = true;
                        }
                    }
                }

                if (_Vie == BriqueLevel.Morte)
                {
                    _Raquette.UpdateScore(500);
                }
            }
            else
            {
                if (!_BonusEventuel.isObsolete)
                {
                    _BonusEventuel.Update(gameTime, _Raquette);
                }
            }
        }
Пример #7
0
        /// <summary>
        /// Update de chaque brique
        /// </summary>
        /// <param name="gameTime"></param>
        /// <param name="_Balle"></param>
        /// <param name="_Raquette"></param>
        public void Update(GameTime gameTime, Balle _Balle, Raquette _Raquette)
        {
            List<Brique> BriquesToDelete = new List<Brique>();

            foreach (Brique b in Briques)
            {
                b.Update(gameTime, _Balle, _Raquette);

                if (b.Vie == BriqueLevel.Morte && b.BonusEventuel.isObsolete) // On ne supprime la référence de la brique que lorsque que son bonus est également devenu inutile
                {
                    BriquesToDelete.Add(b);
                }
            }

            foreach (Brique b in BriquesToDelete)
            {
                Briques.Remove(b);
            }

            List<Bullets> BulletsToDelete = new List<Bullets>();

            foreach (Bullets Bullet in _Raquette.ListeBullets)
            {
                Bullet.Update(gameTime);

                if (Bullet.isObsolete)
                {
                    BulletsToDelete.Add(Bullet);
                }
            }

            foreach (Bullets Bullet in BulletsToDelete)
            {
                _Raquette.ListeBullets.Remove(Bullet);
            }
        }
Пример #8
0
        public void Update(GameTime gameTime, Raquette _Raquette)
        {
            int PositionCentreRaquette = _Raquette.CollisionRectangle.X + (_Raquette.CollisionRectangle.Width / 2);

            _StartTimer -= ElapsedTime;

            if (_Launched)
            {
                if (!_Stuck)
                {
                    if (_Raquette.ListeBonus.ContainsKey(BonusType.Fast))
                    {
                        Speed = 0.8f;
                    }
                    else
                    {
                        Speed = 0.5f;
                    }

                    if ((CenterPositionY >= (_Raquette.CollisionRectangle.Y - Rayon)) &&
                    (CenterPositionY <= (_Raquette.CollisionRectangle.Y + Rayon)) && // On ajoute qd mm le rayon en dessous pour avoir une zone de colision plus épaisse
                    (CenterPositionX >= (_Raquette.CollisionRectangle.X - Rayon)) &&
                    (CenterPositionX <= (_Raquette.CollisionRectangle.X + _Raquette.CollisionRectangle.Width + Rayon))) //Si Touche la raquette
                    {
                        float Ecart = (CenterPositionX - _Raquette.Position.X) / _Raquette.CollisionRectangle.Width; //On rammenne l'ecart entre 0 et 1

                        //double angle = (150f / 180f * Math.PI) - Ecart * (120f / 180f * Math.PI); // Pour ecart variant entre 150 et 30°  (150 - Ecart * 120) et on transforme les angle en radian

                        double angle = (130f / 180f * Math.PI) - Ecart * (80 / 180f * Math.PI); // Pour ecart variant entre 130 et 50°  (130 - Ecart * 80) et on transforme les angle en radian

                        Direction = new Vector2((float)Math.Cos(angle), -(float)Math.Sin(angle));

                        if (_Raquette.ListeBonus.ContainsKey(BonusType.Adhesive))
                        {
                            _DistanceFromRaquette = CenterPositionX - _Raquette.Position.X;
                            _Stuck = true;
                            Speed = 0f;
                        }
                    }
                }

                if ((Position.Y <= _Viewport.Y)) // Si tape le haut du cadre
                {
                    Direction = new Vector2(Direction.X, -Direction.Y);
                }

                if (Position.Y + Texture.Height >= _Viewport.Height + _Viewport.Y)  // Si tape le bas du cadre
                {
                    Speed = 0f;
                    _Out = true;
                }

                if ((Position.X <= _Viewport.X) || (Position.X + Texture.Width >= _Viewport.Width + _Viewport.X))  // Si tape un coté du cadre
                {
                    Direction = new Vector2(-Direction.X, Direction.Y);
                }
            }
            else
            {
                Speed = 0f;

                PositionX = PositionCentreRaquette - Rayon;
                PositionY = _Raquette.CollisionRectangle.Y - Texture.Height;
            }

            base.Update(gameTime);
        }
Пример #9
0
        public void Update(GameTime gameTime, Raquette _Raquette)
        {
            base.Update(gameTime);

            if (Position.Y > _screenHeight)
            {
                isObsolete = true;
            }

            if (_Raquette.CollisionRectangle.Intersects(CollisionRectangle))
            {
                _Raquette.AddBonus(_BonusType);
                isObsolete = true;
            }
        }
Пример #10
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            GameViewport = new Viewport(8, 8, 484, 592);
            InfosViewport = new Viewport(510, 30, 170, 592);

            _Infos = new Infos(InfosViewport);

            _Raquette = new Raquette(GameViewport);
            _Raquette.Initialize();

            _Balle = new Balle(GameViewport);
            _Balle.Initialize();

            _Monde = new Monde(GameViewport);
            _Monde.Initialize();

            _Menu = new Menu(Window.ClientBounds.Width, Window.ClientBounds.Height);
            _Menu.OnBoutonSelected += new EventHandler(_Menu_OnBoutonSelected);

            base.Initialize();
        }
Пример #11
0
        public void Update(GameTime gameTime, Raquette _Raquette)
        {
            _ElapsedTime += (float)gameTime.ElapsedGameTime.TotalMilliseconds;

            if (_ElapsedTime >= 1000.0f)
            {
                _Fps = _Frames;
                _Frames = 0;
                _ElapsedTime = 0;
            }

            _Vies = _Raquette.Vie;
            _Bonus = _Raquette.ListeBonus;
            _Score = _Raquette.Score;
        }