Beispiel #1
0
 public FormSub1()
 {
     InitializeComponent();
     Demarrage = true;
     BTN_Ronde_suivante.Hide();
 }
Beispiel #2
0
        private void BTN_Ronde_suivante_Click(object sender, EventArgs e)
        {
            // Ronde maximale
            int Ronde_Max = Tournoi.Ronde_Max();
            // Pirse du numero de tête de série du joueur
            int TeteDeSerie_Blanc, TeteDeSerie_Noir;
            // Prise du résultat de chaque joueur
            double ResultatBlanc, ResultatNoir;
            int    Indice_Colonne = 0;
            // Variable de test
            int OK = 0, OK_for_MAJ = 0;

            // Mise à jour des résultats
            Separation = Nombre_de_Joueurs / 2;
            Couleur    = 1;
            // Test pour voir si tout les champs sont remplis
            for (Echiquier_Resultat = 0; Echiquier_Resultat < Separation; Echiquier_Resultat++)
            {
                // Mets les resultats dans les strings
                try
                {
                    string resblanc = DGW_Ronde1.Rows[Echiquier_Resultat].Cells[5].Value.ToString();
                    string resnoir  = DGW_Ronde1.Rows[Echiquier_Resultat].Cells[7].Value.ToString();
                    // Incrémente la valeur seulement si les champs ne sont pas vides
                    if (resblanc != "" && resnoir != "")
                    {
                        OK++;
                    }
                }
                catch (NullReferenceException)
                {
                    // Mettre un message d'erreur
                    MessageBox.Show("Un champ non rempli à été détécté (peut s'afficher plusieurs fois si plusieurs champs vides sont détéctés !)");
                }
            }
            // Si OK est égale à Echiquier_Resultat, c'est qu'aucun champ n'est vide
            if (Echiquier_Resultat == OK)
            {
                // On peut commencer à mettre à jour
                OK_for_MAJ = 1;
            }
            // Effectuer seulement si la mise à jour n'est pas faite et que le tampon de vérification est ok
            if ((MAJ == 0) && (OK_for_MAJ == 1))
            {
                // S'il s'agit de la première ronde
                if (Ronde == 1)
                {
                    // Reprendre les joueurs des cellules et y mettre à jour leurs résultats
                    for (Echiquier_Resultat = 0; Echiquier_Resultat < Separation; Echiquier_Resultat++)
                    {
                        if (Couleur == 1)
                        {
                            // Prise des n° de tête de série
                            TeteDeSerie_Blanc = Participants[Echiquier_Resultat].n_Depart_Du_JoueurLoad();
                            TeteDeSerie_Noir  = Participants[Echiquier_Resultat + Separation].n_Depart_Du_JoueurLoad();
                            // Chargement du résultat inscrit dans le tableau
                            string resultat_blanc = DGW_Ronde1.Rows[Indice_Colonne].Cells[5].Value.ToString();
                            // Prise du résultat
                            if (resultat_blanc == "1")
                            {
                                ResultatBlanc = 1;
                                ResultatNoir  = 0;
                            }
                            else if (resultat_blanc == "0")
                            {
                                ResultatBlanc = 0;
                                ResultatNoir  = 1;
                            }
                            else
                            {
                                ResultatBlanc = 0.5;
                                ResultatNoir  = 0.5;
                            }
                            // Mise à jour des éléments du joueur (ronde, adversaire, couleur, résultat)
                            Participants[Echiquier_Resultat].Stat_Ronde(Ronde, TeteDeSerie_Noir, 1, ResultatBlanc);
                            Participants[Separation + Echiquier_Resultat].Stat_Ronde(Ronde, TeteDeSerie_Blanc, 0, ResultatNoir);
                            Couleur = 0;
                            Indice_Colonne++;
                        }
                        else
                        {
                            // Chargement des têtes de séries
                            TeteDeSerie_Blanc = Participants[Echiquier_Resultat + Separation].n_Depart_Du_JoueurLoad();
                            TeteDeSerie_Noir  = Participants[Echiquier_Resultat].n_Depart_Du_JoueurLoad();
                            // Chargement du résultat inscrit dans le tableau
                            string resultat_blanc = DGW_Ronde1.Rows[Indice_Colonne].Cells[5].Value.ToString();
                            // Prise du résultat
                            if (resultat_blanc == "1")
                            {
                                ResultatBlanc = 1;
                                ResultatNoir  = 0;
                            }
                            else if (resultat_blanc == "0")
                            {
                                ResultatBlanc = 0;
                                ResultatNoir  = 1;
                            }
                            else
                            {
                                ResultatBlanc = 0.5;
                                ResultatNoir  = 0.5;
                            }
                            // Mise à jour des éléments du joueur (ronde, adversaire, couleur, résultat)
                            Participants[Echiquier_Resultat + Separation].Stat_Ronde(Ronde, TeteDeSerie_Noir, 1, ResultatBlanc);
                            Participants[Echiquier_Resultat].Stat_Ronde(Ronde, TeteDeSerie_Blanc, 0, ResultatNoir);
                            Couleur = 1;
                            Indice_Colonne++;
                        }
                    }
                }
                // Dans le cas d'une autre ronde
                else
                {
                    // Reprendre les joueurs des cellules et y mettre à jour leurs résultats
                    for (Echiquier_Resultat = 0; Echiquier_Resultat < (Nombre_de_Joueurs - 1); Echiquier_Resultat = Echiquier_Resultat + 2)
                    {
                        // Prise des n° de tête de série
                        TeteDeSerie_Blanc = Participants[Echiquier_Resultat].n_Depart_Du_JoueurLoad();
                        TeteDeSerie_Noir  = Participants[Echiquier_Resultat + 1].n_Depart_Du_JoueurLoad();
                        // Chargement du résultat inscrit dans le tableau
                        string resultat_blanc = DGW_Ronde1.Rows[Indice_Colonne].Cells[5].Value.ToString();
                        // Prise du résultat
                        if (resultat_blanc == "1")
                        {
                            ResultatBlanc = 1;
                            ResultatNoir  = 0;
                        }
                        else if (resultat_blanc == "0")
                        {
                            ResultatBlanc = 0;
                            ResultatNoir  = 1;
                        }
                        else
                        {
                            ResultatBlanc = 0.5;
                            ResultatNoir  = 0.5;
                        }
                        // Mise à jour des éléments du joueur (ronde, adversaire, couleur, résultat)
                        Participants[Echiquier_Resultat].Stat_Ronde(Ronde, TeteDeSerie_Noir, 1, ResultatBlanc);
                        Participants[Echiquier_Resultat + 1].Stat_Ronde(Ronde, TeteDeSerie_Blanc, 0, ResultatNoir);
                        Indice_Colonne++;
                    }
                }

                MessageBox.Show("Test : MAJ Réussie");
                // Cacher le bouton "ronde suivante" et réafficher le bouton "générer ronde" pour pouvoir
                // générer la ronde suivante
                BTN_Ronde_suivante.Hide();

                // Effacer tout le tableau
                DGW_Ronde1.Rows.Clear();
                // Ajouter une ronde et repermettre la mise à jour
                Ronde++;
                // Si c'était la dernière ronde (dès que la ronde actuelle dépasse le nombre de rondes maximum)
                if (Ronde > Ronde_Max)
                {
                    MessageBox.Show("Le tournoi est terminé !\r\nCliquer sur <Classement> pour voir le classement");
                }
                else
                {
                    BTN_GenRondes.Show();
                }
                // Permet la remise à jour des rondes
                MAJ = 1;
            }
            else
            {
                // Si la mise à jour a déjà été faite
                if (MAJ == 1)
                {
                    MessageBox.Show("Mise à jour déjà éffectuée");
                }
                // Sinon (donc si le tampon de mise à jour a été refusé
                else
                {
                    MessageBox.Show("Veuillez remplir tout les champs SVP !");
                }
            }
        }
Beispiel #3
0
        // Methode pour la gestion des rondes
        public void Genere_Ronde()
        {
            // Pirse du numero de tête de série du joueur
            int TeteDeSerie_Blanc, TeteDeSerie_Noir;
            // Prise du nombre de joueurs ayant le même nombre de points
            int Nb_Joueurs_Meme_Points = 0;
            // Pour détécter le nombre d'échiquier à initialisé (dans le cas où il y a plusieurs rondes)
            int Pointeur_Echiquier_Debut = 0;
            int Pointeur_Echiquier_Fin   = 0;
            int Echiquier = 0;
            // Pour la boucle for
            double i;
            int    j;

            // MAJ de la ronde jouee
            Tournoi.MAJ_Ronde_Jouee(Ronde);
            Ronde = Tournoi.Ronde_Jouee();
            // Prise de la liste de depart
            Participants = Tournoi.ChargerListe();
            // Prise du nombre de joueur
            Nombre_de_Joueurs = Tournoi.Joueurs_Totaux();

            // Si c'est la première ronde, il y a besoin de moins d'étapes (pas de couleurs, pas d'adversaires, 1ère ronde vérouillée)
            if (Ronde == 1)
            {
                // Etape 1 : séparer en deux la liste de départ
                Separation = Nombre_de_Joueurs / 2;
                // Etape 2 : gérer la ronde de départ
                for (Init_Echiquier = 0; Init_Echiquier < Separation; Init_Echiquier++)
                {
                    if (Couleur == 1)
                    {
                        // Chargement des têtes de séries
                        TeteDeSerie_Blanc = Participants[Init_Echiquier].n_Depart_Du_JoueurLoad();
                        TeteDeSerie_Noir  = Participants[Init_Echiquier + Separation].n_Depart_Du_JoueurLoad();
                        string[] row = new string[] { (Init_Echiquier + 1).ToString(), TeteDeSerie_Blanc.ToString(), Participants[Init_Echiquier].nom + " " + Participants[Init_Echiquier].prenom, Participants[Init_Echiquier].Titre, "(0)", "", "-", "", TeteDeSerie_Noir.ToString(), Participants[Separation + Init_Echiquier].nom + " " + Participants[Separation + Init_Echiquier].prenom, Participants[Separation + Init_Echiquier].Titre, "(0)" };
                        DGW_Ronde1.Rows.Add(row);
                        Couleur = 0;
                    }
                    else
                    {
                        // Chargement des têtes de séries
                        TeteDeSerie_Blanc = Participants[Init_Echiquier + Separation].n_Depart_Du_JoueurLoad();
                        TeteDeSerie_Noir  = Participants[Init_Echiquier].n_Depart_Du_JoueurLoad();
                        string[] row = new string[] { (Init_Echiquier + 1).ToString(), TeteDeSerie_Blanc.ToString(), Participants[Separation + Init_Echiquier].nom + " " + Participants[Separation + Init_Echiquier].prenom, Participants[Separation + Init_Echiquier].Titre, "(0)", "", "-", "", TeteDeSerie_Noir.ToString(), Participants[Init_Echiquier].nom + " " + Participants[Init_Echiquier].prenom, Participants[Init_Echiquier].Titre, "(0)" };
                        DGW_Ronde1.Rows.Add(row);
                        Couleur = 1;
                    }
                }
            }
            // Mais si il y a déjà eu une ronde jouée, il va falloir traité plus de choses
            else
            {
                // Etape 1 : Trier le nombre de joueurs selon leurs points
                TriGesRonde(Participants, Ronde, Nombre_de_Joueurs);
                // Etape 2 : Compter le nombre de joueurs ayant le même nombre de points en partant par le nombre de points maximum
                for (i = (Ronde - 1); i >= 0; i = i - 0.5)
                {
                    // Traitement n°1 : Les joueurs ayant le maximum de points
                    // ... dernier traitement : Les joueurs ayant le minimum de points
                    for (j = 0; j < Nombre_de_Joueurs; j++)
                    {
                        // Calcul du nombre de joueurs ayant le même nombre de points
                        if (Participants[j].PointsJoueur() == i)
                        {
                            Nb_Joueurs_Meme_Points++;
                        }
                    }
                    // Il y a traitement d'information que s'il y a au moins 1 joueur avec le nombre de poitns requis
                    if (Nb_Joueurs_Meme_Points > 0)
                    {
                        // Ensuite, pour la première gestion des rondes, on effectue la même chose que pour la première ronde
                        Separation = Nb_Joueurs_Meme_Points / 2;
                        // Dans le cas ou le nombre de joueurs est pair
                        if ((Nb_Joueurs_Meme_Points % 2) == 0)
                        {
                            // Chargement du nombre d'échiquier à initialiser
                            Pointeur_Echiquier_Fin = Pointeur_Echiquier_Fin + Separation;
                            // Gestion des rondes
                            for (Init_Echiquier = Pointeur_Echiquier_Debut; Init_Echiquier < Pointeur_Echiquier_Fin; Init_Echiquier++)
                            {
                                // Chargement des têtes de séries
                                TeteDeSerie_Blanc = Participants[Pointeur_Echiquier_Debut].n_Depart_Du_JoueurLoad();
                                TeteDeSerie_Noir  = Participants[Pointeur_Echiquier_Debut + 1].n_Depart_Du_JoueurLoad();
                                string[] row = new string[] { (Echiquier + 1).ToString(), TeteDeSerie_Blanc.ToString(), Participants[Pointeur_Echiquier_Debut].nom + " " + Participants[Pointeur_Echiquier_Debut].prenom, Participants[Pointeur_Echiquier_Debut].Titre, "(" + Participants[Pointeur_Echiquier_Debut].PointsJoueur() + ")", "", "-", "", TeteDeSerie_Noir.ToString(), Participants[Pointeur_Echiquier_Debut + 1].nom + " " + Participants[Pointeur_Echiquier_Debut + 1].prenom, Participants[Pointeur_Echiquier_Debut + 1].Titre, "(" + Participants[Pointeur_Echiquier_Debut + 1].PointsJoueur() + ")" };
                                DGW_Ronde1.Rows.Add(row);
                                // Incrémenataion du pointeur de l'échiquier DE DEUX (car un échiquier = deux joueurs)
                                Pointeur_Echiquier_Debut = Pointeur_Echiquier_Debut + 2;
                                // Incrémentation pour afficher le bon échiquier
                                Echiquier++;
                            }
                            // Reinitialise les pointeurs d'échiquiers
                            Pointeur_Echiquier_Fin = Pointeur_Echiquier_Debut;
                            // Remise à 0 des joueurs ayant le même nombre de points
                            Nb_Joueurs_Meme_Points = 0;
                        }
                        // Dans le cas ou le nombre de joueur est impair
                        else
                        {
                            // Chargement du nombre d'échiquier à initialiser + 1 avec un joueur ayant le nombre de points inférieur
                            Pointeur_Echiquier_Fin = Pointeur_Echiquier_Fin + Separation + 1;
                            // Gestion des rondes
                            for (Init_Echiquier = Pointeur_Echiquier_Debut; Init_Echiquier < Pointeur_Echiquier_Fin; Init_Echiquier++)
                            {
                                // Chargement des têtes de séries
                                TeteDeSerie_Blanc = Participants[Pointeur_Echiquier_Debut].n_Depart_Du_JoueurLoad();
                                TeteDeSerie_Noir  = Participants[Pointeur_Echiquier_Debut + 1].n_Depart_Du_JoueurLoad();
                                string[] row = new string[] { (Echiquier + 1).ToString(), TeteDeSerie_Blanc.ToString(), Participants[Pointeur_Echiquier_Debut].nom + " " + Participants[Pointeur_Echiquier_Debut].prenom, Participants[Pointeur_Echiquier_Debut].Titre, "(" + Participants[Pointeur_Echiquier_Debut].PointsJoueur() + ")", "", "-", "", TeteDeSerie_Noir.ToString(), Participants[Pointeur_Echiquier_Debut + 1].nom + " " + Participants[Pointeur_Echiquier_Debut + 1].prenom, Participants[Pointeur_Echiquier_Debut + 1].Titre, "(" + Participants[Pointeur_Echiquier_Debut + 1].PointsJoueur() + ")" };
                                DGW_Ronde1.Rows.Add(row);
                                // Incrémenataion du pointeur de l'échiquier DE DEUX (car un échiquier = deux joueurs)
                                Pointeur_Echiquier_Debut = Pointeur_Echiquier_Debut + 2;
                                // Incrémentation pour afficher le bon échiquier
                                Echiquier++;
                            }
                            // Reinitialise les pointeurs d'échiquiers
                            Pointeur_Echiquier_Fin = Pointeur_Echiquier_Debut;
                            // Remise à -1 des joueurs ayant le même nombre de points (pour retirer un joueur avec le nombre de points inférieur)
                            Nb_Joueurs_Meme_Points = -1;
                        }
                    }
                }
            }
            // Faire disparaitre le bouton "générer ronde" et afficher le bouton "ronde suivante"
            BTN_GenRondes.Hide();
            BTN_Ronde_suivante.Show();
            MAJ = 0;
        }