예제 #1
0
        /// <summary>
        /// Démarrer le combat entre les deux équipes :
        /// Choix des Pokémons actifs, choix de l'équipe qui attaque en premier,
        /// attribution des rôles de chaque équipe (équipe attaquante ou adverse), attribution des rôles de chaque Pokémon (attaquant ou adverse)
        /// </summary>
        /// <param name="attaquant"></param>
        /// <param name="adverse"></param>
        /// <param name="equipeAttaquante"></param>
        /// <param name="equipeAdverse"></param>
        public void DemarrerCombat(out Pokemon attaquant, out Pokemon adverse, out Equipe equipeAttaquante, out Equipe equipeAdverse)
        {
            Pokemon temp;

            //Affichage des caractéristiques des 2 équipes si l'équipe réelle fait partie du combat
            if (Equipe1 is EquipeReelle || Equipe2 is EquipeReelle)
            {
                if (Equipe1 is EquipeReelle)
                {
                    Console.WriteLine("Vous combattez contre l'équipe " + Equipe2.Numero + "\n");
                }
                else
                {
                    Console.WriteLine("Vous combattez contre l'équipe " + Equipe1.Numero + "\n");
                }
                Console.WriteLine(Equipe1);
                Console.WriteLine(Equipe2);
            }
            //Choix des Pokémons actifs pour chaque équipe (attribution de leur rôle de façon arbitraire pour l'instant)
            Equipe1.ChoisirActif(out attaquant);
            Equipe2.ChoisirActif(out adverse);
            //Choix de l'équipe qui attaque en premier
            TirerPremierJoueur(out equipeAttaquante, out equipeAdverse);
            //Attribution des bons rôles des Pokémons actif de chaque équipe
            if (Equipe1 == equipeAdverse)
            {
                temp      = adverse;
                adverse   = attaquant;
                attaquant = temp;
            }
        }
예제 #2
0
    /// <summary>
    /// Simule le match et donne directement le résultat final
    /// </summary>
    public void Simuler()
    {
        float n1    = Equipe1.NiveauMoyen(Poste.POURSUIVEUR);
        float n2    = Equipe2.NiveauMoyen(Poste.POURSUIVEUR);
        int   n1i   = (int)(n1 * 10);                              //Niveau moyen poursuiveur equipe 1
        int   n2i   = (int)(n2 * 10);                              //Niveau moyen poursuiveur equipe 2
        int   nV1   = (int)(Equipe1.NiveauMoyen(Poste.ATTRAPEUR)); //Niveau attrapeur equipe 1
        int   nV2   = (int)(Equipe2.NiveauMoyen(Poste.ATTRAPEUR)); //Niveau attrapeur equipe 2
        int   temps = 0;

        while (!_termine)
        {
            temps++;
            int rand = UnityEngine.Random.Range(0, n1i + n2i);
            if (rand < n1i) //Equipe 1
            {
                AjouterPossession1(60);
                if (Attaque(Equipe1))
                {
                    Score1 += 10;
                    Evenements.Add(new EvenementMatch(Equipe1, Buteur(Equipe1), temps, TypeEvenement.BUT));
                }
            }
            else
            {
                AjouterPossession2(60);
                if (Attaque(Equipe2))
                {
                    Score2 += 10;
                    Evenements.Add(new EvenementMatch(Equipe2, Buteur(Equipe2), temps, TypeEvenement.BUT));
                }
            }
            int randVif = UnityEngine.Random.Range(0, 4500);
            if (randVif < nV1)
            {
                _termine = true;
                _score1 += 150;
                _vif     = true;
                Evenements.Add(new EvenementMatch(Equipe1, Attrapeur(Equipe1), temps, TypeEvenement.VIF_ATTRAPE));
            }
            else if (randVif >= nV1 && randVif < nV2)
            {
                _termine = true;
                _score2 += 150;
                Evenements.Add(new EvenementMatch(Equipe2, Attrapeur(Equipe2), temps, TypeEvenement.VIF_ATTRAPE));
            }
        }
        Temps = Temps.AddMinutes(temps);
    }
예제 #3
0
    private bool Attaque(Club c)
    {
        bool res = false;
        int  niv = (int)(c.NiveauMoyen(Poste.POURSUIVEUR) * 100);
        int  nivGardien;

        if (c == Equipe1)
        {
            nivGardien = (int)(Equipe2.NiveauMoyen(Poste.GARDIEN) * 100);
        }
        else
        {
            nivGardien = (int)(Equipe1.NiveauMoyen(Poste.GARDIEN) * 100);
        }
        int rand = UnityEngine.Random.Range(0, niv + nivGardien);

        if (rand < niv)
        {
            res = true;
        }
        return(res);
    }