Ejemplo n.º 1
0
 private int[] GetPosition(Pieces piece)//Permet de connaitre la position d'une piece sur le terrain de jeu
 {
     int[] TabPosition = new int[2];
     foreach (Pieces element in terrain)
     {
         if (element != null)
         {
             if (element == piece)    //Verifie si les pieces sont identiques
             {
                 TabPosition[0] = element.PositionX;
                 TabPosition[1] = element.PositionY;
                 break;
             }
         }
     }
     return(TabPosition);
 }
Ejemplo n.º 2
0
        private void ZonePromo(Pieces dernierePieceJouée, bool para)//Méthode qui verifie la piece qui se trouve dans la zone de promotion afin d'appliquer les régles qui la concerne
        {
            Pieces piece;

            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    piece = Terrain[i * 3, j];
                    if (piece != null)
                    {
                        if ((piece.GetType() == typeof(Kodama) && para == false))                                        //si il s'agit d'un Kodama
                        {
                            if (piece.NumJoueur == 1 && piece.PositionX == 0)                                            //qu'il appartient au joueur 1 et qu'il est dans sa zone de promotion
                            {
                                piece       = new Kodama_Samurai(piece.PositionX, piece.PositionY, 1, "kodama_sam.jpg"); //alors on instancie le Kodama_Samurai
                                PointerKod2 = (Kodama_Samurai)piece;                                                     //et on fait pointer le "pointeur" sur celui-ci
                                terrain[piece.PositionX, piece.PositionY] = PointerKod2;
                            }
                            else if (piece.NumJoueur == 2 && piece.PositionX == 3)
                            {
                                piece       = new Kodama_Samurai(piece.PositionX, piece.PositionY, 2, "kodama_sam.jpg");
                                PointerKod1 = (Kodama_Samurai)piece;
                                terrain[piece.PositionX, piece.PositionY] = PointerKod1;
                            }
                        }
                        else if (piece.GetType() == typeof(Koropokkuru))    //si il s'agit d'un Koropokkuru
                        {
                            if (piece.NumJoueur == 1 && piece.PositionX == 0 && AncienePosition[0] == 0 && dernierePieceJouée.NumJoueur == 2)
                            {
                                Findepartie     = 2;
                                Joueur1.Gagnant = true;
                            }
                            else if (piece.NumJoueur == 2 && piece.PositionX == 3 && AncienePosition[0] == 3 && dernierePieceJouée.NumJoueur == 1)
                            {
                                Findepartie     = 2;
                                Joueur2.Gagnant = true;
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public void SetPosition(Pieces piece, int newx, int newy)//Permet de changer la position d'une "Piece"
        {
            int typepiece = -1;

            AncienePosition = GetPosition(piece); //avant de modifier l'emplacement de la Piece, on récupere son ancienne position

            piece.PositionX = newx;               //On change maintenant la position pour la piece elle même
            piece.PositionY = newy;

            bool Deplacement = false;//Boolean faux tant que le deplacement de la piece na pas etait acceptée
            bool Parachutage = false;

            if ((ReserveJ1.Contains(piece) || (ReserveJ2.Contains(piece)))) //Si la piece passée en parametre de la méthode est dans la Reserve d'un des deux joueurs
            {
                Parachutage = true;                                         //c'est qu'il s'agit d'un parachutage
            }
            if (terrain[newx, newy] != null)                                //Si la case où l'on souhaite déplacer la Piece n'est pas vide, on récupere le type de la piece presente dans la case
            {
                if (terrain[newx, newy].GetType() == typeof(Kitsune))
                {
                    typepiece = 0;
                }                                                                       //determine la piece en question
                if (terrain[newx, newy].GetType() == typeof(Tanuki))
                {
                    typepiece = 1;
                }                                                                      //afin de connaitre quelle piece placée en reserve
                if (terrain[newx, newy].GetType() == typeof(Kodama) || terrain[newx, newy].GetType() == typeof(Kodama_Samurai))
                {
                    typepiece = 2;
                }
                if (terrain[newx, newy].GetType() == typeof(Koropokkuru))
                {
                    typepiece = 3;
                }
            }

            if (terrain[newx, newy] == null) // cas ou la case est vide
            {
                terrain[newx, newy] = piece; //on definit sa nouvelle position uniquement
                Deplacement         = true;
            }
            else if (terrain[newx, newy].NumJoueur == 1 && !(typepiece == 3) && Parachutage == false) //cas ou la case appartient au joueur adverse j1
            {
                terrain[newx, newy].NumJoueur = 2;                                                    //on change le joueur propriétaire de la piece
                if (terrain[newx, newy].GetType() == typeof(Kodama_Samurai))
                {
                    pointerKod2         = new Kodama(terrain[newx, newy].PositionX, terrain[newx, newy].PositionY, terrain[newx, newy].NumJoueur, "kodama.jpg");
                    terrain[newx, newy] = pointerKod2;      //on verifie s'il sagit d'un kodama samurai, si c'est le cas on le cast en simple kodama
                }
                ReserveJ2[typepiece] = terrain[newx, newy]; //on stocke la piece du joueur adverse dans la reserve
                terrain[newx, newy]  = piece;               //puis on place la piece du j2 dans la case
                Deplacement          = true;
            }
            else if (terrain[newx, newy].NumJoueur == 2 && !(typepiece == 3) && Parachutage == false)//cas ou la case appartient au joueur adverse j2
            {
                terrain[newx, newy].NumJoueur = 1;
                if (terrain[newx, newy].GetType() == typeof(Kodama_Samurai))
                {
                    pointerKod1         = new Kodama(terrain[newx, newy].PositionX, terrain[newx, newy].PositionY, terrain[newx, newy].NumJoueur, "kodama.jpg");
                    terrain[newx, newy] = pointerKod1;//
                }
                ReserveJ1[typepiece] = terrain[newx, newy];
                terrain[newx, newy]  = piece;
                Deplacement          = true;
            }
            if (typepiece == 3)//cas ou la case attaquée contient un Koropokkuru
            {
                Findepartie = 1;
                if (piece.NumJoueur == 1)
                {
                    joueur1.Gagnant = true;
                }
                else
                {
                    joueur2.Gagnant = true;
                }
                terrain[newx, newy] = piece;
                terrain[AncienePosition[0], AncienePosition[1]] = null;
            }

            if (Deplacement)//si il y a deplacement et que ce n'etait pas un parachutage alors on efface l'ancienne position
            {
                if (!Parachutage)
                {
                    terrain[AncienePosition[0], AncienePosition[1]] = null;
                }
                if (piece.Position() == 3)//Puis on verifie que la piece qui se deplace na pas fais trois aller-retour
                {
                    Findepartie     = 4;
                    joueur1.Gagnant = true;
                    joueur2.Gagnant = true;
                }
            }
            ZonePromo(piece, Parachutage);//Enfin On verifie le contenu de la zone de promotion afin de savoir si il y a un kodama a transformer ou si le koropokkuru est dans la zone
            Deplacement = false;
            Parachutage = false;
        }