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