public EsecuzioneEsercizio(Esercizio esercizio)
 {
     if (esercizio == null)
     {
         throw new ArgumentException();
     }
     Esercizio = esercizio;
 }
 public EsecuzioneEsercizioATempo(Esercizio esercizio, int tempo) : base(esercizio)
 {
     if (tempo <= 0)
     {
         throw new ArgumentException();
     }
     _tempo = tempo;
 }
예제 #3
0
 public EsecuzioneEsercizioASerie(Esercizio esercizio, int tempoDiRecuperoInSec, int numeroRipetizioni, int numeroSerie) : base(esercizio)
 {
     if (esercizio == null || tempoDiRecuperoInSec <= 0 || numeroRipetizioni <= 0 || numeroSerie <= 0)
     {
         throw new ArgumentException();
     }
     TempoDiRecuperoInSec = tempoDiRecuperoInSec;
     NumeroRipetizioni    = numeroRipetizioni;
     NumeroSerie          = numeroSerie;
     _carico = 0;
 }
예제 #4
0
        protected bool verificaPresenzaEsercizio(Esercizio esercizio, GiornoAllenamento giorno)
        {
            bool verifica = false;

            foreach (EsecuzioneEsercizio corrente in giorno.ListaEsecuzioniEsercizi)
            {
                if (corrente.Esercizio.Equals(esercizio))
                {
                    verifica = true;
                }
            }
            return(verifica);
        }
예제 #5
0
        public override PianoAllenamento Configura(UtenteAutomatico utenteAutomatico, List <Esercizio> esercizi)
        {
            if (utenteAutomatico == null || esercizi == null || esercizi.Count == 0)
            {
                throw new ArgumentException();
            }
            PianoAllenamento schedaGenerata = schedaGenerata = new PianoAllenamento();
            Dictionary <int, List <FasciaMuscolare> > distribuzioneMuscoli = distribuisciFasceMuscolariPerGiorno(utenteAutomatico.NumeroGiorniAllenamento); //distribuzione muscoli da allenare in tutta la settimana


            for (int giorno = 0; giorno < distribuzioneMuscoli.Count; giorno++)                                                                                                                                     //per ogni giorno d'allenamento
            {
                int[]             eserciziPerMuscolo     = distribuisci(distribuzioneMuscoli.ElementAt(giorno).Value.Count, getNumeroEserciziPerNumeroGiorniAllenamento(utenteAutomatico.NumeroGiorniAllenamento)); //distribuzione numero esercizi per ogni muscolo da allenare nel giorno corrente
                GiornoAllenamento nuovoGiornoAllenamento = new GiornoAllenamento(TempiDiRecuperoInSec[new Random().Next(TempiDiRecuperoInSec.Length)]);
                IList <Esercizio> listaEserciziCardio    = getEserciziPerFascie(FasciaMuscolare.Cardio, utenteAutomatico.Risorse, esercizi);
                nuovoGiornoAllenamento.addEsecuzioneEsercizio(new EsecuzioneEsercizioATempo(listaEserciziCardio[new Random().Next(listaEserciziCardio.Count - 1)], TempiDiEsecuzioneInMinTonificazione[new Random().Next(TempiDiEsecuzioneInMinTonificazione.Length)])); //aggiungo staticamente due esercizi cardio, da notare il -2 quando chiamo "getNumeroEserciziPerNumeroGiorniAllenamento"
                for (int indiceMuscolo = 0; indiceMuscolo < eserciziPerMuscolo.Length; indiceMuscolo++)                                                                                                                                                                  //per ogni muscolo d'allenare del giorno d'allenamento corrente
                {
                    IList <Esercizio> listaPerMuscoloCorrente = getEserciziPerFascie(distribuzioneMuscoli[giorno].ElementAt(indiceMuscolo), utenteAutomatico.Risorse, esercizi);
                    int tentativiFalliti = 0;
                    for (int indiceEsercizio = 0; indiceEsercizio < eserciziPerMuscolo[indiceMuscolo]; indiceEsercizio++)//per ogni esercizio del muscolo corrente
                    {
                        Esercizio nuovoEsercizio = listaPerMuscoloCorrente[new Random().Next(listaPerMuscoloCorrente.Count - 1)];
                        if (tentativiFalliti <= NumeroMassimoTentativi)
                        {
                            if (!verificaPresenzaEsercizio(nuovoEsercizio, nuovoGiornoAllenamento)) // è scelto random, percio se è già presente ripete l'iterazione all'indice corrente
                            {
                                nuovoGiornoAllenamento.addEsecuzioneEsercizio(new EsecuzioneEsercizioASerie(nuovoEsercizio, TempiDiRecuperoInSec[new Random().Next(TempiDiRecuperoInSec.Length)], NumeriRipetizioniTonificazione[new Random().Next(NumeriRipetizioniTonificazione.Length)], NumeriSerieTonificazione[new Random().Next(NumeriSerieTonificazione.Length)]));
                                tentativiFalliti = 0;
                            }
                            else
                            {
                                indiceEsercizio--;
                                tentativiFalliti++;
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                schedaGenerata.addGiornoAllenamento(nuovoGiornoAllenamento);
            }


            return(schedaGenerata);
        }