public void Update(GameTime gameTime, Carte carte, ContentManager content)
        {
            rect.X = (int)position.X;
            rect.Y = (int)position.Y;

            in_collision = Moteur_physique.Zellagui_barreMouvante_mur(this, carte.List_Mur, gravity);
            if (in_collision)
                gravity *= -1;
            else
                position.X += gravity * vitesseBar;

        }
Example #2
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()
 {
     // TODO: Add your initialization logic here
     this.graphics.IsFullScreen = false;
     this.graphics.PreferredBackBufferWidth = Divers.Largeur_Ecran;
     this.graphics.PreferredBackBufferHeight = Divers.Hauteur_Ecran;
     this.graphics.ApplyChanges();
     this.Window.Title = "VVVVVV";
     this.Window.AllowUserResizing = true;
     carte = new Carte("carte.txt");
     hero = new Heros(Divers.CaseDepart_heros, new Rectangle(1, 1, 18, 32), Keys.Up, Keys.Down, Keys.Right, Keys.Left);
     base.Initialize();
 }
Example #3
0
        public void Update(GameTime gameTime, Carte carte, ref Rectangle camera, ContentManager content)
        {
            // Mise a jour des positions du rectangle autour du heros (pour la gestion des collisions)
            rect.X = (int)position.X;
            rect.Y = (int)position.Y;

            // Interaction avec les touches de changement de gravité
            if (Keyboard.GetState().IsKeyDown(Keys.V) && !moving_up_down)
            {
                gravity_Y *= -1;
            }
            else if (Keyboard.GetState().IsKeyDown(up) && !moving_up_down)
            {
                gravity_Y = -1;
            }
            else if (Keyboard.GetState().IsKeyDown(down) && !moving_up_down)
            {
                gravity_Y = 1;
            }

            // Interaction avec les touches de déplacement gauche/droite
            if (Keyboard.GetState().IsKeyDown(left)) // gauche
            {
                gravity_X = -1;
            }
            if (Keyboard.GetState().IsKeyDown(right)) // droite
            {
                gravity_X = 1;
            }
            if (Keyboard.GetState().IsKeyDown(left) || (Keyboard.GetState().IsKeyDown(right)))
            {
                if (!in_collision_right_left)
                {
                    // animation du sprite
                    if (gravity_Y < 0 && gravity_X > 0)
                    {
                        SourceRectangle = new Rectangle((int)index * 18, 67, Width, Height);
                    }
                    else if (gravity_Y > 0 && gravity_X > 0)
                    {
                        SourceRectangle = new Rectangle((int)index * 18, 1, Width, Height);
                    }
                    else if (gravity_Y < 0 && gravity_X < 0)
                    {
                        SourceRectangle = new Rectangle((int)index * 18, 100, Width, Height);
                    }
                    else //(gravity_Y > 0 && gravity_X < 0)
                    {
                        SourceRectangle = new Rectangle((int)index * 18, 34, Width, Height);
                    }

                    index += gameTime.ElapsedGameTime.Milliseconds * vitesseAnimation;

                    if (index >= maxIndex)
                    {
                        index = 0f;  // animation sprite
                    }
                    // deplacement du héros vers la droite/gauche
                    position.X += gravity_X * vitesseHeros / 2;
                }
            }

            // Mise à jour de la camera pour le Scrolling
            if (position.Y - camera.Y * 32 < 0)
            {
                camera.Y = 0;
            }
            if (position.Y + camera.Y * 32 > Divers.Hauteur_Ecran - Height)
            {
                camera.Y = 16;
            }
            if (position.X - camera.X * 32 < 0)
            {
                camera.X = 0;
            }
            if (position.X + camera.X > Divers.Largeur_Ecran - Width)
            {
                camera.X = 16;
            }

            // Detection des collisions
            in_collision_up_down = Moteur_physique.Zellagui_heros_up_down(this, carte.List_Mur, gravity_Y) || // Vers le haut/bas
                                   Moteur_physique.Zellagui_heros_barreMouvante(this, carte.List_BarreMouvante, gravity_Y) || //barres mouvantes
                                   Moteur_physique.Zellagui_barreRebondissante(this, carte.List_BarreRebondissante); //barres rebondissantes


            // detection des collisions vers la gauche/droite
            in_collision_right_left = Moteur_physique.Zellagui_heros_right_left(this, carte.List_Mur, gravity_X);

            // Cas d'arret de deplacement si collision
            if (!in_collision_up_down)
            {
                if (gravity_Y < 0) // on retourne le heros quand il change de gravité
                {
                    SourceRectangle = new Rectangle(1, 67, Width, Height);
                }
                else
                {
                    SourceRectangle = new Rectangle(1, 1, Width, Height);
                }

                moving_up_down = true;
                position.Y    += gravity_Y * vitesseHeros;
            }
            else
            {
                moving_up_down = false;
            }

            // Collision avec les pics
            if (Moteur_physique.Zellagui_pic(this, carte.List_Pic)) // mise a jour de la position / gravité / animation du héros.
            {
                position = Divers.CaseDepart_heros;
                if (carte.List_Teleporteur[Moteur_physique.last_tel].SourceRectangle.Value.Y == 36)
                {
                    gravity_Y       = -1;
                    SourceRectangle = new Rectangle(1, 67, Width, Height);
                }
                else
                {
                    gravity_Y       = 1;
                    SourceRectangle = new Rectangle(1, 1, Width, Height);
                }
            }

            // Collision avec les teleporteurs
            Moteur_physique.Zellagui_teleporteur(this, carte.List_Teleporteur);
        }
Example #4
0
        public void Update(GameTime gameTime, Carte carte, ref Rectangle camera, ContentManager content)
        {
            // Mise a jour des positions du rectangle autour du heros (pour la gestion des collisions)
            rect.X = (int)position.X;
            rect.Y = (int)position.Y;

            // Interaction avec les touches de changement de gravité
            if (Keyboard.GetState().IsKeyDown(Keys.V) && !moving_up_down)
                gravity_Y *= -1;
            else if (Keyboard.GetState().IsKeyDown(up) && !moving_up_down)
                gravity_Y = -1;
            else if (Keyboard.GetState().IsKeyDown(down) && !moving_up_down)
                gravity_Y = 1;

            // Interaction avec les touches de déplacement gauche/droite
            if (Keyboard.GetState().IsKeyDown(left)) // gauche
                gravity_X = -1;
            if (Keyboard.GetState().IsKeyDown(right)) // droite          
                gravity_X = 1;
            if (Keyboard.GetState().IsKeyDown(left) || (Keyboard.GetState().IsKeyDown(right)))
                if (!in_collision_right_left)
                {
                    // animation du sprite
                    if (gravity_Y < 0 && gravity_X > 0)
                        SourceRectangle = new Rectangle((int)index * 18, 67, Width, Height);
                    else if (gravity_Y > 0 && gravity_X > 0)
                        SourceRectangle = new Rectangle((int)index * 18, 1, Width, Height);
                    else if (gravity_Y < 0 && gravity_X < 0)
                        SourceRectangle = new Rectangle((int)index * 18, 100, Width, Height);
                    else //(gravity_Y > 0 && gravity_X < 0)
                        SourceRectangle = new Rectangle((int)index * 18, 34, Width, Height);

                    index += gameTime.ElapsedGameTime.Milliseconds * vitesseAnimation;

                    if (index >= maxIndex)
                        index = 0f;  // animation sprite           

                    // deplacement du héros vers la droite/gauche
                    position.X += gravity_X * vitesseHeros / 2;
                }

            // Mise à jour de la camera pour le Scrolling
            if (position.Y - camera.Y * 32 < 0)
                camera.Y = 0;
            if (position.Y + camera.Y * 32 > Divers.Hauteur_Ecran - Height)
                camera.Y = 16;
            if (position.X - camera.X * 32 < 0)
                camera.X = 0;
            if (position.X + camera.X > Divers.Largeur_Ecran - Width)
                camera.X = 16;

            // Detection des collisions
            in_collision_up_down = Moteur_physique.Zellagui_heros_up_down(this, carte.List_Mur, gravity_Y) // Vers le haut/bas
                || Moteur_physique.Zellagui_heros_barreMouvante(this, carte.List_BarreMouvante, gravity_Y) //barres mouvantes
                || Moteur_physique.Zellagui_barreRebondissante(this, carte.List_BarreRebondissante); //barres rebondissantes


            // detection des collisions vers la gauche/droite
            in_collision_right_left = Moteur_physique.Zellagui_heros_right_left(this, carte.List_Mur, gravity_X);

            // Cas d'arret de deplacement si collision
            if (!in_collision_up_down)
            {
                if (gravity_Y < 0) // on retourne le heros quand il change de gravité
                    SourceRectangle = new Rectangle(1, 67, Width, Height);
                else
                    SourceRectangle = new Rectangle(1, 1, Width, Height);

                moving_up_down = true;
                position.Y += gravity_Y * vitesseHeros;
            }
            else
                moving_up_down = false;

            // Collision avec les pics
            if (Moteur_physique.Zellagui_pic(this, carte.List_Pic)) // mise a jour de la position / gravité / animation du héros.
            {
                position = Divers.CaseDepart_heros;
                if (carte.List_Teleporteur[Moteur_physique.last_tel].SourceRectangle.Value.Y == 36)
                {
                    gravity_Y = -1;
                    SourceRectangle = new Rectangle(1, 67, Width, Height);
                }
                else
                {
                    gravity_Y = 1;
                    SourceRectangle = new Rectangle(1, 1, Width, Height);
                }
            }

            // Collision avec les teleporteurs
            Moteur_physique.Zellagui_teleporteur(this, carte.List_Teleporteur);
        }