//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(); }
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; } } } } } }
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; }