/// <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; } }
/// <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); }
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); }