/// <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> /// Affiche et gère le déroulement d'une partie /// </summary> public static void DeroulementPartie() { int joueur = 1; IA.Reset(); while (true) { Console.Clear(); Joueur.Jouer(joueur); if (Joueur.aPerdu(Joueur.ObtenirAutreJoueur(joueur)) == true) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Le joueur " + joueur + " a gagné !!!"); Console.ResetColor(); Console.WriteLine("-- Appuyez sur une touche pour continuer --"); Console.ReadKey(false); Jeu.MenuPrincipal(); } joueur = Joueur.ObtenirAutreJoueur(joueur); Console.WriteLine("-- Appuyez sur une touche pour passer au tour de l'autre joueur --"); Console.ReadKey(false); Console.Clear(); Joueur.Jouer(joueur); if (Joueur.aPerdu(Joueur.ObtenirAutreJoueur(joueur)) == true) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Le joueur " + joueur + " a gagné :'("); Console.ResetColor(); Console.WriteLine("-- Appuyez sur une touche pour continuer --"); Console.ReadKey(false); Jeu.MenuPrincipal(); } joueur = Joueur.ObtenirAutreJoueur(joueur); if (Joueur.DemanderContinuer() == false) { Sauvegarde.Sauvegarder(); Jeu.MenuPrincipal(); } } }
/// <summary> /// Tente un tir sur une cellule par le joueur précisé /// </summary> /// <param name="joueur">Joueur réalisant le tir</param> /// <param name="x">Position x de la cellule visée</param> /// <param name="y">Position y de la cellule visée</param> /// <param name="coule">Paramètre entrée sortie, contient vrai si un bateau a été coulé suite au tir</param> /// <returns>Vrai si un bateau a été touché, faux sinon</returns> public static bool Tirer(int joueur, int x, int y, out bool coule) { coule = false; if (Grille.ObtenirGrilleDecouverteJoueur(joueur)[x, y] != (int)Grille.Cases.VIDE) { return(false); } int[,] positionBateaux = null; int[] vieBateaux = null; if (joueur == 1) { positionBateaux = Bateau.PositionBateauxJ2; vieBateaux = Bateau.VieBateauxJ2; } else if (joueur == 2) { positionBateaux = Bateau.PositionBateauxJ1; vieBateaux = Bateau.VieBateauxJ1; } bool trouve = false; int i = 0; while (trouve == false && i < Bateau.NombreTypesBateaux) { trouve = positionBateaux[i, 0] <= x && x <= positionBateaux[i, 2] && positionBateaux[i, 1] <= y && y <= positionBateaux[i, 3]; i++; } if (trouve == true) { coule = Bateau.ToucherBateau(Joueur.ObtenirAutreJoueur(joueur), (Bateau.TYPES)(i - 1), x, y); } else { int[,] decouverte = Grille.ObtenirGrilleDecouverteJoueur(joueur); decouverte[x, y] = (int)Grille.Cases.DECOUVERT_VIDE; } return(trouve); }