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