Exemplo n.º 1
0
        public void Run()
        {
            var returnCode = 2;

            while (returnCode == 2)
            {
                returnCode = _game.Start();

                //Code : on quite
                if (returnCode == 0)
                {
                    _game_repository.Delete();
                }

                //[1] Code : on quitte en sauvegardant

                //Code : lancement d'une nouvelle partie
                if (returnCode == 2)
                {
                    _displayer.Clear();
                    _displayer.Show("Lancement d'une nouvelle partie !");
                    _game_repository.Delete();
                    _game_model = _game_factory.Create(NUMBER_ROUND);
                    _game       = new TicTacToeGame(_reader, _displayer, _formatter, _player_factory, _round_factory, _game_model, _game_repository);
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Display entity at specified displayer 
 /// </summary>
 /// <param name="objectToDisplay">entity to be displayed</param>
 /// <param name="destination">destination displayer</param>
 internal void DisplayAt(IDisplayingEntity objectToDisplay, IDisplayer destination)
 {
     if (objectToDisplay == null) throw new ArgumentNullException("objectToDisplay");
     if (destination == null) throw new ArgumentNullException("destination");
     if (defaultProxy.Contains(destination))
     {
         defaultProxy.Select(destination);
     }
     else
     {
         defaultProxy.Add(destination);
     }
     destination.Show(objectToDisplay);
     
     objectToDisplay.OnInitCompletion(defaultProxy);
 }
Exemplo n.º 3
0
 /// <summary>
 /// Finds all divisor of a given number
 /// </summary>
 /// <param name="multiple">Multiple to find the divisors of</param>
 /// <param name="canRepeatNumbers">If can repeat numbers or not</param>
 private void CheckDivisor(int multiple, bool canRepeatNumbers)
 {
     foreach (var number in _divisorOptions)
     {
         if (multiple % number == 0)
         {
             var resultText   = $"{multiple} div {number}";
             var isDuplicated = _resultList.Contains(resultText);
             if ((isDuplicated && canRepeatNumbers) || !isDuplicated)
             {
                 _displayer.Show($"{multiple} div {number}");
             }
             if (!isDuplicated)
             {
                 _resultList.Add(resultText);
             }
         }
     }
 }
Exemplo n.º 4
0
        public List <State> Run()
        {
            List <State> states = new List <State>();

            for (int i = 0; i < Iteraties; i++)
            {
                if (Visualiseer)
                {
                    Display.Show(this);
                    Thread.Sleep(300);
                    //Console.ReadKey();
                }

                states.Add(new State
                {
                    AantalKlanten = Rijen.Sum(r => r.Count),
                    AVGRijlengte  = Rijen.Average(r => Convert.ToDouble(r.Count)),
                    Weggelopen    = Step(),
                    AantalKassas  = Rijen.Where(rij => rij.IsOpen).Count()
                });
            }

            return(states);
        }
Exemplo n.º 5
0
        public int Start()
        {
            if (_game.Player1 == null || _game.Player2 == null)
            {
                _Create_Players();
            }

            _displayer.Clear();

            //Lancement de la partie

            int t = 0;

            if (_game.Current != null)
            {
                t = Array.IndexOf(_game.Rounds, _game.Current);
            }

            //Si on est en mode mort subite on ne passe pas par là
            if (t != -1)
            {
                for (int i = t; i < _game.Rounds.Length; i++)
                {
                    //Si un des joueurs est dans une position ou le deuxième ne pourra remonter le score étant
                    //donné qu'il lui faudrait plus de tour qu'il n'y en a (ex : 3 - 0, comme il n'y a que 5 tours,
                    // le joueur 2 ne pourras dépasser le joueur1, le joueur1 a donc gagné même si le nombre de tour n'a pas été effectué)
                    if (_game.Player1.NumberWin > (_game.Rounds.Length / 2) || _game.Player2.NumberWin > (_game.Rounds.Length / 2))
                    {
                        break;
                    }

                    if (_game.Rounds [i] == null)
                    {
                        _game.Rounds [i] = _round_factory.Create();
                        _game.Current    = _game.Rounds [i];
                    }
                    _game_repository.Save(_game);

                    _displayer.Clear();

                    var round      = new TicTacToeRound(_reader, _displayer, _formatter, _game, _game_repository);
                    var returnCode = round.Start();

                    if (returnCode > 0)
                    {
                        return(returnCode);
                    }
                }

                //On créer le round pour la mort subite (dans le cas ou il y en aurait besoin)
                _game.Current = _round_factory.Create();
                _game_repository.Save(_game);
            }

            //Lancement du mode "mort subite" si match nul
            while (_game.Player1.NumberWin == _game.Player2.NumberWin)
            {
                _displayer.Clear();

                var round      = new TicTacToeRound(_reader, _displayer, _formatter, _game, _game_repository);
                var returnCode = round.Start();

                if (returnCode > 0)
                {
                    return(returnCode);
                }

                //Si match nul on recréer un round et on fait ça jusqu'au moment ou les joueurs seront départagés
                if (_game.Player1.NumberWin == _game.Player2.NumberWin)
                {
                    _game.Current = _round_factory.Create();
                    _game_repository.Save(_game);
                }
            }

            _displayer.Show("Fin de partie : ", ConsoleColor.Cyan, false);
            if (_game.Player1.NumberWin > _game.Player2.NumberWin)
            {
                _displayer.Show("Le joueur " + _game.Player1.Name + " a gagné la partie.");
            }
            else if (_game.Player2.NumberWin > _game.Player1.NumberWin)
            {
                _displayer.Show("Le joueur " + _game.Player2.Name + " a gagné la partie.");
            }
            else
            {
                _displayer.Show("Match nul !");
            }

            String userChoice = "";

            do
            {
                _displayer.Show("Voulez vous recommencer une partie ? [O/N]");
                userChoice = _reader.Read();

                if (userChoice != null && userChoice.ToLower() == "o")
                {
                    return(2);
                }
                else if (userChoice != null && userChoice.ToLower() == "n")
                {
                    return(0);
                }
            } while(userChoice == null || userChoice.ToLower() != "o" | userChoice.ToLower() != "n");

            return(0);
        }
Exemplo n.º 6
0
        public int Start()
        {
            _round.Current = _game.Player1;

            if (!_checker.HaveWinner() && !_checker.IsTied())
            {
                do
                {
                    _displayer.Clear();
                    _displayer.Show(GetMenu(), ConsoleColor.Blue);

                    _displayer.Show(_formatter.Format(_round.Board));

                    string index;
                    bool   validMove;
                    do
                    {
                        _displayer.Show("Joueur " + _round.Current.Name + " a vous de choisir une case :");
                        index = _reader.Read();
                        int n;
                        if (IsCommand(index) > 0)
                        {
                            return(IsCommand(index));
                        }
                        else if (int.TryParse(index, out n) == false || Convert.ToInt32(index) > _game.Current.Board.getNbCells() | Convert.ToInt32(index) < 1)
                        {
                            validMove = false;
                            _displayer.Show("La saisie " + index + " ne correspond pas à une case");
                        }
                        else
                        {
                            validMove = _round.Board.playTurn(Convert.ToInt32(index), _round.Current);
                            if (validMove == false)
                            {
                                _displayer.Show("Case " + index + " déjà utilisée");
                            }
                        }
                    } while(validMove != true);

                    _round.Current = (_round.Current == _game.Player1) ? _game.Player2 : _game.Player1;

                    _game_repository.Save(_game);
                } while(!_checker.HaveWinner() && !_checker.IsTied());
            }

            if (_checker.IsTied())
            {
                _displayer.Show("Match nul !", ConsoleColor.Yellow);
            }
            else
            {
                _checker.Winner.NumberWin++;
                _displayer.Show("Le gagnant du round est : " + _checker.Winner.Name, ConsoleColor.Green);
            }

            _displayer.Show(_formatter.Format(_round.Board));
            _displayer.Show("Appuyer sur une touche pour continuer...");
            _reader.Read();

            return(0);
        }