/// <summary> /// Permet de joueur un tour en tant qu'humain /// </summary> /// <param name="joueur">Joueur concerné</param> public static void JouerHumain(int joueur) { int x, y; int[,] salves = new int[Joueur.ObtenirTailleSalve(joueur), 2]; /*Console.WriteLine("Votre Grille:"); * Grille.AfficherGrille(Grille.ObtenirGrilleJoueur(joueur)); * Console.WriteLine("Ce que vous savez de la Grille de l'adversaire:"); * Grille.AfficherGrille(Grille.ObtenirGrilleDecouverteJoueur(joueur));*/ for (int i = 0; i < salves.GetLength(0); i++) { Console.Clear(); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("==TOUR DU JOUEUR " + joueur + "============="); Console.ResetColor(); string infoGrilles = "Votre Grille: Ce que vous savez de la grille de votre adversaire:"; Console.WriteLine(infoGrilles); Grille.AfficherDeuxGrillesCoteACote(Grille.ObtenirGrilleJoueur(joueur), Grille.ObtenirGrilleDecouverteJoueur(joueur)); Console.WriteLine("\n-------\nParamétrage du canon " + (i + 1) + "/" + salves.GetLength(0)); Console.Write("Tirs paramétrés: "); Console.ForegroundColor = ConsoleColor.DarkYellow; for (int o = 0; o < i; o++) { Console.Write(Grille.Lettres[salves[o, 1]] + "" + (salves[o, 0] + 1) + " "); } Console.WriteLine(""); Console.ResetColor(); DemanderPosition(joueur, out x, out y); salves[i, 0] = x; salves[i, 1] = y; Console.WriteLine("Un canon a été dirigé vers la cellule " + Grille.Lettres[y] + "" + (x + 1) + " ..."); } Console.Clear(); Console.WriteLine("------------------------"); Console.WriteLine("Mise à feu des canons..."); for (int i = 0; i < salves.GetLength(0); i++) { x = salves[i, 0]; y = salves[i, 1]; Console.Write("Tir sur la cellule " + Grille.Lettres[y] + "" + (x + 1) + " ..."); bool coule = false; if (Bateau.Tirer(joueur, x, y, out coule) == true) // le joueur a touché { if (coule == false) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Vous avez touché un navire !"); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Un bateau a été coulé."); Console.ResetColor(); Joueur.ReglerTailleSalve(joueur, Joueur.ObtenirTailleSalve(joueur) - 1); } } else // le joueur n'a pas touché { Console.WriteLine("C'est un coup dans l'eau..."); } } }
public Combat(Joueur player1, Joueur player2) { Init(); }
//TIR durant le COMBAT public void Tir(Joueur target) { int x, y; var rand = new Random(); //Coté IA if (target.name != "Computer") { do { x = rand.Next(0, 10); y = rand.Next(0, 10); //IA un peu avancé, tendance à tirer autour des cases touchés if (target.touchedLast == true && target.caseAutour < 4) { switch (target.caseAutour) { case 0: //HAUT if (target.yLast < 10) { x = target.xLast; y = target.yLast + 1; } target.caseAutour++; break; case 1: //BAS if (target.yLast > 0) { x = target.xLast; y = target.yLast - 1; } target.caseAutour++; break; case 2: //GAUCHE if (target.xLast > 0) { x = target.xLast - 1; y = target.yLast; } target.caseAutour++; break; case 3: //DROITE if (target.xLast < 10) { x = target.xLast + 1; y = target.yLast; } target.caseAutour++; break; default: x = target.xLast; y = target.yLast; break; } } else { target.caseAutour = 0; } } while (target.carte.tableauValeur[x, y] > 6); //CHOIX DE LA CASE SUR LAQUELLE TIRER if (target.carte.tableauValeur[x, y] > 0 && target.carte.tableauValeur[x, y] < 6) {//TOUCHÉ Console.Clear(); Console.Write("Touché ! "); Console.WriteLine("L'IA à touché votre : " + kindOfBoat(target.carte.tableauValeur[x, y])); target.carte.tableauValeur[x, y] = 8; target.lifeRemaining--; target.touchedLast = true; target.xLast = x; target.yLast = y; //Console.WriteLine("DEBUG : " + x + "/" + y + " --> " + target.carte.tableauValeur[x, y] + " Vie : " + target.lifeRemaining); } else {//FAIL if (target.carte.tableauValeur[x, y] == 0) { target.carte.tableauValeur[x, y] = 7; } Console.Clear(); Console.WriteLine("Plouff l'IA a loupé quelle grosse merde !"); target.touchedLast = false; } } else //Coté Humain { //CHOIX DE LA CASE SUR LAQUELLE TIRER Console.WriteLine("Choisissez où vous voulez tirer ! "); y = target.coordInput("x"); x = target.coordInput("y"); while (target.carte.TableauValeur[x, y] > 6) { Console.WriteLine("Vous avez déjà tiré ici :"); y = target.coordInput("x"); x = target.coordInput("y"); } //TOUCHÉ if (target.carte.TableauValeur[x, y] != 0 && target.carte.TableauValeur[x, y] != 7) { Console.Clear(); Console.WriteLine("Touché ! En plein sur son " + kindOfBoat(target.carte.TableauValeur[x, y])); target.carte.TableauVide[x, y] = 8; target.carte.TableauFront[x, y] = 8; target.lifeRemaining--; } else { //FAIL Console.Clear(); Console.WriteLine("Raté ! Plouufff mon gars, dans ta...l'eau"); target.carte.TableauVide[x, y] = 7; target.carte.TableauFront[x, y] = 7; } } }
/// <summary> /// Affichage et gestion de l'interaction du joueur du menu de chargement d'une partie sauvegardée /// </summary> public static void MenuChargerPartie() { Console.Clear(); Joueur.Start(); Console.WriteLine("======= Charger une partie ======="); string[] sauvegardes = Sauvegarde.RecupererFichiersSauvegarde(); if (sauvegardes.Length <= 0) { Console.WriteLine("Aucune partie sauvegardée n'a été trouvée."); Console.WriteLine("Appuyez sur une touche pour continuer..."); Console.ReadKey(false); Jeu.MenuPrincipal(); return; } Console.WriteLine("Veuillez sélectionner une sauvegarde ci-dessous"); Console.ForegroundColor = ConsoleColor.Yellow; for (int i = 0; i < sauvegardes.Length; i++) { Console.WriteLine("" + (i + 1) + ")" + sauvegardes[i]); } Console.ResetColor(); int index = -1; do { try { index = Convert.ToInt32(Console.ReadLine()); index = index - 1; if (index < 0 || index >= sauvegardes.Length) { index = -1; } } catch (Exception) { index = -1; } if (index == -1) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ce n'est pas une sélection valide. Veuillez réessayer."); Console.ResetColor(); } }while (index == -1); Sauvegarde.ReglerFichierSauvegarde(sauvegardes[index]); Console.Clear(); Console.WriteLine("======= Charger une partie ======="); try { Sauvegarde.Charger(); } catch (Exception e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Impossible de charger la partie. Etes-vous sûr d'avoir un fichier de sauvegarde existant ?"); Console.ResetColor(); Console.WriteLine("Appuyez sur une touche pour continuer..."); Console.ReadKey(false); Jeu.MenuPrincipal(); } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("La partie a été chargée !"); Console.ResetColor(); Console.WriteLine("Appuyez sur une touche pour continuer..."); Console.ReadKey(false); Jeu.DeroulementPartie(); }