예제 #1
0
파일: Jeton.cs 프로젝트: faudeval/projet
        // Méthode qui permet le déplacement d'un jeton
        // Renvoie true qi le jeton a été déplacé, false sinon
        public Boolean DeplaceJeton(int X, int Y, int numJS)
        {
            Boolean res = false;

            // variable de 'sécurité',
            // permet d'être sur que l'on déplace
            // et surtout si l'on supprime un unique jeton
            int hey = 0;

            // Jeton 'bidon' permettant l'appel des méthodes de la classe Jeton
            Jeton j = new Jeton("ROUGE", 0, 0, 99, game);

            // Valeurs des positions X et Y où le joueur souhaite déplacer son jeton
            int x = j.RenvoiePosX(X) / game.JBlancWidth;
            int y = j.RenvoiePosY(Y) / game.JBlancHeight;

            // On supprime le jeton 'NumJetonSelect'
            // On le redessine dans la case sélectionnée
            // On va donc mettre à jour la position du jeton sélectionné,
            // puis on va le redessiné, sans oublier de supprimer 'son ancienne image'
            for (int i = 0; i < 10; i++)
            {
                for (int u = 0; u < 10; u++)
                {
                    if (game.Grille[i, u] != null && hey == 0)
                    {
                        if (game.Grille[i, u].num == numJS && game.Grille[i, u].couleur == j.CoulJeton(numJS) && hey == 0)
                        {
                            for (int k = 0; k < 10; k++)
                            {
                                for (int l = 0; l < 10; l++)
                                {
                                    if (k == x && l == y && hey == 0)
                                    {
                                        game.Grille[k, l] = new Jeton(game.Grille[i, u].couleur, j.RenvoiePosX(X), j.RenvoiePosY(Y), numJS, game);
                                        game.Grille[i, u] = null;
                                        hey++;

                                        res = true;
                                    }
                                }
                            }
                        }
                    }
                }
                if (hey != 0)
                {
                    i = 10;
                }
            }
            return(res);
        }
예제 #2
0
파일: Game1.cs 프로젝트: faudeval/projet
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            TestFont    = Content.Load <SpriteFont>("MyFont");

            // Remplissage du tableau permettant l'affichage du damier
            // La couleur des cases pouvant varier au grès des envies
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    Grille[i, j]     = null;
                    CoulGrille[i, j] = 0;
                    int a = (i % 2);
                    int b = (j % 2);
                    if (a == 0 && b == 0 || a == 1 && b == 1)
                    {
                        CoulGrille[i, j] = 1;
                    }
                }
            }

            // Remplissage du tableau de Jetons
            // Ces derniers étant différenciés par une couleur,
            // une position et un numéro
            for (int i = 0; i < 5; i++)
            {
                Grille[0, i * 2 + 1] = new Jeton("noir", JBlancWidth * (2 * i + 1), 0, Num++, this);
                Grille[1, i * 2]     = new Jeton("noir", JBlancWidth * (i * 2), JBlancHeight, Num++, this);
                Grille[2, i * 2 + 1] = new Jeton("noir", JBlancWidth * (2 * i + 1), 2 * JBlancHeight, Num++, this);
                Grille[3, i * 2]     = new Jeton("noir", JBlancWidth * (i * 2), 3 * JBlancHeight, Num++, this);
                Grille[6, i * 2 + 1] = new Jeton("blanc", (2 * i * JBlancWidth), (7 * JBlancHeight), Num++, this);
                Grille[7, i * 2]     = new Jeton("blanc", ((2 * i + 1) * JBlancWidth), (6 * JBlancHeight), Num++, this);
                Grille[8, i * 2 + 1] = new Jeton("blanc", (2 * i * JBlancWidth), (9 * JBlancHeight), Num++, this);
                Grille[9, i * 2]     = new Jeton("blanc", ((2 * i + 1) * JBlancWidth), (8 * JBlancHeight), Num++, this);
            }
        }
예제 #3
0
파일: Jeton.cs 프로젝트: faudeval/projet
        // Méthode qui permet le déplacement d'un jeton
        // Renvoie true qi le jeton a été déplacé, false sinon
        public Boolean DeplaceJeton(int X, int Y, int numJS)
        {
            Boolean res = false;

            // variable de 'sécurité',
            // permet d'être sur que l'on déplace
            // et surtout si l'on supprime un unique jeton
            int hey = 0;

            // Jeton 'bidon' permettant l'appel des méthodes de la classe Jeton
            Jeton j = new Jeton("ROUGE", 0, 0, 99, game);

            // Valeurs des positions X et Y où le joueur souhaite déplacer son jeton
            int x = j.RenvoiePosX(X) / game.JBlancWidth;
            int y = j.RenvoiePosY(Y) / game.JBlancHeight;

            // On supprime le jeton 'NumJetonSelect'
            // On le redessine dans la case sélectionnée
            // On va donc mettre à jour la position du jeton sélectionné,
            // puis on va le redessiné, sans oublier de supprimer 'son ancienne image'
            for (int i = 0; i < 10; i++)
            {
                for (int u = 0; u < 10; u++)
                {
                    if (game.Grille[i, u] != null && hey == 0)
                    {
                        if (game.Grille[i, u].num == numJS && game.Grille[i, u].couleur == j.CoulJeton(numJS) && hey == 0)
                        {
                            for (int k = 0; k < 10; k++)
                            {
                                for (int l = 0; l < 10; l++)
                                {
                                   if (k == x && l == y && hey == 0)
                                    {
                                        game.Grille[k, l] = new Jeton(game.Grille[i, u].couleur, j.RenvoiePosX(X), j.RenvoiePosY(Y), numJS, game);
                                        game.Grille[i, u] = null;
                                        hey++;

                                        res = true;
                                    }
                                }
                            }
                        }
                    }
                }
                if (hey != 0)
                    i = 10;
            }
            return res;
        }
예제 #4
0
파일: Game1.cs 프로젝트: faudeval/projet
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            // On quitte le jeu
            if (Keyboard.GetState().IsKeyDown(Keys.Escape))
                this.Exit();
            // Jeton 'bidon' permettant l'utilisation des méthodes de la classe Jeton
            Jeton j = new Jeton("blanc", 150, 150, 9000, this);

            // Variable permettant de récupérer la position du curseur
            mouseState = Mouse.GetState();

            // Booléen permettant de savoir si un jeton est sélectionné
            IsSelected = false;

            // Condition principale pour le déplacement d'un jeton
            if (mouseState.LeftButton == ButtonState.Pressed && oldMouseState.LeftButton == ButtonState.Released)
            {
                // On stocke la position actuelle du curseur
                PosXMouse = mouseState.X;
                PosYMouse = mouseState.Y;

                if (j.IsJetonPresent(PosXMouse, PosYMouse) != -1)
                {
                    // Un jeton est selectionné
                    IsSelected = true;
                    // On récupère son numéro
                    NumJetonSelect = j.IsJetonPresent(PosXMouse, PosYMouse);

                    // mouseState.RightButton == ButtonState.Pressed
                    if (IsSelected == true)
                    {
                        // On met à jour la position du curseur,
                        // et on stocke ainsi la position de la case
                        // où le joueur souhaite déplacer son jeton
                        NewPosXMouse = mouseState.X;
                        NewPosYMouse = mouseState.Y;

                        while (Math.Abs(NewPosXMouse - PosXMouse) <= 2 && Math.Abs(NewPosYMouse - PosYMouse) <= 2 && oldMouseState.LeftButton == ButtonState.Released)
                        {
                            // Solution intermédiaire permettant 'de gagner du temps'
                            // afin de récupérer la position du curseur une seconde fois
                            System.Threading.Thread.Sleep(1500);
                            mouseState = Mouse.GetState();

                            NewPosXMouse = mouseState.X;
                            NewPosYMouse = mouseState.Y;

                            oldMouseState = mouseState;
                        }

                        // Valeurs comprises entre 0 et 9
                        // représentant la case ciblée par  le joueur
                        // et l'ancienne case
                        int NewX = j.RenvoiePosX(NewPosXMouse);
                        int NewY = j.RenvoiePosY(NewPosYMouse);
                        int OldX = j.RenvoiePosX(PosXMouse);
                        int OldY = j.RenvoiePosY(PosYMouse);

                        // On vérifit qu'il n'y a pas de jeton là où le joueur souhaite déplacer son jeton
                        // Et si le déplacement est correct (en diagonale et à une case de distance)
                        if (j.IsJetonPresent(NewPosXMouse, NewPosYMouse) == -1
                            && (Math.Abs(NewX - OldX) == JBlancWidth)
                            && (Math.Abs(NewY - OldY) == JBlancHeight))
                        {
                            // Le cas échéant, on déplace le jeton aux coordonnées choisies
                            if(j.DeplaceJeton(NewPosXMouse, NewPosYMouse, NumJetonSelect))
                            {

                            }

                        }

                        // Sinon, on vérifie toujours qu'il n'y a pas de jeton,
                        // Que le déplacement est correct (en diagonale)
                        // Et qu'il y a bien un jeton de la couleur opposée entre les deux positions (son ancienne et sa nouvelle)
                        else if (j.IsJetonPresent(NewPosXMouse, NewPosYMouse) == -1
                            && (Math.Abs(NewX - OldX) == 2 * JBlancWidth)
                            && (Math.Abs(NewY - OldY) == 2 * JBlancHeight))
                        {
                            // Le cas échéant, on déplace le jeton aux coordonnées choisies
                            if (j.DeplaceJeton(NewPosXMouse, NewPosYMouse, NumJetonSelect))
                            {
                                // Si le jeton déplacé était blanc,
                                // On supprime le jeton noir en question,
                                // On retire un jeton au compteur du joueur des jetons noirs
                                // Et on rajoute un point au joueur des jetons blancs
                                if (j.CoulJeton(NumJetonSelect) == "blanc")
                                {
                                    if (((NewX / JBlancWidth) - (OldX / JBlancWidth)) == -2)
                                    {
                                        Grille[((OldX / JBlancWidth) - 1), ((OldY / JBlancHeight) - 1)] = null;
                                    }
                                    else
                                    {
                                        Grille[((OldX / JBlancWidth) + 1), ((OldY / JBlancHeight) - 1)] = null;
                                    }

                                    J1.NbJetonsRestants--;
                                    J2.point++;
                                }

                                // Si le jeton déplacé était noir,
                                // On supprime le jeton blanc en question,
                                // On retire un jeton au compteur du joueur des jetons blancs
                                // Et on rajoute un point au joueur des jetons noirs
                                else
                                {
                                    if (((NewX / JBlancWidth) - (OldX / JBlancWidth)) == -2)
                                    {
                                        Grille[((OldX / JBlancWidth) - 1), ((NewY / JBlancHeight) - 1)] = null;
                                    }
                                    else
                                    {
                                        Grille[((OldX / JBlancWidth) + 1),  ((NewY / JBlancHeight) - 1)] = null;
                                    }

                                    J2.NbJetonsRestants--;
                                    J1.point++;
                                }
                            }

                        }

                        // Le jeton a soit été déplacé, soit  le joueur souhaite déplacé un autre jeton
                        // soit le joueur a procédé à une mauvaise sélection
                        IsSelected = false;
                    }
                }
            }

            oldMouseState = mouseState;
            base.Update(gameTime);
        }
예제 #5
0
파일: Game1.cs 프로젝트: faudeval/projet
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            TestFont = Content.Load<SpriteFont>("MyFont");

            // Remplissage du tableau permettant l'affichage du damier
            // La couleur des cases pouvant varier au grès des envies
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    Grille[i, j] = null;
                    CoulGrille[i, j] = 0;
                    int a = (i % 2);
                    int b = (j % 2);
                    if (a == 0 && b == 0 || a == 1 && b == 1)
                        CoulGrille[i, j] = 1;
                }
            }

            // Remplissage du tableau de Jetons
            // Ces derniers étant différenciés par une couleur,
            // une position et un numéro
            for (int i = 0; i < 5; i++)
            {
                Grille[0, i * 2 + 1] =  new Jeton("noir", JBlancWidth * (2 * i + 1), 0, Num++, this);
                Grille[1, i * 2]     =  new Jeton("noir", JBlancWidth * (i * 2), JBlancHeight, Num++, this);
                Grille[2, i * 2 + 1] =  new Jeton("noir", JBlancWidth * (2 * i + 1), 2 * JBlancHeight, Num++, this);
                Grille[3, i * 2]     =  new Jeton("noir", JBlancWidth * (i * 2), 3 * JBlancHeight, Num++, this);
                Grille[6, i * 2 + 1] =  new Jeton("blanc", (2 * i * JBlancWidth), (7 * JBlancHeight), Num++, this);
                Grille[7, i * 2]     =  new Jeton("blanc", ((2 * i + 1) * JBlancWidth), (6 * JBlancHeight), Num++, this);
                Grille[8, i * 2 + 1] =  new Jeton("blanc", (2 * i * JBlancWidth), (9 * JBlancHeight), Num++, this);
                Grille[9, i * 2]     =  new Jeton("blanc", ((2 * i + 1) * JBlancWidth), (8 * JBlancHeight), Num++, this);
            }
        }
예제 #6
0
파일: Game1.cs 프로젝트: faudeval/projet
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            // On quitte le jeu
            if (Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                this.Exit();
            }
            // Jeton 'bidon' permettant l'utilisation des méthodes de la classe Jeton
            Jeton j = new Jeton("blanc", 150, 150, 9000, this);

            // Variable permettant de récupérer la position du curseur
            mouseState = Mouse.GetState();

            // Booléen permettant de savoir si un jeton est sélectionné
            IsSelected = false;

            // Condition principale pour le déplacement d'un jeton
            if (mouseState.LeftButton == ButtonState.Pressed && oldMouseState.LeftButton == ButtonState.Released)
            {
                // On stocke la position actuelle du curseur
                PosXMouse = mouseState.X;
                PosYMouse = mouseState.Y;

                if (j.IsJetonPresent(PosXMouse, PosYMouse) != -1)
                {
                    // Un jeton est selectionné
                    IsSelected = true;
                    // On récupère son numéro
                    NumJetonSelect = j.IsJetonPresent(PosXMouse, PosYMouse);

                    // mouseState.RightButton == ButtonState.Pressed
                    if (IsSelected == true)
                    {
                        // On met à jour la position du curseur,
                        // et on stocke ainsi la position de la case
                        // où le joueur souhaite déplacer son jeton
                        NewPosXMouse = mouseState.X;
                        NewPosYMouse = mouseState.Y;

                        while (Math.Abs(NewPosXMouse - PosXMouse) <= 2 && Math.Abs(NewPosYMouse - PosYMouse) <= 2 && oldMouseState.LeftButton == ButtonState.Released)
                        {
                            // Solution intermédiaire permettant 'de gagner du temps'
                            // afin de récupérer la position du curseur une seconde fois
                            System.Threading.Thread.Sleep(1500);
                            mouseState = Mouse.GetState();

                            NewPosXMouse = mouseState.X;
                            NewPosYMouse = mouseState.Y;

                            oldMouseState = mouseState;
                        }

                        // Valeurs comprises entre 0 et 9
                        // représentant la case ciblée par  le joueur
                        // et l'ancienne case
                        int NewX = j.RenvoiePosX(NewPosXMouse);
                        int NewY = j.RenvoiePosY(NewPosYMouse);
                        int OldX = j.RenvoiePosX(PosXMouse);
                        int OldY = j.RenvoiePosY(PosYMouse);

                        // On vérifit qu'il n'y a pas de jeton là où le joueur souhaite déplacer son jeton
                        // Et si le déplacement est correct (en diagonale et à une case de distance)
                        if (j.IsJetonPresent(NewPosXMouse, NewPosYMouse) == -1 &&
                            (Math.Abs(NewX - OldX) == JBlancWidth) &&
                            (Math.Abs(NewY - OldY) == JBlancHeight))
                        {
                            // Le cas échéant, on déplace le jeton aux coordonnées choisies
                            if (j.DeplaceJeton(NewPosXMouse, NewPosYMouse, NumJetonSelect))
                            {
                            }
                        }

                        // Sinon, on vérifie toujours qu'il n'y a pas de jeton,
                        // Que le déplacement est correct (en diagonale)
                        // Et qu'il y a bien un jeton de la couleur opposée entre les deux positions (son ancienne et sa nouvelle)
                        else if (j.IsJetonPresent(NewPosXMouse, NewPosYMouse) == -1 &&
                                 (Math.Abs(NewX - OldX) == 2 * JBlancWidth) &&
                                 (Math.Abs(NewY - OldY) == 2 * JBlancHeight))
                        {
                            // Le cas échéant, on déplace le jeton aux coordonnées choisies
                            if (j.DeplaceJeton(NewPosXMouse, NewPosYMouse, NumJetonSelect))
                            {
                                // Si le jeton déplacé était blanc,
                                // On supprime le jeton noir en question,
                                // On retire un jeton au compteur du joueur des jetons noirs
                                // Et on rajoute un point au joueur des jetons blancs
                                if (j.CoulJeton(NumJetonSelect) == "blanc")
                                {
                                    if (((NewX / JBlancWidth) - (OldX / JBlancWidth)) == -2)
                                    {
                                        Grille[((OldX / JBlancWidth) - 1), ((OldY / JBlancHeight) - 1)] = null;
                                    }
                                    else
                                    {
                                        Grille[((OldX / JBlancWidth) + 1), ((OldY / JBlancHeight) - 1)] = null;
                                    }

                                    J1.NbJetonsRestants--;
                                    J2.point++;
                                }

                                // Si le jeton déplacé était noir,
                                // On supprime le jeton blanc en question,
                                // On retire un jeton au compteur du joueur des jetons blancs
                                // Et on rajoute un point au joueur des jetons noirs
                                else
                                {
                                    if (((NewX / JBlancWidth) - (OldX / JBlancWidth)) == -2)
                                    {
                                        Grille[((OldX / JBlancWidth) - 1), ((NewY / JBlancHeight) - 1)] = null;
                                    }
                                    else
                                    {
                                        Grille[((OldX / JBlancWidth) + 1), ((NewY / JBlancHeight) - 1)] = null;
                                    }

                                    J2.NbJetonsRestants--;
                                    J1.point++;
                                }
                            }
                        }

                        // Le jeton a soit été déplacé, soit  le joueur souhaite déplacé un autre jeton
                        // soit le joueur a procédé à une mauvaise sélection
                        IsSelected = false;
                    }
                }
            }

            oldMouseState = mouseState;
            base.Update(gameTime);
        }