Example #1
0
        //Methodes
        public Pieces[,] initialisation(Tanuki tanuj1, Tanuki tanuj2, Kitsune kitsj1, Kitsune kitsj2, Koropokkuru koroj1, Koropokkuru koroj2, Kodama kodj1, Kodama kodj2)//instancie les pieces et les place a leur position initiale, vide également les reserves des joueurs
        {
            for (int i = 0; i == 2; i++)
            {
                ReserveJ1[i] = null;
            }
            for (int i = 0; i == 2; i++)
            {
                ReserveJ2[i] = null;
            }
            for (int i = 0; i == 3; i++)
            {
                for (int j = 0; j == 2; j++)
                {
                    terrain[i, i] = null;
                }
            }
            //Pieces joueurs 1
            terrain[3, 2] = tanuj1;
            terrain[3, 1] = koroj1;
            terrain[3, 0] = kitsj1;
            terrain[2, 1] = kodj1;
            //Pieces joueur 2
            terrain[0, 0] = tanuj2;
            terrain[0, 1] = koroj2;
            terrain[0, 2] = kitsj2;
            terrain[1, 1] = kodj2;

            return(terrain);
        }
        static void Main(string[] args)
        {
            Plateau PlatTest = new Plateau();

            //Pieces joueurs 1
            Tanuki      tanuj1 = new Tanuki(3, 2, 1, "");
            Koropokkuru koroj1 = new Koropokkuru(3, 1, 1, "");
            Kitsune     kitsj1 = new Kitsune(3, 0, 1, "");
            Kodama      kodj1  = PlatTest.PointerKod1;
            //Pieces joueur 2
            Tanuki      tanuj2 = new Tanuki(0, 0, 2, "");
            Koropokkuru koroj2 = new Koropokkuru(0, 1, 2, "");
            Kitsune     kitsj2 = new Kitsune(0, 2, 2, "");
            Kodama      kodj2  = PlatTest.PointerKod2;
            Pieces      piece;



            //PlatTest.initialisation(tanuj1,tanuj2,kitsj1,kitsj2,koroj1,koroj2,kodj1,kodj2);
            PlatTest.AfficheTestPlateau();
            PlatTest.AfficheReserve();

            Console.WriteLine();



            kodj2.Deplacement(3, 0, PlatTest);
            PlatTest.AfficheTestPlateau();
            PlatTest.AfficheReserve();

            piece = PlatTest.PointerKod1;

            piece.Deplacement(1, 1, PlatTest);
            PlatTest.AfficheTestPlateau();
            PlatTest.AfficheReserve();



            int[,] caseAccesible = new int[4, 3];
            caseAccesible        = piece.CaseAccessible(PlatTest);
            Console.WriteLine("");
            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    Console.Write(caseAccesible[i, j]);
                }
                Console.WriteLine("");
            }
            Console.WriteLine();
            Console.ReadLine();
        }
Example #3
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;
                            }
                        }
                    }
                }
            }
        }
Example #4
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;
        }