示例#1
0
        public override EtreVivantReproduction Reproduction(EtreVivantReproduction p_etreVivant)
        {
            Random aleatoire  = new Random();
            int    SexeRandom = aleatoire.Next(0, 2);

            if (SexeRandom == 0) // Si masculin
            {
                int     NomRandom = aleatoire.Next(1, EtreVivant.nomEtreVivantMasculin.Length);
                String  nom       = EtreVivant.nomEtreVivantMasculin[NomRandom];
                Dauphin dauphinM  = new Dauphin(nom, 2, "male");
                return(dauphinM);
            }
            else //Sinon féminin
            {
                int     NomRandom = aleatoire.Next(1, EtreVivant.nomEtreVivantFeminin.Length);
                String  nom       = EtreVivant.nomEtreVivantFeminin[NomRandom];
                Dauphin dauphinF  = new Dauphin(nom, 2, "femelle");
                return(dauphinF);
            }
        }
示例#2
0
 public override EtreVivantReproduction Reproduction(EtreVivantReproduction p_etreVivant)
 {
     throw new NotImplementedException();
 }
示例#3
0
        /// <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);
        }
示例#4
0
 public abstract EtreVivantReproduction Reproduction(EtreVivantReproduction p_etreVivant);