//vérifie si un pion peut se trasformer en dame et dans ce cas le transforme en dame public void meta(Pion pion) { int[] coor = new int[2]; if (pion.Joueur.color == joueur2.color) { for (int i = 0; i < 10; i++) { if (pion.Coor[0] == i && pion.Coor[1] == 0) { coor[0] = i; coor[1] = 0; tableau[i, 0] = null; tableau[i, 0] = new Dame(joueur2, coor); } } } else { for (int i = 0; i < 10; i++) { if (pion.Coor[0] == i && pion.Coor[1] == 9) { coor[0] = i; coor[1] = 9; tableau[i, 9] = null; tableau[i, 9] = new Dame(joueur1, coor); } } } }
//bouge le pion par rapport a la case choisie par le joueur et vérifie si il passe par un ennemis en même temps public void move(Pion pion, int[] caseJ, Joueur joueur) { tableau[pion.Coor[0], pion.Coor[1]].reset(); Console.WriteLine("casej=" + caseJ[0] + " " + caseJ[1]); if (!(tableau[pion.Coor[0], pion.Coor[1]] is Dame)) { if (Math.Abs(pion.Coor[0] - caseJ[0]) == 2 || Math.Abs(pion.Coor[1] - caseJ[1]) == 2) { Console.WriteLine("je mange"); int[] coor = new int[2]; coor[0] = caseJ[0] + ((pion.Coor[0] - caseJ[0]) / 2); coor[1] = caseJ[1] + ((pion.Coor[1] - caseJ[1]) / 2); tableau[pion.Coor[0], pion.Coor[1]] = null; tableau[caseJ[0], caseJ[1]] = new Pion(joueur, caseJ); pion.Coor = caseJ; mange(pion, coor, joueur); } else { tableau[caseJ[0], caseJ[1]] = new Pion(joueur, caseJ); tableau[pion.Coor[0], pion.Coor[1]] = null; meta(tableau[caseJ[0], caseJ[1]]); } } else { for (int x = 1; x < Math.Abs(pion.Coor[0] - caseJ[0]); x++) { int abscisse = pion.Coor[0] - ((pion.Coor[0] - caseJ[0]) / Math.Abs(pion.Coor[0] - caseJ[0]) * x); int ordonne = pion.Coor[1] - ((pion.Coor[1] - caseJ[1]) / Math.Abs(pion.Coor[1] - caseJ[1]) * x); if (tableau[abscisse, ordonne] != null) { Console.WriteLine("je mange"); int[] coor = new int[2]; coor[0] = abscisse; coor[1] = ordonne; tableau[pion.Coor[0], pion.Coor[1]] = null; tableau[caseJ[0], caseJ[1]] = new Dame(joueur, caseJ); pion.Coor = caseJ; mange(pion, coor, joueur); } else { tableau[caseJ[0], caseJ[1]] = new Dame(joueur, caseJ); tableau[pion.Coor[0], pion.Coor[1]] = null; break; } } } }
//trouve les déplacements possibles de la dame et rempli sa liste de cases pouvant être atteintes public List <int[]> moveDame(Dame pion) { diagodame = true; List <int[]> list = new List <int[]>(); for (int i = 0; i < 10; i++) { List <int[]> test = new List <int[]>(); test = movePion(pion, i); foreach (int[] casee in test) { list.Add(casee); } } diagodame = false; pion.Cases = list; tableau[pion.Coor[0], pion.Coor[1]].Cases = pion.Cases; return(pion.Cases); }
//joue le tour d'un joueur public void joue(Plateau plateau) { plateau.affiche(); if (this.color) { Console.WriteLine("C'est au tour de B de jouer"); } else { Console.WriteLine("C'est au tour de W de jouer"); } int[] coorP = new int[2]; coorP[0] = 0; coorP[1] = 0; bool coor = false; while (coor == false) { coorP[0] = Console.Read() - 48; Console.ReadLine(); coorP[1] = Console.Read() - 48; Console.ReadLine(); Console.WriteLine("i=" + coorP[0] + " j=" + coorP[1]); if (0 <= coorP[0] && coorP[0] <= 10 && 0 <= coorP[1] && coorP[1] <= 10) { if (plateau.tableau[coorP[0], coorP[1]] != null) { if (plateau.tableau[coorP[0], coorP[1]].Joueur == this) { if (plateau.tableau[coorP[0], coorP[1]] is Dame) { List <int[]> mouvements = new List <int[]>(); Dame pion1 = new Dame(this, coorP); mouvements = plateau.moveDame(pion1); pion1.Cases = mouvements; if (pion1.Cases.Count != 0) { coor = true; } else { Console.WriteLine("no move for this pion"); } } else { Pion pion1 = new Pion(this, coorP); plateau.movePion(pion1); if (pion1.Cases.Count != 0) { coor = true; } else { Console.WriteLine("no move for this pion"); } } } else { Console.WriteLine("not YOUR pion"); } } else { Console.WriteLine("not a pion"); } } else { Console.WriteLine("Not in the grille"); } } coor = false; Pion pion; if (plateau.tableau[coorP[0], coorP[1]] is Dame) { pion = new Dame(this, coorP); Dame pion2 = new Dame(this, coorP); plateau.moveDame(pion2); pion.Cases = pion2.Cases; } else { pion = new Pion(this, coorP); plateau.movePion(pion); } plateau.mouvposs(pion); if (this.color) { Console.WriteLine("C'est au tour de B de jouer"); } else { Console.WriteLine("C'est au tour de W de jouer"); } Console.WriteLine("Déplacements possibles:"); foreach (int[] casee in pion.Cases) { Console.WriteLine("[" + casee[0] + "," + casee[1] + "]"); } Console.WriteLine("choisissez votre déplacement"); int[] coorJ = new int[2]; while (coor == false) { coorJ[0] = Console.Read() - 48; Console.ReadLine(); coorJ[1] = Console.Read() - 48; Console.ReadLine(); foreach (int[] choixposs in pion.Cases) { if (coorJ[0] == choixposs[0] && coorJ[1] == choixposs[1]) { coor = true; } } if (coor == false) { Console.WriteLine("you can't"); } } plateau.move(pion, coorJ, this); plateau.affiche(); }