void Button_Click(object sender, RoutedEventArgs e) { // Bouton clické var button = (Button)sender; // Trou associé au bouton Trou trou = (Trou)button.DataContext; // Check si le Joueur clique sur la bonne rangée if (trou.Joueur != JoueurCourant) { MessageBox.Show("Tu triches " + JoueurCourant.Nom + ", ce n'est pas ton trou !"); return; } // Check si le trou n'est pas vide if (trou.Valeur == 0) { MessageBox.Show("Tu ne peux pas tricheur " + trou.Joueur.Nom); return; } // Check pour le reseau if (IsCombatReseau == true && JoueurCourant != JoueurActuelReseau) { MessageBox.Show("Ce n'est pas à toi de jouer ! "); return; } // Si partie en réseau if (IsCombatReseau == true) { int indexTrou = ListTrousOrdonnes.IndexOf(trou); if (hostGame != null) { hostGame.SendAction(indexTrou); } else { connect.SendAction(indexTrou); } } // Gestion de l'action TraitementActionJoueur(trou); // Si le joueur 2 est une IA ... if (J2.IsIA == true) { // On fait jouer l'IA Trou trouChoisiParIA = IA.ChoisirAction(J2, ListTrousOrdonnes); // On traite son choix TraitementActionJoueur(trouChoisiParIA); } }
public void TraitementActionJoueur(Trou trou) { // Valeur du Trou int valeur = trou.Valeur; // On vide le Trou trou.Valeur = 0; // Distribution des graines sur les cases suivantes : int indexTrou = ListTrousOrdonnes.IndexOf(trou); int indexTrouCourant = indexTrou; // Tant que nous n'avons pas distribué toutes les graines : while (valeur != 0) { // On est à la fin de la liste if (indexTrouCourant == NbTrous - 1) { // -> On retourne au début de la list indexTrouCourant = 0; } else { // On passe au trou suivant indexTrouCourant += 1; } // Si on repasse par le trou cliqué auparavant if (indexTrouCourant == indexTrou) { // -> On saute le trou continue; } // On récupère le Trou courant Trou trouCourant = ListTrousOrdonnes[indexTrouCourant]; // On incrémente de 1 trouCourant.Valeur += 1; // On décrémente valeur de 1 valeur -= 1; } // Récupération du trou où on a placé la dernière graine int indexDernierTrouPlace = indexTrouCourant; Boolean onPeutRecolter = true; // On collecte les scores // - On parcourt la liste dans l'autre sens à partir du dernier trou while (onPeutRecolter) { // On récupère le Trou courant Trou trouCourant = ListTrousOrdonnes[indexTrouCourant]; // Si condition de récolte bonne // - 2 ou 3 graines dans le trou courant if (trouCourant.Valeur == 2 || trouCourant.Valeur == 3) { // On donne les graines au joueur JoueurCourant.NbGraines += trouCourant.Valeur; // On retire les graines du trou trouCourant.Valeur = 0; // On est au début de la liste if (indexTrouCourant == 0) { // -> On retourne au début de la liste indexTrouCourant = NbTrous - 1; } else { // On passe au trou suivant indexTrouCourant -= 1; } } // Si ce n'est pas le cas else { // On s'arrête la onPeutRecolter = false; } } // Changement de Joueur Courant if (JoueurCourant == J1) { JoueurCourant = J2; } else { JoueurCourant = J1; } // Check si il y'a un vainqueur CheckSiVainqueur(); }