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; }
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(); }
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); }
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; } }
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(); }
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); } } }
/// <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); } }
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); }
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; } }
/// <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(); }
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; }