private void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e) { System.Console.WriteLine("/**** Action sur un TextBox ****/"); TextBox objclick = (TextBox)sender; Trou elementRecherche = null; for (int i = 0; i < this.trous.Count; i++) { if (this.trous.ElementAt(i).nom == objclick.Name) { elementRecherche = this.trous.ElementAt(i); } } if (elementRecherche.nombreGraines > 0) { this.moteur.faireAction(elementRecherche); System.Console.WriteLine("/**** MISE A JOUR DE LA VUE ****/"); this.trous = this.moteur.trous; //On modifie le joueur courant updateCurrentJoueur(); // si online envoi du trou joué if (moteur.typeDepartie == "online") { envoyerMsg(elementRecherche.nom); } } else { labelInformation.Text = "Vous ne pouvez pas jouer une case vide"; } /* * System.Console.WriteLine("*** Contenu des trous ***"); * foreach (var trou in this.trous) * { * System.Console.WriteLine(trou.nombreGraines); * }*/ if (finPartie()) { labelInformation.Text = "Fin de la partie "; if (this.joueur1.score > this.joueur2.score) { labelInformation.Text += "\n Le joueur : " + this.joueur1.nom + " gagne !"; } else { labelInformation.Text += "\n Le joueur : " + this.joueur2.nom + " gagne !"; } this.historique.enregistrerInfos(this.joueur1, this.joueur2); } }
public void getGraines(Trou trouATest) { while (trouATest.nombreGraines == 2 || trouATest.nombreGraines == 3) { this.currentJoueur.score += trouATest.nombreGraines; trouATest.nombreGraines = 0; updateElementList(trouATest); //On test le trou d'avant trouATest = trouATest.predecesseur; } }
//Mis a jour du nombre de graines dans un trou public void updateElementList(Trou trouAUpdate) { for (int i = 0; i < this.trous.Count; i++) { //Si c'est l'element qu'on cherche if (this.trous.ElementAt(i).nom == trouAUpdate.nom) { //On modifie son nombre de graines this.trous.ElementAt(i).nombreGraines = trouAUpdate.nombreGraines; return; } } }
/*public Boolean actionPossible(Trou trouAtester) * { * for (int i = 0; i < this.currentJoueur.listTrouPerso.Count; i++) * { * //Si c'est l'element qu'on cherche * if (this.currentJoueur.listTrouPerso.ElementAt(i).nom == trouAtester.nom) * { * //Il est proprio du trou il peut donc jouer * return true; * } * } * //Si on arrive ici c'est que l'utilisateur ne possede pas le trou * //il ne peut donc pas jouer * return false; * }*/ public Trou meilleureActionIA() { System.Console.WriteLine("/**** Choix de la meilleure action pour l'IA ****/"); Trou bestTrou = null; Trou lePlusRempli = null; //pour chacun de ses trous foreach (var trou in this.currentJoueur.listTrouPerso) { if (trou.nombreGraines > 0) { //on regarde le trou dans lequel la derniere graine tombe Trou troufinal = trou; int nb = trou.nombreGraines; while (nb > 0) { troufinal = troufinal.successeur; nb--; } //si il contient déjà 1 ou 2 graine if (troufinal.nombreGraines == 1 || troufinal.nombreGraines == 2) { //on garde ce coup bestTrou = trou; } if (lePlusRempli == null) { lePlusRempli = trou; } else //si il n'y a pas de bon coup on joue le dernier trou le plus rempli if (trou.nombreGraines > lePlusRempli.nombreGraines) { lePlusRempli = trou; } } } if (bestTrou != null) { return(bestTrou); } return(lePlusRempli); }
public void faireAction(Trou trouDepart) { System.Console.WriteLine("/**** On effectue l'action ****/"); //On récupére toutes les graines de la case de départ int graineEnMain = trouDepart.nombreGraines; trouDepart.nombreGraines = 0; //On met a jour le trou correspondant dans la liste updateElementList(trouDepart); Trou currentTrou = trouDepart; //Element pour tester si on met a jour en fonction Boolean firstTour = true; //Tant qu'on a des graines en jeu while (graineEnMain != 0) { //Si c'est le premier tour if (firstTour) { firstTour = false; //On met pour le prochain tour le successeur de l'element de départ currentTrou = trouDepart.successeur; } else { //On ajoute une graine au trou currentTrou.nombreGraines++; //On met a jour le trou correspondant dans la liste updateElementList(currentTrou); //On met a jour le trou pour le tour suivant currentTrou = currentTrou.successeur; //On retire une graine de la main du joueur graineEnMain--; } } getGraines(currentTrou.predecesseur); }
public void initializeList() { System.Console.WriteLine("/**** Initialisation de la list ****/"); this.trous = new ObservableCollection <Trou>(); //Trous "Ally" Trou trouA = new Trou("A", 4); Trou trouB = new Trou("B", 4, trouA); Trou trouC = new Trou("C", 4, trouB); Trou trouD = new Trou("D", 4, trouC); Trou trouE = new Trou("E", 4, trouD); Trou trouF = new Trou("F", 4, trouE); //Trous "Ennemy" Trou troua = new Trou("a", 4, trouF); Trou troub = new Trou("b", 4, troua); Trou trouc = new Trou("c", 4, troub); Trou troud = new Trou("d", 4, trouc); Trou troue = new Trou("e", 4, troud); Trou trouf = new Trou("f", 4, troue); //Definition du predecesseur manquant trouA.predecesseur = trouf; //Definition des successeur trouA.successeur = trouB; trouB.successeur = trouC; trouC.successeur = trouD; trouD.successeur = trouE; trouE.successeur = trouF; trouF.successeur = troua; troua.successeur = troub; troub.successeur = trouc; trouc.successeur = troud; troud.successeur = troue; troue.successeur = trouf; trouf.successeur = trouA; //Ajout des elements à la liste trous.Add(trouA); trous.Add(trouB); trous.Add(trouC); trous.Add(trouD); trous.Add(trouE); trous.Add(trouF); trous.Add(troua); trous.Add(troub); trous.Add(trouc); trous.Add(troud); trous.Add(troue); trous.Add(trouf); System.Console.WriteLine("/**** FIN Initialisation de la list ****/"); this.joueur1 = new Personne("Joueur 1"); this.joueur2 = new Personne("Joueur 2"); //On assigne aux joueurs leurs trous for (int i = 0; i < this.trous.Count / 2; i++) { this.joueur1.listTrouPerso.Add(this.trous.ElementAt(i)); } System.Console.WriteLine("Nombre d'element dans la liste de trous " + this.trous.Count); for (int i = this.trous.Count - 1; i >= this.trous.Count / 2; i--) { this.joueur2.listTrouPerso.Add(this.trous.ElementAt(i)); } this.moteur = new MoteurDeJeu(this.trous); this.moteur.currentJoueur = joueur1; }
private void updateCurrentJoueur() { System.Console.WriteLine("/**** Mise à jour du joueur courant : " + moteur.currentJoueur.nom); //Si le joueur courrant est le joueur 1 if (this.moteur.currentJoueur.nom == this.joueur1.nom) { //this.joueur1.score = this.moteur.currentJoueur.score; PropertyChanged(this, new PropertyChangedEventArgs("joueur1")); this.moteur.currentJoueur = this.joueur2; } //Sinon c'est forcement le joueur 2 else { //this.joueur2.score = this.moteur.currentJoueur.score; PropertyChanged(this, new PropertyChangedEventArgs("joueur2")); this.moteur.currentJoueur = this.joueur1; } if (this.moteur.typeDepartie == "local") { if (this.joueur2.nom == this.moteur.currentJoueur.nom) { a.IsEnabled = true; b.IsEnabled = true; c.IsEnabled = true; d.IsEnabled = true; e.IsEnabled = true; f.IsEnabled = true; A.IsEnabled = false; B.IsEnabled = false; C.IsEnabled = false; D.IsEnabled = false; E.IsEnabled = false; F.IsEnabled = false; } else { a.IsEnabled = false; b.IsEnabled = false; c.IsEnabled = false; d.IsEnabled = false; e.IsEnabled = false; f.IsEnabled = false; A.IsEnabled = true; B.IsEnabled = true; C.IsEnabled = true; D.IsEnabled = true; E.IsEnabled = true; F.IsEnabled = true; } } //Si c'est ensuite au tour du joueur 2 en vs ia if (this.moteur.typeDepartie == "IA" && this.joueur2.nom == this.moteur.currentJoueur.nom) { Trou bestChoix = this.moteur.meilleureActionIA(); this.moteur.faireAction(bestChoix); PropertyChanged(this, new PropertyChangedEventArgs("joueur2")); this.moteur.currentJoueur = this.joueur1; } if (this.moteur.typeDepartie == "online") { foreach (TextBox trou in myTrous) { trou.IsEnabled = !trou.IsEnabled; } } System.Console.WriteLine("/**** Mise à jour du joueur - maj : " + moteur.currentJoueur.nom); labelInformation.Text = "Au tour du joueur : " + this.moteur.currentJoueur.nom; }
public Trou(string nom, int nombreGraines, Trou predecesseur, Trou successeur) : this(nom, nombreGraines) { this.predecesseur = predecesseur; this.successeur = successeur; }