CodeS-SourceS
Rechercher un code, un tuto, une réponse

Demineur game - windows phone

Soyez le premier à donner votre avis sur cette source.

Snippet vu 1 408 fois - Téléchargée 1 fois

Contenu du snippet

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Input.Touch;
using Microsoft.Xna.Framework.Media;

namespace WindowsPhoneGame6
{
    /// <summary>
    /// Type principal pour votre jeu
    /// </summary>
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        Texture2D car, background, bom,gameover,rejouer,quitter,bravo,felicitation;
        List<Carré> liste;
        SpriteFont fontMiramonte;
        int nb = 0, score_aff=0,dem=15,nb_dem=15,finir=10,stop=4,attend_gameover=55,attend_bravo=55;
        TimeSpan ts,tt;
        Boolean drapeau=false,debut=false,reussite=false,terminer;
        Animation anim2,anim_gameover,anim_bravo ;
        List<Animation> liste_anim;
        Boolean gmover = false, aff_game_over=false,aff_bravo=false,son;
        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            // La fréquence d’image est de 30 i/s pour le Windows Phone.
            TargetElapsedTime = TimeSpan.FromTicks(33);

            // Augmenter la durée de la batterie sous verrouillage.
            InactiveSleepTime = TimeSpan.FromSeconds(1);
        }

        /// <summary>
        /// Permet au jeu d’effectuer l’initialisation nécessaire pour l’exécution.
        /// Il peut faire appel aux services et charger tout contenu
        /// non graphique. Calling base.Initialize énumère les composants
        /// et les initialise.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Ajouter votre logique d’initialisation ici
            anim2 = new Animation();
            anim_gameover = new Animation();
            anim_bravo = new Animation();
            nb = 0; score_aff = 0; dem = 10; nb_dem = 10; finir = 10; stop = 4; attend_gameover = 55; attend_bravo = 55;
            drapeau = false;
            reussite = false;
            debut = false;
            gmover = false;
            aff_game_over = false;
            aff_bravo = false;
            base.Initialize();
            liste = new List<Carré>();
            liste_anim = new List<Animation>();
            son = false;
            for (int i = 65; i < 490; i += 50)
            {
                nb++;
                for (int j = 15; j < 440; j += 50)
                {
                    Rectangle r = new Rectangle(i, j, 50, 50);
                    Texture2D tx;
                    tx= Content.Load<Texture2D>("car");
                    Carré c = new Carré(r,tx,0);
                    liste.Add(c);
                }
            }
           
           for (int i = 0; i < nb_dem; i++)
           {
               Random r = new Random();
               int x = r.Next(0,liste.Count());
               if (liste[x].valeur != -1)
               {
                   liste[x].valeur = -1;
                 //  liste[x].texture = Content.Load<Texture2D>("0");
               }
               else
               {
                   i--;
               }
           }
           Boolean g=true, d=true, h=true, b=true;
           for (int i = 0; i < liste.Count(); i++)
           {
                   liste[i].g = i - nb;
                   liste[i].hg = i - nb - 1;
                   liste[i].bg = i - nb + 1;

                   liste[i].d = i + nb;
                   liste[i].hd = i + nb - 1;
                   liste[i].bd = i + nb + 1;

                   liste[i].b = i + 1;
                   liste[i].h = i - 1;
              
                   if ((i % nb) == 0)
                   {
                       liste[i].h = liste.Count() + 3;
                       liste[i].hd = liste.Count() + 3;
                       liste[i].hg = liste.Count() + 3;
                   }
                   if (((i+1) % nb) == 0)
                   {
                       liste[i].b = liste.Count()+3;
                       liste[i].bg = liste.Count() + 3;
                       liste[i].bd = liste.Count() + 3;
                   } 
               
            }

           for (int i = 0; i < liste.Count(); i++)
           {
               if(liste[i].valeur!=-1)
               {
                   if ((liste[i].h >= 0) && (liste[i].h<liste.Count()))
                   {
                       if (liste[liste[i].h].valeur == -1) liste[i].valeur++;
                   }
                   if ((liste[i].hg >= 0)&&(liste[i].hg<liste.Count())) 
                   {
                       if(liste[liste[i].hg].valeur == -1) liste[i].valeur++;
                   }

                   if ((liste[i].hd >= 0) && (liste[i].hd < liste.Count())) 
                   {
                       if (liste[liste[i].hd].valeur == -1) liste[i].valeur++;
                   }

                   if ((liste[i].b >=0) && (liste[i].b < liste.Count())) 
                   {
                       if(liste[liste[i].b].valeur == -1) liste[i].valeur++;
                   }
                   
                   if ((liste[i].bg >=0)&&(liste[i].bg<liste.Count())) 
                       if (liste[liste[i].bg].valeur == -1) liste[i].valeur++;
                   
                   if ((liste[i].bd >=0) &&(liste[i].bd<liste.Count()))
                       if(liste[liste[i].bd].valeur == -1) liste[i].valeur++;

                   if ((liste[i].g >= 0) && (liste[i].g < liste.Count())) 
                       if (liste[liste[i].g].valeur == -1) liste[i].valeur++;

                   if ((liste[i].d >= 0) && (liste[i].d < liste.Count())) 
                       if (liste[liste[i].d].valeur == -1) liste[i].valeur++;
                   /**/
               }

           }
            
           TouchPanel.EnabledGestures = GestureType.Tap;
        }

        /// <summary>
        /// LoadContent est appelé une fois par partie. Emplacement de chargement
        /// de tout votre contenu.
        /// </summary>
        /// 

       
        protected void open( int i)
        {
            liste[i].valide = 1;
            liste[i].open = 5;
                
            //liste[i].texture = Content.Load<Texture2D>("0");
            if ((liste[i].h >= 0) && (liste[i].h <= liste.Count()) && ((liste[liste[i].h].valeur!=-1)))
            {
                if (liste[liste[i].h].open != 5)
                {
                    liste[liste[i].h].texture = Content.Load<Texture2D>(liste[liste[i].h].valeur + "");
                    liste[liste[i].h].valide = 1;
                    liste[liste[i].h].open = 1;
                }
            }
            if ((liste[i].hg >= 0) && (liste[i].hg <= liste.Count()) && ((liste[liste[i].hg].valeur != -1)))
            {
                if (liste[liste[i].hg].open != 5)
                {
                    liste[liste[i].hg].texture = Content.Load<Texture2D>(liste[liste[i].hg].valeur + "");
                    liste[liste[i].hg].valide = 1;
                    liste[liste[i].hg].open = 1;
                }
            }
            if ((liste[i].hd >= 0) && (liste[i].hd < liste.Count()) && ((liste[liste[i].hd].valeur != -1)))
            {
                if (liste[liste[i].hd].open != 5)
                {
                    liste[liste[i].hd].texture = Content.Load<Texture2D>(liste[liste[i].hd].valeur + "");
                    liste[liste[i].hd].valide = 1;
                    liste[liste[i].hd].open = 1;
                }
            }
            if ((liste[i].b >= 0) && (liste[i].b <= liste.Count())&& ((liste[liste[i].b].valeur!=-1)))
            {
                if (liste[liste[i].b].open != 5)
                {
                    liste[liste[i].b].texture = Content.Load<Texture2D>(liste[liste[i].b].valeur + "");
                    liste[liste[i].b].valide = 1;
                    liste[liste[i].b].open = 1;
                }
            }
            if ((liste[i].bd >= 0) && (liste[i].bd <= liste.Count())&& ((liste[liste[i].bd].valeur!=-1)))
            {
                if (liste[liste[i].bd].open != 5)
                {
                    liste[liste[i].bd].texture = Content.Load<Texture2D>(liste[liste[i].bd].valeur + "");
                    liste[liste[i].bd].valide = 1;
                    liste[liste[i].bd].open = 1;
                }
            }
            if ((liste[i].bg >= 0) && (liste[i].bg <= liste.Count()) && ((liste[liste[i].bg].valeur!=-1)))
            {
                if (liste[liste[i].bg].open != 5)
                {
                    liste[liste[i].bg].texture = Content.Load<Texture2D>(liste[liste[i].bg].valeur + "");
                    liste[liste[i].bg].valide = 1;
                    liste[liste[i].bg].open = 1;
                }
            }
            if ((liste[i].g >= 0) && (liste[i].g <= liste.Count())&& ((liste[liste[i].g].valeur!=-1)))
            {
                if (liste[liste[i].g].open != 5)
                {
                    liste[liste[i].g].texture = Content.Load<Texture2D>(liste[liste[i].g].valeur + "");
                    liste[liste[i].g].valide = 1;
                    liste[liste[i].g].open = 1;
                }
            }
            if ((liste[i].d >= 0) && (liste[i].d < liste.Count()) && ((liste[liste[i].d].valeur != -1)))
            {
                if (liste[liste[i].d].open != 5)
                {
                    //liste[liste[i].d].texture = Content.Load<Texture2D>("0");
                    liste[liste[i].d].texture = Content.Load<Texture2D>(liste[liste[i].d].valeur + "");
                    liste[liste[i].d].valide = 1;
                    liste[liste[i].d].open = 1;
                }
            }
        }
        protected override void LoadContent()
        {
            // Créer un SpriteBatch, qui peut être utilisé pour dessiner des textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            car = Content.Load<Texture2D>("car");
            bom = Content.Load<Texture2D>("explosion");
            background = Content.Load<Texture2D>("background1");
            gameover = Content.Load<Texture2D>("gameover");
            fontMiramonte = Content.Load<SpriteFont>("SpriteFont1");
            rejouer = Content.Load<Texture2D>("rejouer");
            quitter = Content.Load<Texture2D>("quitter");
            bravo = Content.Load<Texture2D>("bravo");
            felicitation = Content.Load<Texture2D>("felicitation");
             anim_gameover.Initialize(gameover, new Vector2(300,220), gameover.Width / 2, gameover.Height, 2, 5, Color.White, 1.0f, true);
            anim_bravo.Initialize(bravo, new Vector2(400,250), bravo.Width / 4, bravo.Height, 2, 500, Color.White, 1.0f, true);
            // TODO: utilisez this.Content pour charger votre contenu de jeu ici
        }

        /// <summary>
        /// UnloadContent est appelé une fois par partie. Emplacement de déchargement
        /// de tout votre contenu.
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: Déchargez le contenu non ContentManager ici
        }

        /// <summary>
        /// Permet au jeu d’exécuter la logique de mise à jour du monde,
        /// de vérifier les collisions, de gérer les entrées et de lire l’audio.
        /// </summary>
        /// <param name="gameTime">Fournit un aperçu des valeurs de temps.</param>
        
        public int return_touch_rect(Rectangle r1)
        {
            for (int i = 0; i < liste.Count(); i++)
            {
                if(r1.Intersects(liste[i].rect))
                {
                    return i;
                }
            }
            return -1;
        }
        protected override void Update(GameTime gameTime)
        {
            if (finir == 0)
            {
                int sens = 1;
                for (int i = 0; i < liste_anim.Count(); i++)
                {
                    if (i % nb == 0) sens *= -1;
                    if (sens == 1)
                    {
                        //liste_anim[i].Position.X++;
                        liste_anim[i].Position.Y--;
                        if (liste_anim[i].Position.Y <= 0)
                        {
                            gmover = true;
                            if (!aff_game_over)
                            {
                                attend_gameover = 0;
                                aff_game_over = true;
                            }
                            if (!aff_bravo)
                            {
                                attend_bravo = 0;
                                aff_bravo = true;
                            }
                        }
                    }
                    else
                    {
                        //liste_anim[i].Position.X++;
                        liste_anim[i].Position.Y++;
                    }
                    
                }
            }
            /*pour la réussite*/
            terminer = true;
            for (int i = 0; i < liste.Count(); i++)
            {
                if (liste[i].valide == -1)
                {
                    terminer = false;
                }
            }
            
            if (terminer)
            {
                reussite = true;
                for (int i = 0; i < liste.Count(); i++)
                {
                    if (liste[i].valide != 1)
                    {
                        reussite = false;
                    }
                }
            }
            if (terminer && reussite)
            {
                stop = 0;
                finir = 0;
                if (!son)
                {
                    SoundEffect ms;
                    ms = Content.Load<SoundEffect>("applause");
                    ms.Play();
                    son = true;
                }
            }
            else if(terminer && (!reussite))
            {
              //  stop = 0;
                
            }
            
            while (TouchPanel.IsGestureAvailable)
            {
                // Read the next gesture
                GestureSample gesture = TouchPanel.ReadGesture();
                switch (gesture.GestureType)
                {
                    case GestureType.Tap:

                        if (stop != 0)
                        {
                            Rectangle r3 = new Rectangle((int)gesture.Position.X, (int)gesture.Position.Y, 1, 1);
                            int i = return_touch_rect(r3);
                            if (i != -1)
                            {
                                if (liste[i].valide != 1)
                                {
                                    SoundEffect ms;
                                    ms = Content.Load<SoundEffect>("button");
                                    ms.Play();
                                }
                                else
                                {
                                    if ((liste[i].valide == 1)&&(liste[i].valeur==-1))
                                    {
                                        SoundEffect ms;
                                        ms = Content.Load<SoundEffect>("button");
                                        ms.Play();
                                    }
                                }
                                
                                debut = true;
                                if (liste[i].valeur == -1)
                                {
                                    if (drapeau)
                                    {
                                        if (liste[i].valide == 1)
                                        {
                                            liste[i].valide = -1;
                                            liste[i].texture = Content.Load<Texture2D>("car");
                                            dem++;
                                        }
                                        else
                                        {
                                            liste[i].valide = 1;
                                            liste[i].texture = Content.Load<Texture2D>("bo_drap");
                                            dem--;
                                        }
                                        background = Content.Load<Texture2D>("background1");
                                        drapeau = false;
                                    }
                                    else
                                    {
                                        //liste[i].valide = 0;
                                        //liste[i].texture = Content.Load<Texture2D>("bo");
                                        //liste[i].aff = 1;
                                        stop = 0;
                                    }
                                }
                                else
                                {
                                    if (drapeau)
                                    {
                                        if (liste[i].valide == 0)
                                        {
                                            liste[i].valide = -1;
                                            liste[i].texture = Content.Load<Texture2D>("car");
                                            dem++;
                                          
                                        }
                                        else
                                        {
                                            liste[i].valide = 0;
                                            liste[i].texture = Content.Load<Texture2D>("bo_drap");
                                            dem--;
                                        
                                        }
                                        background = Content.Load<Texture2D>("background1");
                                        drapeau = false;
                                    }
                                    else
                                    {
                                        if ((liste[i].valeur == 0)&&(!drapeau))
                                        {
                                            if (liste[i].valide == -1)
                                            {
                                                liste[i].valide = 1;
                                                liste[i].open = 1;
                                                liste[i].texture = Content.Load<Texture2D>("0");
                                                open(i);
                                                Boolean fn = true;
                                                while (fn)
                                                {
                                                    fn = false;
                                                    for (int k = 0; k < liste.Count(); k++)
                                                    {
                                                        if ((liste[k].open == 1)&&(liste[k].valeur==0))
                                                        {
                                                            fn = true;
                                                            open(k);
                                                            liste[k].open = 5;
                                                        }
                                                       // if((k==liste.Count())&&(!fn)) fn=true;
                                                    }
                                                }
                                            }
                                            
                                        }
                                        else
                                        {
                                            if (!drapeau)
                                            {
                                                liste[i].texture = Content.Load<Texture2D>(liste[i].valeur + "");
                                                liste[i].valide = 1;
                                            }
                                        }
                                    }
                                }
                             
                            }
                           
                            Rectangle r4 = new Rectangle(690, 158, 110, 150);
                            if (r4.Intersects(r3))
                            {
                                if (drapeau == false)
                                {
                                    background = Content.Load<Texture2D>("background2");
                                    drapeau = true;
                                }
                                else
                                {
                                    background = Content.Load<Texture2D>("background1");
                                    drapeau = false;
                                }
                            }
                        }
                        else
                        {
                            Rectangle r2 = new Rectangle((int)gesture.Position.X, (int)gesture.Position.Y, 1, 1);
                            Rectangle r1 = new Rectangle(110, 200, 200, 100);
                            Rectangle r7 = new Rectangle(310, 200, 200, 100);
                            if (r2.Intersects(r1))
                            {
                                this.Initialize();
                            }
                            if (r2.Intersects(r7))
                            {
                                this.Exit();
                            }
                        }

                        break;
                }
            }
            /*pour l'animation*/
            if(stop!=0)
            {

            liste_anim.Clear();
            for (int i = 0; i < liste.Count(); i++)
            {
                Animation anim = new Animation();
                Texture2D tx;
                if (liste[i].valeur != -1)
                {
                     tx  = Content.Load<Texture2D>(liste[i].valeur + ""); 
                }
                else
                {
                     tx  = Content.Load<Texture2D>("bo");
                }
                
                anim.Initialize(tx, new Vector2(liste[i].rect.X+15, liste[i].rect.Y+25), 92, 92, 1, 50, Color.White, 0.5f, true);
                // anim.Initialize(background, new Vector2(liste[i].rect.X, liste[i].rect.Y), background.Width, background.Height, 1, 50, Color.White, 1.0f, true);
              liste_anim.Add(anim);
            }
                }
            for (int j = 0; j < liste_anim.Count(); j++)
            {
                liste_anim[j].Update(gameTime);
            }
            anim2.Update(gameTime);
            anim_gameover.Update(gameTime);
            anim_bravo.Update(gameTime);
            // Permet au jeu de se fermer
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

            // TODO: Ajoutez votre logique de mise à jour ici

            base.Update(gameTime);
        }

        /// <summary>
        /// Appelé quand le jeu doit se dessiner.
        /// </summary>
        /// <param name="gameTime">Fournit un aperçu des valeurs de temps.</param>
        /// 
        protected void fin()
        {
            for (int i = 0; i < liste.Count(); i++)
            {
                if (liste[i].valeur==-1)
                {
                    liste[i].texture = Content.Load<Texture2D>("bo");
                }
                else
                {
                    liste[i].texture = Content.Load<Texture2D>(liste[i].valeur + "");
                }
            }
        }

        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Ajoutez votre code de dessin ici

            
            spriteBatch.Begin();
            spriteBatch.Draw(background, Vector2.Zero, Color.White);
            if (gameTime.TotalGameTime - ts > TimeSpan.FromSeconds(1.0f))
            {
                ts = gameTime.TotalGameTime;
                attend_gameover++;
                attend_bravo++;
                if((debut)&&(stop!=0))
                    score_aff++;
            }
            if (stop == 0)
            {
                if (gameTime.TotalGameTime - tt > TimeSpan.FromSeconds(0.25f))
                {
                    tt = gameTime.TotalGameTime;
                    int j = 0;
                    Boolean trouve = false;
                    while ((j < liste_anim.Count()) && (!trouve))
                    {
                        if ((liste[j].valeur == -1) && (liste[j].aff == 0))
                        {
                            liste_anim[j].Initialize(bom, new Vector2((liste[j].rect.X + 8), liste[j].rect.Y + 18), (bom.Width / 12), 45, 12, 50, Color.White, 1.0f, false);
                            trouve = true;
                            liste[j].aff = 1;
                            SoundEffect ms;
                            ms = Content.Load<SoundEffect>("son_explosion");
                            ms.Play();
                        }
                        j++;
                    }
                    if(j==liste_anim.Count())
                    {
                        finir=0;
                    }

                }
            }

           // if (finir == 2) fin();
            spriteBatch.DrawString(fontMiramonte, "" + score_aff, new Vector2(705, 61), Color.White, 0, Vector2.Zero, 1.0f, SpriteEffects.None, 0f);
            spriteBatch.DrawString(fontMiramonte, "" + dem, new Vector2(716, 393), Color.White, 0, Vector2.Zero, 1.0f, SpriteEffects.None, 0f);
            if (stop == 0)
            {
                
                    for (int j = 0; j < liste_anim.Count(); j++)
                    {
                        if ((liste[j].valeur == -1) && (liste[j].aff == 1))
                        {
                            liste_anim[j].Initialize(bom, new Vector2((liste[j].rect.X ), liste[j].rect.Y + 8), (bom.Width / 12), 45, 12, 50, Color.White, 1.0f, false);
                            liste[j].aff = 25;
                        }
                        liste_anim[j].Draw(spriteBatch);
                    }
                
            }
            else
            {
                for (int i = 0; i < nb * nb; i++)
                {
                    spriteBatch.Draw(liste[i].texture, liste[i].rect, Color.Wheat);
                    //spriteBatch.Draw(liste[i].texture, new Vector2(liste[i].rect.X,liste[i].rect.Y),liste[i].rect, Color.White, 80, Vector2.Zero, 9.0f, SpriteEffects.FlipVertically, 0f);
                }
            }
            if ((gmover == true)&&(!reussite))
            {
                if (attend_gameover < 3)
                {
                    anim_gameover.Draw(spriteBatch);
                }
                else
                {
                //afficher rejouer
                    spriteBatch.Draw(rejouer, new Rectangle(110,200,200,100), Color.Wheat);
                    spriteBatch.Draw(quitter, new Rectangle(310,200,200,100), Color.Wheat);
                }
            }
            if ((reussite)&&(gmover))
            {
                if (attend_bravo < 7)
                {
                    anim_bravo.Draw(spriteBatch);
                }
                else
                {
                    spriteBatch.Draw(felicitation,new Rectangle(40,100,600,80),Color.Wheat);
                    spriteBatch.DrawString(fontMiramonte, "" + score_aff, new Vector2(200, 135), Color.Black, 0, Vector2.Zero, 1.0f, SpriteEffects.None, 0f);
                    //afficher rejouer
                    spriteBatch.Draw(rejouer, new Rectangle(110, 200, 200, 100), Color.Wheat);
                    spriteBatch.Draw(quitter, new Rectangle(310, 200, 200, 100), Color.Wheat);
                }
            }
           
            spriteBatch.End();
            base.Draw(gameTime);
        }
    }
}

A voir également

Ajouter un commentaire

Commentaires

Donnez votre avis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.