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); }
/// <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); } }