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