コード例 #1
0
        private void RemplirFlotte()
        {
            List<Point> positionsA = new List<Point>();
            List<Point> positionsB = new List<Point>();
            List<Point> positionsC = new List<Point>();
            List<Point> positionsD = new List<Point>();
            List<Point> positionsE = new List<Point>();

            var nombreTotalCases = DGV_Choix.ColumnCount * DGV_Choix.RowCount;

            for (int i = 0; i < DGV_Choix.RowCount; i++)
            {
                for (int j = 0; j < DGV_Choix.ColumnCount; j++)
                {
                    switch (DGV_Choix.Rows[i].Cells[j].Value.ToString())
                    {
                        case "A":
                            positionsA.Add(new Point(DGV_Choix.Rows[i].Cells[j].RowIndex, DGV_Choix.Rows[i].Cells[j].ColumnIndex));
                            break;
                        case "B":
                            positionsB.Add(new Point(DGV_Choix.Rows[i].Cells[j].RowIndex, DGV_Choix.Rows[i].Cells[j].ColumnIndex));
                            break;
                        case "C":
                            positionsC.Add(new Point(DGV_Choix.Rows[i].Cells[j].RowIndex, DGV_Choix.Rows[i].Cells[j].ColumnIndex));
                            break;
                        case "D":
                            positionsD.Add(new Point(DGV_Choix.Rows[i].Cells[j].RowIndex, DGV_Choix.Rows[i].Cells[j].ColumnIndex));
                            break;
                        case "E":
                            positionsE.Add(new Point(DGV_Choix.Rows[i].Cells[j].RowIndex, DGV_Choix.Rows[i].Cells[j].ColumnIndex));
                            break;
                    }
                }
            }
            _bateaux.Add(new Bateau(bateau1, positionsA));
            _bateaux.Add(new Bateau(bateau2, positionsB));
            _bateaux.Add(new Bateau(bateau3, positionsC));
            _bateaux.Add(new Bateau(bateau4, positionsD));
            _bateaux.Add(new Bateau(bateau5, positionsE));
            flotte = new Flotte(_bateaux);
        }
コード例 #2
0
        /// <summary>
        /// Fonction principale pour jouer
        /// </summary>
        public void Run()
        {
            try
            {
                if (_nouvellePartie)
                {
                    // Envoie au 2 joueurs que les 2 sont connectés pour pouvoir poursuivre avec le jeux
                    envoyerReponse("Joueur 1 et Joueur 2 connectés", joueur1);
                    envoyerReponse("Joueur 1 et Joueur 2 connectés", joueur2);
                }
                // Recoit la position des bateaux de chaque joueur et l'affecte à une variable globale
                flotteJ1 = recevoirPositionBateaux(joueur1);
                flotteJ2 = recevoirPositionBateaux(joueur2);

                // Envoie de l'ordre de jeu des joueurs ainsi que l'ip de son opposant
                envoyerReponse("1 " + (joueur2.RemoteEndPoint as IPEndPoint).Address, joueur1);
                envoyerReponse("2 " + (joueur1.RemoteEndPoint as IPEndPoint).Address, joueur2);

                // Boucle du jeu
                while (joueur1.Connected && joueur2.Connected && flotteJ1.FlotteEstVivante() && flotteJ2.FlotteEstVivante() && BattleShip_Serveur.Program.SocketEstConnecte(joueur1) && BattleShip_Serveur.Program.SocketEstConnecte(joueur2))
                {
                        envoyerReponse(analyserAttaque(recevoirAttaque(joueur1), flotteJ2.flotte));
                        if (flotteJ2.FlotteEstVivante())
                        {
                            envoyerReponse(analyserAttaque(recevoirAttaque(joueur2), flotteJ1.flotte));
                        }
                    }
                    if (estNouvellePartie(joueur1))
                    {
                        _joueur1NouvellePartie = true;
                    }
                    if (_joueur1NouvellePartie && estNouvellePartie(joueur2))
                    {
                        _nouvellePartie = false;
                        Run();
                    }
                    else
                    {
                        if (!_joueur1NouvellePartie)
                        {
                            envoyerReponse("Joueur 1 s'est déconnecté", joueur2);
                        }
                        else
                        {
                            envoyerReponse("Joueur 2 s'est déconnecté", joueur1);
                        }
                        // lorsque la partie est terminée, on termine la connection
                        Console.WriteLine("Le joueur1 (" + (joueur1.RemoteEndPoint as IPEndPoint).Address.ToString() + ") est déconnecté");
                        joueur1.Close();
                        Console.WriteLine("Le joueur2 (" + (joueur2.RemoteEndPoint as IPEndPoint).Address.ToString() + ") est déconnecté");
                        joueur2.Close();
                    }
            }
            catch (SocketException a)
            {
                joueur1.Dispose();
                joueur2.Dispose();
            }
            catch (Exception e)
            {
                // Console.WriteLine(e.Message);
            }
        }