Exemple #1
0
        /// <exception cref="ArgumentOutOfRangeException"/>
        /// <exception cref="ArgumentException"/>
        public void Gioca(Livello livello, params int[] numeri)
        {
            int[] a = { 70, 40, 20 };
            _numeriDaEstrarre = a[(int)livello];

            // creo ogni volta un nuovo array così viene inizializzato
            // con tutti false
            _numeriGiocati    = new bool[N + 1];
            ContatoreEstratti = 0;

            foreach (int n in numeri)
            {
                if (n < 1 || n > N)
                {
                    throw new ArgumentOutOfRangeException($"I numeri devono essere compresi tra 1 e {N}");
                }

                // se n è già stato giocato, nell'array _numeriGiocati
                // la cella di indice n contiene true

                if (_numeriGiocati[n])  // se ho già giocato il numero n
                {
                    throw new ArgumentException("I numeri da giocare devono essere diversi");
                }

                _numeriGiocati[n] = true;
            }

            OnGiocoIniziato();

            _gc.Reset();    // per ogni volta che si gioca
            NumeriEstratti.Clear();
            ContatoreIndovinati = 0;
            NumeriIndovinati.Clear();
        }
Exemple #2
0
        public int Estrai()
        {
            if (ContatoreEstratti >= _numeriDaEstrarre)
            {
                throw new InvalidOperationException("Estrazioni esaurite");
            }

            int estratto = _gc.Next();

            NumeriEstratti.Add(estratto);
            ContatoreEstratti++;

            OnEstratto();

            AggiornaSituazione(estratto);

            if (ContatoreEstratti == _numeriDaEstrarre)
            {
                OnGiocoTerminato();
            }

            return(estratto);
        }