/// <summary> /// Sauvegarde les données de la partie en cours dans un fichier texte de sauvegarde /// </summary> public static void Sauvegarder() { if (File.Exists(Sauvegarde.NomFichier()) && Sauvegarde.DemandeEffacerAnciennePartie() == false) { NomFichierIndex = Sauvegarde.RecupererDernierIndexSauvegarde() + 1; } // Sauvegarde positions J1 string[] lignes = Sauvegarde.ConvertirObjetEnLigne(new string[0], Bateau.ObtenirPositionBateauxJoueur(1)); // Sauvegarde vies J1 lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Bateau.ObtenirVieBateauxJoueur(1)); // Sauvegarde positions J2 lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Bateau.ObtenirPositionBateauxJoueur(2)); // Sauvegarde vies J2 lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Bateau.ObtenirVieBateauxJoueur(2)); // Sauvegarde grille j1 lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Grille.ObtenirGrilleJoueur(1)); // Sauvegarde grille decouverte J1 lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Grille.ObtenirGrilleDecouverteJoueur(1)); // Sauvegarde grille J2 lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Grille.ObtenirGrilleJoueur(2)); // Sauvegarde grille decouverte J2 lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Grille.ObtenirGrilleDecouverteJoueur(2)); // Sauvegarde niveau lignes = lignes.Concat(new string[] { ((int)Jeu.NiveauJeu).ToString() }).ToArray(); File.WriteAllLines(Sauvegarde.NomFichier(), lignes); Console.Clear(); Console.WriteLine("======= Sauvegarder une partie ==="); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Votre partie a été sauvegardée dans le fichier " + Sauvegarde.NomFichier()); Console.ResetColor(); Console.WriteLine("-- Appuyez sur une touche pour continuer --"); Console.ReadKey(false); }
/// <summary> /// Modifie la vie du bateau passé en paramètre associé au joueur passé en paramètres /// </summary> /// <param name="joueur">Joueur dont on doit modifier un bateau</param> /// <param name="type">Type de bateau dont on doit modifier la vie </param> /// <param name="x">Position x à la quelle le bateau a été touché</param> /// <param name="y">Position y à laquelle le bateau a été touché</param> /// <returns>Vrai si le bateau est coulé, Faux sinon</returns> public static bool ToucherBateau(int joueur, Bateau.TYPES type, int x, int y) { int[,] positionbateau = Bateau.ObtenirPositionBateauxJoueur(joueur); int[] vieBateaux = Bateau.ObtenirVieBateauxJoueur(joueur); int[,] grille = Grille.ObtenirGrilleJoueur(joueur); grille[x, y] = (int)Grille.Cases.TOUCHE; int[,] decouverte = Grille.ObtenirGrilleDecouverteJoueur(Joueur.ObtenirAutreJoueur(joueur)); decouverte[x, y] = (int)Grille.Cases.TOUCHE; vieBateaux[(int)type] = vieBateaux[(int)type] - 1; //vieBateaux[(int)type] = 0; if (vieBateaux[(int)type] <= 0) { // On marque la bateau comme coulé sur la grille for (int o = 0; o < Bateau.LongueurBateaux[(int)type]; o++) { if (Bateau.ObtenirAlignementBateau(joueur, type) == ALIGNEMENT.COLONNE) { grille[positionbateau[(int)type, 0], positionbateau[(int)type, 1] + o] = (int)Grille.Cases.COULE; decouverte[positionbateau[(int)type, 0], positionbateau[(int)type, 1] + o] = (int)Grille.Cases.COULE; } else { grille[positionbateau[(int)type, 0] + o, positionbateau[(int)type, 1]] = (int)Grille.Cases.COULE; decouverte[positionbateau[(int)type, 0] + o, positionbateau[(int)type, 1]] = (int)Grille.Cases.COULE; } } return(true); } return(false); }
/// <summary> /// Paramètre les positions du bateau passé en paramètre dans la liste des positions de bateau /// </summary> /// <param name="joueur">Joueur associé au bateau à placer</param> /// <param name="type">Type de bateau à placer</param> /// <param name="x">Position x du premier point de la droite associée au bateau à placer</param> /// <param name="y">Position y du premier point de la droite associée au bateau à placer</param> /// <param name="alignement">Alignement du bateau à placer</param> public static void PlacerBateau(int joueur, Bateau.TYPES type, int x, int y, Bateau.ALIGNEMENT alignement) { int[,] positionBateaux = Bateau.ObtenirPositionBateauxJoueur(joueur); int[] vieBateaux = Bateau.ObtenirVieBateauxJoueur(joueur); int x1; int y1; if (alignement == ALIGNEMENT.LIGNE) { x1 = x + Bateau.LongueurBateaux[(int)type] - 1; y1 = y; } else { y1 = y + Bateau.LongueurBateaux[(int)type] - 1; x1 = x; } if (x < 0 || y < 0 || x1 >= Grille.LargeurGrille || y1 >= Grille.LargeurGrille) { throw new Exception("Impossible de placer le bateau. Il se trouve en dehors de la grille."); } vieBateaux[(int)type] = Bateau.LongueurBateaux[(int)type]; positionBateaux[(int)type, 0] = x; positionBateaux[(int)type, 1] = y; positionBateaux[(int)type, 2] = x1; positionBateaux[(int)type, 3] = y1; Grille.mettreaJourGrilleUnBateau(Grille.ObtenirGrilleJoueur(joueur), x, y, x1, y1); }
/// <summary> /// Estime si le joueur passé en paramètre a perdu /// </summary> /// <param name="joueur">Joueur concerné</param> /// <returns>vrai si le joueur a perdu, faux sinon</returns> public static bool aPerdu(int joueur) { int vieRestante = 0; for (int i = 0; i < Bateau.NombreTypesBateaux; i++) { vieRestante += Bateau.ObtenirVieBateauxJoueur(joueur)[i]; } if (vieRestante == 0) { return(true); } else { return(false); } }