예제 #1
0
파일: Partie.cs 프로젝트: pho35/Puissance4
        // Initialise la partie
        public Partie(Joueur joueur1, Joueur joueur2)
        {
            // Initialise les joueurs
            joueur = new Joueur[2];
            joueur[0] = joueur1;
            joueur[1] = joueur2;

            // Pas encore de match nul
            matchNul = false;

            // Initialise le plateau
            lePlateau = new MyPlateau(joueur1, joueur2);
        }
예제 #2
0
파일: Case.cs 프로젝트: pho35/Puissance4
 // Rend une case occupé par un joueur
 // Renvoie true si la case a pu être occupé
 // Sinon false
 public bool occuperCase(Joueur unJoueur)
 {
     // Si la case n'est pas occupée
     if (!isOccupe)
     {
         // On assigne la case au joueur
         leJoueur = unJoueur;
         isOccupe = true;
         return true;
     }
     // Si la case est déjà occupée
     else
     {
         // Renvoie false
         return false;
     }
 }
예제 #3
0
        bool matchNul; // True en cas de match nul

        #endregion Fields

        #region Constructors

        // Construit le plateau
        public MyPlateau(Joueur joueur1, Joueur joueur2)
        {
            //nbLignes = 6;
            //nbColonnes = 7;
            // Crée un tableau de 6 lignes, 7 colonnes
            lesCases = new Case[nbLignes, nbColonnes];

            // Alloue le tableau
            for (int i = 0; i < nbLignes; i++)
                for (int j = 0; j < nbColonnes; j++)
                    lesCases[i, j] = new Case();

            // Initialise les joueurs
            this.joueur1 = joueur1;
            this.joueur2 = joueur2;

            etatPlateau = Etat.NonCommence;

            matchNul = false;
        }
예제 #4
0
파일: Case.cs 프로젝트: pho35/Puissance4
 // Construit une case non occupé
 public Case()
 {
     isOccupe = false;
     leJoueur = null;
 }
예제 #5
0
        private void creerNouvellePartie()
        {
            // Déclare les joueurs
            Joueur joueur1 = null;
            Joueur joueur2 = null;
            Joueur joueurEnCours = null;

            //Enabled les bouton pour être pret a jouer
            button1.Enabled = true;
            button2.Enabled = true;
            button3.Enabled = true;
            button4.Enabled = true;
            button5.Enabled = true;
            button6.Enabled = true;
            button7.Enabled = true;

            do{
                // Crée une boite de dialogue pour demander le nom des joueurs
                NomJoueurs DiagNom = new NomJoueurs();

                // Lance la boite de dialogue
                if (DiagNom.ShowDialog() == DialogResult.OK)
                {
                    // Récupère le résultat et crée les joueurs
                    joueur1 = new Joueur(DiagNom.getNomJoueur1(), DiagNom.getCouleurJoueur1(), 1);
                    joueur2 = new Joueur(DiagNom.getNomJoueur2(), DiagNom.getCouleurJoueur2(), 2);

                    if (joueur1.Couleur == joueur2.Couleur)
                    {
                        MessageBox.Show("Vous ne pouvez pas avoir la même couleur(C'est mélangeant!).", "Problème");
                    }
                    else if (DiagNom.getNomJoueur1().Equals(DiagNom.getNomJoueur2()))
                    {
                        MessageBox.Show("Vous ne pouvez pas avoir le même pseudo.", "Problème");
                    }
                    else if (DiagNom.getNomJoueur1().Equals("") || DiagNom.getNomJoueur2().Equals(""))
                    {
                        MessageBox.Show("Vous devez remplir vos pseudos !", "Problème");
                    }
                    else
                    {
                        // Vide le plateau
                        tableLayoutPanel1.Controls.Clear();

                        // Met à jour le nom des joueurs
                        lblJoueur1.Text = joueur1.getNom();
                        lblJoueur2.Text = joueur2.getNom();

                        //Met a Jour les scores
                        label2.Text = "0";
                        label4.Text = "0";

                        // Crée la partie
                        unePartie = new Partie(joueur1, joueur2);
                        joueurEnCours = unePartie.tirerAuSortJoueur();
                        MessageBox.Show(joueurEnCours.getNom() + " commence la partie");
                        statusStrip1.Items[0].Text = joueurEnCours.getNom() + " à toi de jouer";

                        // Création des images pour la sélection des joueurs
                        creationPictureBoxSelections();

                        // Metà jour la fenetre
                        MettreAJourFenetre();
                    }
                }
                else
                {
                    joueur1 = new Joueur("", Color.Blue, 1);
                    joueur2 = new Joueur("", Color.Yellow, 2);
                    Application.Exit();
                    break;
                }

            } while (joueur1.Couleur == joueur2.Couleur || joueur1.getNom().Equals(joueur2.getNom()) || joueur1.getNom().Equals("") || joueur2.getNom().Equals(""));
            //} while (joueur1.Couleur == joueur2.Couleur);
        }
예제 #6
0
        private bool cherche4alignes(int oCol, int oLigne, int dCol, int dLigne)
        {
            //Joueur joueurActuel = null;
            Joueur ancienJoueur = null;
            Joueur joueurOccupant = null;
            int compteur = 0;

            int curCol = oCol;
            int curRow = oLigne;

            while ((curCol >= 0) && (curCol < nbColonnes) && (curRow >= 0) && (curRow < nbLignes))
            {
                // Récupère le joueur actuel
                joueurOccupant = lesCases[curRow, curCol].getJoueurOccupant();

                // Si le joueur actuel est "null"
                if (joueurOccupant == null)
                {
                    // On réinitialise le compteur
                    compteur = 1;
                    // On met à jour l'ancien joueur
                    ancienJoueur = null;
                }
                // Si le joueur occupant n'est pas nul
                else
                {
                    // Si l'ancien joueur est différent du joueur occupant
                    if (joueurOccupant != ancienJoueur)
                    {
                        // On réinitialise le compteur
                        compteur = 1;
                        // On met à jour l'ancien joueur
                        ancienJoueur = joueurOccupant;
                    }
                    // Sinon
                    else
                    {
                        // on incrémente
                        compteur++;
                    }
                }

                // On sort lorsque le compteur atteint 4
                if ((joueurOccupant != null) && (compteur == 4))
                {
                    // Le joueur occupant devient le joueur gagnant
                    joueurGagnant = joueurOccupant;
                    return true;
                }

                // On passe à l'itération suivante
                curCol += dCol;
                curRow += dLigne;
            }

            // Aucun alignement n'a été trouvé
            return false;
        }
예제 #7
0
        public Point ajouterPion(Joueur unJoueur, int numeroColonne)
        {
            int i;
            Point positionPion;

            // Si l'état n'est pas en cours
            if (etatPlateau == Etat.NonCommence)
                // Met en état en cours
                etatPlateau = Etat.EnCours;

            // Vérifie si la colonne n'est pas pleine
            if (lesCases[nbLignes - 1, numeroColonne - 1].isOccupe)
            {
                // La colonne est pleine, on ne fait rien
                // Retourne null
                positionPion = new Point(0, 0);
                return positionPion;
            }
            else
            {
                // la colonne n'est pas pleine
                for (i = 0; lesCases[i, numeroColonne - 1].isOccupe; i++)
                {
                }
                // On regarde jusqu'où la colonne est remplie
                Console.WriteLine("Numero de ligne :{0} ", i);
                // On ajoute le pion
                lesCases[i, numeroColonne - 1].occuperCase(unJoueur);
            }
            // Retourne la position du pion
            positionPion = new Point(i + 1, numeroColonne);
            return positionPion;
        }