/// <summary> /// Tue l'être vivant passé en paramètre, en mettant son état à false /// </summary> /// <param name="p_etreVivant">L'être vivant à tuer</param> public static void Tuer(EtreVivant p_etreVivant) { p_etreVivant.m_etat = false; }
/// <summary> /// Fonction principale permettant de lancer le jeu /// </summary> public void Start() { int Choix = 0; int ChoixAleatoire; int nombreEtreVivant = 0; int nombreTuerReproduire = 0; int nombreTuerDivision = 0; int nombreTuer = 0; Random aleatoire = new Random(); Menu(); do { Choix = int.Parse(Console.ReadLine()); switch (Choix) { case 1: //Tuer for (int i = 0; i < 1; i++) // On ne tue que 1 etre vivant pour l'instant { //Génération d'un nombre aléatoire entre 1 et le nombre d'etre vivant nombreEtreVivant = m_listEtreVivantReproduction.Count + m_listEtreVivantDivision.Count; nombreTuer= nombreTuerDivision+ nombreTuerReproduire; //On génére un nouveau nombre aléatoire si etat = false et seulement si tous les etre ne sont pas déjà mort if (nombreTuer!=nombreEtreVivant) { int listRandom = aleatoire.Next(0, 2); if(listRandom==0 && nombreTuerReproduire != m_listEtreVivantReproduction.Count) { nombreTuerReproduire++; do { ChoixAleatoire = aleatoire.Next(0, m_listEtreVivantReproduction.Count); } while (m_listEtreVivantReproduction[ChoixAleatoire].Etat == false); // On boucle tant que l'être vivant choisit est déjà mort EtreVivant.Tuer(m_listEtreVivantReproduction[ChoixAleatoire]); Console.WriteLine($"{m_listEtreVivantReproduction[ChoixAleatoire].Nom} a ete tue. "); ShowEtrevivant(m_listEtreVivantReproduction, m_listEtreVivantDivision); } else if(listRandom == 1 && nombreTuerDivision != m_listEtreVivantDivision.Count) { nombreTuerDivision++; do { ChoixAleatoire = aleatoire.Next(0, m_listEtreVivantDivision.Count); } while (m_listEtreVivantDivision[ChoixAleatoire].Etat == false); EtreVivant.Tuer(m_listEtreVivantDivision[ChoixAleatoire]); Console.WriteLine($"{m_listEtreVivantDivision[ChoixAleatoire].Nom} a ete tue. "); ShowEtrevivant(m_listEtreVivantReproduction, m_listEtreVivantDivision); }else if(nombreTuerDivision >= m_listEtreVivantDivision.Count) Console.WriteLine("Impossible de tuer un etre vivant qui se divise, il ne reste plus personne!"); } else if(nombreTuer >= nombreEtreVivant) Console.WriteLine("Impossible de tuer un etre vivant, il ne reste plus personne!"); } break; case 2: //Reproduire int nombreEtreVivantReproduction = m_listEtreVivantReproduction.Count; int nombreEtreVivantDivision = m_listEtreVivantDivision.Count; for(int i = 0; i < 3; i++) // On essaye 3 reproduction { //Génération d'un nombre aléatoire int choixAleatoireReproduction1 = aleatoire.Next(1, nombreEtreVivantReproduction); int choixAleatoireReproduction2 = aleatoire.Next(1, nombreEtreVivantReproduction); int choixAleatoireDivision = aleatoire.Next(1, nombreEtreVivantDivision); if (m_listEtreVivantReproduction[choixAleatoireReproduction1].GetType() == m_george.GetType() || m_listEtreVivantReproduction[choixAleatoireReproduction2].GetType() == m_george.GetType()) Console.WriteLine("George ne peut pas se reproduire"); else if(m_listEtreVivantReproduction[choixAleatoireReproduction1].GetType() == m_listEtreVivantReproduction[choixAleatoireReproduction2].GetType()) { EtreVivantReproduction evr = m_listEtreVivantReproduction[choixAleatoireReproduction1].Reproduction(m_listEtreVivantReproduction[choixAleatoireReproduction2]); Console.WriteLine(evr); m_listEtreVivantReproduction.Add(evr); } else { Console.WriteLine($"La reproduction entre {m_listEtreVivantReproduction[choixAleatoireReproduction1].Nom} , et, {m_listEtreVivantReproduction[choixAleatoireReproduction2].Nom}, a échoué"); } EtreVivantDivision evd = m_listEtreVivantDivision[choixAleatoireDivision].Division(); m_listEtreVivantDivision.Add(evd); Console.WriteLine(""); } ShowEtrevivant(m_listEtreVivantReproduction, m_listEtreVivantDivision); break; case 3: Console.WriteLine("Fin Programme, Merci"); break; default: Console.WriteLine("Mauvaise Saisie veulliez réitérer"); Console.WriteLine(); break; } } while (Choix != 3); }