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);
            }
        }
예제 #2
0
파일: Form1.cs 프로젝트: FifouAll/GolfLigue
        private void button2_Click(object sender, EventArgs e)
        {
            Trou t = new Trou(Convert.ToInt16(tb_numero.Text), Convert.ToInt16(tb_distance.Text), Convert.ToInt16(tb_par.Text));

            ApplicationData.actuel.ajouterTrou(t);
            DAOTrou dao = new DAOTrou();

            dao.recordATrou(t);
        }
예제 #3
0
파일: PionUI.cs 프로젝트: cadichris/bobail
    public void DeplacerVers(Trou destination)
    {
        Vector3 arrivee = new Vector3(
            destination.transform.position.x,
            hauteurDepart,
            destination.transform.position.z);

        transform.position = arrivee;
        Arrivee(destination);
    }
예제 #4
0
 public void DeplacerActif(Trou destination)
 {
     plateau.Deplacer(PionCourant.X, PionCourant.Y, destination.X, destination.Y);
     PionCourant.DeplacerVers(destination);
     PionCourant = null;
     if (plateau.Vainqueur() != Pion.Vide)
     {
         GameOver(plateau.Vainqueur());
     }
     else
     {
         TourSuivant();
     }
 }
        public PlateauDeJeu(string nomJ1, string nomJ2, int nbColumns, bool isIA, bool isCombatReseau)
        {
            InitializeComponent();

            NbColumns = nbColumns;
            NbTrous   = nbColumns * 2;
            NbGraines = NbTrous * 4;

            // Initialisation des Joueurs :
            J1 = new Joueur(nomJ1, 1);
            J2 = new Joueur(nomJ2, 2);

            // Indique si le J2 est une IA
            J2.SetIsIA(isIA);

            // Indique si c'est un combat en Réseau
            IsCombatReseau = isCombatReseau;

            // J1 commence
            JoueurCourant = J1;

            // Liste des trous
            ListTrous = new ObservableCollection <Trou>();

            // Initialisation du plateau :
            for (int i = 1; i <= NbTrous; i++)
            {
                // Trou Adversaire (1ère ligne)
                if (i <= NbColumns)
                {
                    ListTrous.Add(new Trou(J1, i - 1));
                }
                // Trou Ou False (2ème ligne)
                else
                {
                    ListTrous.Add(new Trou(J2, i - 1));
                }
            }

            // Remplissage des Trous :
            foreach (Trou trou in ListTrous)
            {
                trou.Valeur = 4;
            }

            // Remplissage d'une autre liste bien ordonnée
            ListTrousOrdonnes = new List <Trou>();
            for (int i = nbColumns - 1; i >= 0; i--)
            {
                Trou trouCourant = ListTrous[i];
                ListTrousOrdonnes.Add(trouCourant);
            }
            for (int i = nbColumns; i < NbTrous; i++)
            {
                Trou trouCourant = ListTrous[i];
                ListTrousOrdonnes.Add(trouCourant);
            }

            JoueurCourant = J1;

            DataContext = this;
        }
        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();
        }
예제 #7
0
파일: PionUI.cs 프로젝트: cadichris/bobail
 void Arrivee(Trou destination)
 {
     X       = destination.X;
     Y       = destination.Y;
     estLeve = false;
 }