/// <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> /// Place les bateaux du joueur passé en paramètre de manière aléatoire /// </summary> /// <param name="joueur">Joueur dont on doit placer les bateaux</param> public static void PlacerBateauxAuHasard(int joueur) { Random rnd = Program.random; Bateau.ALIGNEMENT alignement = ALIGNEMENT.COLONNE; int x = 0; int y = 0; int x1 = 0; int y1 = 0; for (int i = 0; i < Bateau.NombreTypesBateaux; i++) { int essais = 0; do { alignement = (Bateau.ALIGNEMENT)rnd.Next(0, 2); x = rnd.Next(0, Grille.LargeurGrille); y = rnd.Next(0, Grille.HauteurGrille); if (alignement == Bateau.ALIGNEMENT.LIGNE) { if (x + Bateau.LongueurBateaux[i] >= Grille.LargeurGrille) { x = x - (Grille.LargeurGrille - Bateau.LongueurBateaux[i]); } x1 = x + Bateau.LongueurBateaux[i]; y1 = y; } if (alignement == Bateau.ALIGNEMENT.COLONNE) { if (y + Bateau.LongueurBateaux[i] >= Grille.HauteurGrille) { y = y - (Grille.LargeurGrille - Bateau.LongueurBateaux[i]); } y1 = y + Bateau.LongueurBateaux[i]; x1 = x; } essais++; }while (Bateau.VerifierColisionBateaux(joueur, x, y, x1, y1, (Bateau.TYPES)i) == false && essais < 200); if (essais >= 200) { throw new Exception("Impossible de placer tous les bateaux sur la grille associée au joueur J" + joueur); } Bateau.PlacerBateau(joueur, (Bateau.TYPES)i, x, y, alignement); } }