/// <summary> /// Gestion de l'abordage. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Abordage_Click(object sender, System.Windows.RoutedEventArgs e) { NavireJoueur joueur = (NavireJoueur)BatailleNavale.ListeNavire[0]; GalionEspagnol galion = (GalionEspagnol)BatailleNavale.ListeNavire[1]; joueur.Abordage(galion.NombreEquipageCourant, galion.NbOr); galion.Abordage(); BatailleNavale.ListeNavire[0] = joueur; BatailleNavale.ListeNavire[1] = galion; Abordage.IsEnabled = false; }
/// <summary> /// Methode qui definit les actions de chaque boutons lorsqu'il /// est touche /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button_Click(object sender, System.Windows.RoutedEventArgs e) { Button btn = (Button)sender; NavireJoueur temp = (NavireJoueur)BatailleNavale.ListeNavire[0]; if (PrixAmelioration <= temp.NbOr) { switch (btn.Tag) { case "Reparation": temp.ReparationCoque(PrixAmelioration); PrixAmelioration += 5; break; case "Recruter": temp.AjoutEquipage(PrixAmelioration); PrixAmelioration += 5; break; case "Resistance": temp.AjoutCoque(PrixAmelioration); PrixAmelioration += 5; break; case "Vitesse": temp.AjoutVitesse(PrixAmelioration); PrixAmelioration += 5; break; case "CadenceTir": if (BatailleNavale.ListeNavire[0].VitesseRechargeMax > 0) { temp.AjoutCadence(PrixAmelioration); PrixAmelioration += 5; } else { btn.IsEnabled = false; } break; } BatailleNavale.ListeNavire[0] = temp; } }
/// <summary> /// Mission Tutorielle : Début du jeu. /// </summary> public static void StartMissionTuto() { //Variable Initiales. bool Play = true; int Cpp = 0; int NumeroTour = 1; int LineInrapport = 1; bool TirObus = false; int ScoreInt = 0; int FondsInt = 0; //Initialisation des Navires : Navire Player = new NavireJoueur(); Navire Marchand00 = new NavireMarchand(25, 25, 'B', "Bleue"); //Navire Marchand01 = new NavireMarchand(0, 0, 'B', "Bleue"); //Initialisation des Ordres : //Version de départ : Peut être simplifiée. //TODO : Simplifier et passer directement les ordres en Rapport : Rapport Ordre001 = new Rapport("Ordre Amirauté", $"Tour : {NumeroTour}", "Rendez-vous en (25;25)//Tirez Avec vos Obus."); string Ordre0101 = "Ordre de l'Amiral : Capitaine : Rendez-vous en (25;25) : Pour Mesurer vos Aptitudes."; string Ordre0102 = $"Tour numéro {NumeroTour} : Un navire immobilsé vous servira de cible. Tirez avec vos Obus."; //Initialisation des Listes : //Liste de Tous les Rapports : List <Rapport> AllRapports = new List <Rapport>(); //Liste qui contiendra tous les navires de la partie. List <Navire> AllNavire = new List <Navire>(); //Liste qui contient uniquement les navires Ennemis. List <Navire> EnnemiNavire = new List <Navire>(); //TODO : Liste qui ne contiendra que les navires Alliés. AllRapports.Add(Ordre001); AllNavire.Add(Player); AllNavire.Add(Marchand00); //AllNavire.Add(Marchand01); EnnemiNavire.Add(Marchand00); //EnnemiNavire.Add(Marchand01); //Declaration des Ordres01 : //TODO : Supprimer et simplifier : Console.ForegroundColor = ConsoleColor.DarkRed; Write.InRapport(Ordre0101, LineInrapport, 1); LineInrapport++; Write.InRapport(Ordre0102, LineInrapport, 1); LineInrapport++; Console.ForegroundColor = ConsoleColor.Gray; //Cheat Code : Pour les Tests : //Player.Teleportation(26, 26); //Boucle Update et Affiche de la Mission Tutorielle : while (Play == true) { //Compteur pour le Delta-Time : Raffraichissement de l'Ecran. Cpp++; if (Cpp == 100) { //Affiche le Tour Actuel du Jeu. Write.TourNumero("Tour Numéro : " + NumeroTour); //Affiche Le Score et les Fonds du Joeur : Write.Score(ScoreInt); Write.Fonds(FondsInt); //Faire Avancer le navire : Player.Avance(Player.Direction); //Mise à jour des Informations Joueurs dans l'écran Info. UpdateInfoPlayer(); //Mises à Jour des Informations Listes des navires destinées à être vu par le joueur. UpdateEnnemiNavireForPlayer(); //RéInitialisa des variables pour le tour suivant : NumeroTour++; Cpp = 0; Draw.ClearAllUserMenu(); TirObus = false; } //Vérification des Touches Préssées par le Joueur : if (Console.KeyAvailable) { switch (Console.ReadKey(true).Key) { //Attaquer un avion d'observation : case ConsoleKey.A: break; //Consulter les Rapports : case ConsoleKey.C: foreach (Rapport item in AllRapports) { Write.InRapport(item.ToString(), LineInrapport, 1); LineInrapport++; } break; //Donner des Ordres aux navires alliés : case ConsoleKey.D: break; //Etablir un Contact Radio avec : case ConsoleKey.E: break; //Fixer un cap poour une Direction et une Vitesse : case ConsoleKey.F: Write.InUserMenu("Fixer un cap : Entrer Une Direction Puis Entrer Une Vitesse :", 1, 70); Write.InUserMenu(" Entrer une Direction [PAV NUM] puis [ENTRER]: ", 2, 70); int pDirection = Convert.ToInt32(Console.ReadLine()); Write.InUserMenu(" Entrer une Vitesse [PAV NUM] puis [ENTRER]: ", 3, 70); int pVitesse = Convert.ToInt32(Console.ReadLine()); Player.DonnerDirectionEtVitesse(pDirection, pVitesse); break; //Menu Gestion de L'Equipage : case ConsoleKey.G: break; //Consulter l'Aide du Jeu : case ConsoleKey.H: break; //Lancer une Torpille : case ConsoleKey.L: break; //Pause : case ConsoleKey.P: Write.InUserMenu("Le Programme est en Pause : ", 1, 70); Write.InUserMenu("Press [ANY KEY] Pour Relancer : ", 2, 70); Console.ReadLine(); //Draw.ClearAllUserMenu(); break; //Quiter le Programme : case ConsoleKey.Q: break; //Retourner à la Base : case ConsoleKey.R: break; //Sauvegarder la partie : case ConsoleKey.S: break; //Tirer un Obus : case ConsoleKey.T: Write.InUserMenu("BOOM !", 1, 70); TirObus = true; foreach (Navire item in EnnemiNavire) { if (TirObus == true && item.FenetreDeTir == true) { Write.InUserMenu("Navire Touché !", 2, 70); item.PrendreObusDansLaFace(); Rapport ToucheNavire = new Rapport("Réussite du Tir : ", $"Tour : {NumeroTour}", $"{item.Nom} Touché en ({item.CoordonneeX};{item.CoordonneeY})"); Write.InRapport(ToucheNavire.ToString(), LineInrapport, 1); LineInrapport++; ScoreInt = ScoreInt + 10; AllRapports.Add(ToucheNavire); if (item.EstDetruit) { Rapport Detruit = new Rapport("Destruction : ", $"Tour : {NumeroTour}", $"{item.Nom} Touché/Coulé en ({item.CoordonneeX};{item.CoordonneeY})"); Write.InRapport(Detruit.ToString(), LineInrapport, 1); LineInrapport++; AllRapports.Add(Detruit); EnnemiNavire.Remove(item); ScoreInt = ScoreInt + 50; FondsInt = FondsInt + 500; } Write.InUserMenu("Plouf !", 2, 70); break; } } Write.InUserMenu("Plouf Plouf ! ", 2, 70); break; //Utliser l'Hydophone : case ConsoleKey.U: break; } } //Contraindre une pause pour l'affichage. Thread.Sleep(1000 / 60); } //Fonction des Informations à Mettre à jour. void UpdateInfoPlayer() { Console.ForegroundColor = ConsoleColor.Green; Write.InNavireInfo("Type : " + Player.Nom, 1); Write.InNavireInfo($"Position : ({Player.CoordonneeX} ; {Player.CoordonneeY})", 2); Write.InNavireInfo("Dommages : " + Player.Etat, 3); Write.InNavireInfo("Direction : " + Player.DirectionToString, 4); Write.InNavireInfo("Vitesse : " + Player.VitesseToString, 5); Console.ForegroundColor = ConsoleColor.Gray; } //Fonction de l'Actialisation des informations Utilisées par le Joueur : void UpdateEnnemiNavireForPlayer() { //Affichage Ce que voit la Vigie : List <Navire> EnnemiEnVue = EnnemiNavire.FindAll(x => x.EstDetruit == false); if (EnnemiEnVue.Count == 0) { Console.ForegroundColor = ConsoleColor.DarkYellow; Write.Vigie("Vigie : R.A.S."); } foreach (Navire item in EnnemiEnVue) { Console.ForegroundColor = ConsoleColor.DarkYellow; if (item != Player) { Player.DistanceAvecNavire(item); Write.Vigie(Player.MessagePorteeVision); if (Player.ObjetPorteeObus) { Write.Vigie(Player.MessagePorteeObus); } } } Console.ForegroundColor = ConsoleColor.Gray; } }