//Méthode qui gère la réception des flottes des joueurs void preparerPartie() { //démarrer le commServeur _comVersClient.Connection(2); ////////////// JOUEUR 1 /////////// //Recevoir flotte String flotteJ1 = _comVersClient.LireMessage(1); System.Console.WriteLine("Flotte 1 recue"); //Interpréter le message contient flotte: reconstruit l'objet _flotte1 = lireFlotte(flotteJ1); System.Console.WriteLine("Flotte 1 traitee"); ////////////// JOUEUR 2 /////////// //Recevoir flotte String flotteJ2 = _comVersClient.LireMessage(2); System.Console.WriteLine("Flotte 2 recue"); //Interpréter le message contient flotte: reconstruit l'objet _flotte2 = lireFlotte(flotteJ2); System.Console.WriteLine("Flotte 2 traitee"); //Définir la première flotte attaquée: //Comme le joueur 1 est attaquant, le joueur 2 est attaqué. _flotteAttaquee = _flotte2; //Donner le signal d'attaquer au premier jouer //Suivi des communications au comServeur... _comVersClient.EnvoyerMessage(_attaquant, "Attaque"); //envoyer "attaque" }
public MainFrame() { InitializeComponent(); InitTheGrid(DGV_MaGrille); InitTheGrid(DGV_GrilleEnemi); maFlotte = new Flotte(); debutPlacerFlotte(); }
//Constructeur public Partie() { //Initialisation des attributs //_joueur1 = "Joueur 1"; //_joueur2 = "Joueur 2"; _flotte1 = new Flotte(); _flotte2 = new Flotte(); _partieEstFinie = false; _tourPremierJoueur = true; _comVersClient = new CommunicationServeur("0.0.0.0", 8888); _attaquant = 1; }
static void Main(string[] args) { Flotte maFlotte = new Flotte(); maFlotte._flotte[0]._pos[0].setPos(1, 1); maFlotte._flotte[4]._pos[0].setPos(9, 9); Console.WriteLine("Mes navires: "); Console.WriteLine(maFlotte); /* for (int i = 0; i < 5; ++i) { Console.WriteLine(maFlotte._flotte[i]); //Console.WriteLine(maFlotte._flotte[i]._pos[0]); }*/ Console.ReadKey(); }
//sert 2 fois au début, pour chaque joueur. void placerFlotteSurGrille(Flotte joueur) { foreach (Navire navire in joueur._flotte) { //identifier ses positions sur la grille foreach (Pos p in navire._pos) { joueur._grille[p._x, p._y] = navire.getNom();// sera append... avec _touche_coule } } }
//lorsque le client envoi tous ses bateaux, on recompose l'object flotte avec le String Flotte lireFlotte(String flotte) { Flotte f = new Flotte(); String listeNav = flotte.Split(':')[1]; // ex: Flotte=Premierbateau=Pos1Pos2;EtLesSuivants.... List<String> tabNavires = new List<String>(listeNav.Split(';')); // une ligne Premierbateau=Pos1,Pos2 par élément du tableau tabNavires.RemoveAt(tabNavires.Count - 1); String[] infoNav; //Une seule ligne du genre Premierbateau=Pos1,Pos2 String nomNav; // Premierbateau String lisPosNav; // Pos1,Pos2 int compteNav = 0; foreach (String navire in tabNavires) { infoNav = navire.Split('='); nomNav = infoNav[0]; lisPosNav = infoNav[1]; String[] tabPos = lisPosNav.Split(','); f._flotte[compteNav]._nom = nomNav; int comptePos = 0; foreach (String coord in tabPos) { Pos p = stringToPos(coord); f._flotte[compteNav]._pos[comptePos] = p; f._grille[p._x, p._y] = nomNav; ++comptePos; } ++compteNav; } return f; }
//Vérifier si tous les navires sont coulés bool PartieEstTerminee(Flotte flotte) { bool estTerminee = true; for (int n = 0; n < flotte._flotte.Length && estTerminee == true; ++n) { if (flotte._flotte[n]._estCoule == false) { estTerminee = false; } } return estTerminee; }
//Alterne la flotte attaqué, le numéro du joueur attaquant et le booléen de tour void alternerJoueur() { if (_attaquant == 1) { _attaquant = 2; } else { _attaquant = 1; } _tourPremierJoueur = !_tourPremierJoueur; //changer la flotte attaquee _flotteAttaquee = accesFlotteAttaquee(); }