Example #1
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;
		}
Example #2
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);
        }