SwapPlayerSymbols() public méthode

public SwapPlayerSymbols ( ) : void
Résultat void
Exemple #1
0
        private void CreateIterationStateFile(String folderPath)
        {
            var replayFile =
                new StreamWriter(folderPath + System.IO.Path.DirectorySeparatorChar + Properties.Settings.Default.SettingReplayFolder + System.IO.Path.DirectorySeparatorChar + "iteration" +
                                 _iteration + Properties.Settings.Default.SettingStateFileExtension);
            var mazeForFile = new Maze(_maze);

            if (_secondMazePlayer == _currentPlayer.GetSymbol())
            {
                mazeForFile.SwapPlayerSymbols();
            }
            replayFile.Write(mazeForFile.ToFlatFormatString());
            replayFile.Close();
        }
Exemple #2
0
 private Player DeterminIfWinner(Enums.GameOutcome gameOutcome, Maze mazeFromPlayer, Player winner)
 {
     mazeFromPlayer.SwapPlayerSymbols();
     _maze = mazeFromPlayer;
     if (_maze.FindCoordinateOf(_secondMazePlayer).IsEmpty)
     {
         _maze.SetSymbol(Properties.Settings.Default.MazeCenterX, Properties.Settings.Default.MazeCenterY, _secondMazePlayer);
     }
     if (gameOutcome != Enums.GameOutcome.ProceedToNextRound)
     {
         winner = GameJudge.DetermineWinner(_playerPool, gameOutcome);
     }
     return(winner);
 }
Exemple #3
0
        private Maze CreateIterationStateFile(String folderPath)
        {
            var replayFile =
                new StreamWriter(Path.Combine(folderPath, Properties.Settings.Default.SettingReplayFolder, "iteration" +
                                              _iteration + Properties.Settings.Default.SettingStateFileExtension));
            var mazeForFile = new Maze(_maze);

            if ((_currentPlayer != null) && (_secondMazePlayer == _currentPlayer.GetSymbol()))
            {
                mazeForFile.SwapPlayerSymbols();
            }
            replayFile.Write(mazeForFile.ToFlatFormatString());
            replayFile.Close();
            return(mazeForFile);
        }
Exemple #4
0
 private Player DeterminIfWinner(Enums.GameOutcome gameOutcome, Maze mazeFromPlayer, Player winner)
 {
     mazeFromPlayer.SwapPlayerSymbols();
     _maze = mazeFromPlayer;
     if (gameOutcome != Enums.GameOutcome.ProceedToNextRound)
     {
         if (gameOutcome == Enums.GameOutcome.NoScoringMaxed)
         {
             winner = _playerPool.GetNextPlayer();
         }
         else
         {
             winner = GameJudge.DetermineWinner(_playerPool);
         }
     }
     return(winner);
 }
 private Player DeterminIfWinner(Enums.GameOutcome gameOutcome, Maze mazeFromPlayer, Player winner)
 {
     mazeFromPlayer.SwapPlayerSymbols();
     _maze = mazeFromPlayer;
     if (gameOutcome != Enums.GameOutcome.ProceedToNextRound)
     {
         if (gameOutcome == Enums.GameOutcome.NoScoringMaxed)
         {
             winner = _playerPool.GetNextPlayer();
         }
         else
         {
             winner = GameJudge.DetermineWinner(_playerPool);
         }
     }
     return winner;
 }
 private void CreateIterationStateFile(String folderPath)
 {
     var replayFile =
         new StreamWriter(folderPath + "\\" + Properties.Settings.Default.SettingReplayFolder + "\\iteration" +
                          _iteration + Properties.Settings.Default.SettingStateFileExtension);
     var mazeForFile = new Maze(_maze);
     if (_secondMazePlayer == _currentPlayer.GetSymbol())
         mazeForFile.SwapPlayerSymbols();
     replayFile.Write(mazeForFile.ToFlatFormatString());
     replayFile.Close();
 }
Exemple #7
0
        public GameResult Run(String folderPath)
        {
            var gamePlayDirectoryPath = Path.Combine(Environment.CurrentDirectory, folderPath);

            Directory.CreateDirectory(gamePlayDirectoryPath);
            var outputFilePath = Path.Combine(gamePlayDirectoryPath, Properties.Settings.Default.SettingGamePlayFile);

            _maze.WriteMaze(outputFilePath);
            Player winner      = null;
            var    gameOutcome = Enums.GameOutcome.ProceedToNextRound;

            Directory.CreateDirectory(folderPath);
            Directory.CreateDirectory(Path.Combine(folderPath, Properties.Settings.Default.SettingReplayFolder));
            var logFile = new StreamWriter(Path.Combine(folderPath, Properties.Settings.Default.SettingMatchLogFileName));

            CreateIterationStateFile(folderPath);
            logFile.WriteLine("[GAME] : Match started");
            _iteration++;
            while (gameOutcome == Enums.GameOutcome.ProceedToNextRound)
            {
                _currentPlayer = _playerPool.GetNextPlayer();
                var mazeFromPlayer = _currentPlayer.GetMove(_maze, Path.Combine(gamePlayDirectoryPath, Properties.Settings.Default.SettingGamePlayFile), logFile);
                if (mazeFromPlayer != null)
                {
                    var mazeValidationOutcome = GetMazeValidationOutcome(logFile, mazeFromPlayer);
                    if (mazeValidationOutcome == Enums.MazeValidationOutcome.ValidMaze)
                    {
                        var opponentPosition = _maze.FindCoordinateOf(Symbols.SYMBOL_PLAYER_B);
                        var previousPosition = _maze.FindCoordinateOf(Symbols.SYMBOL_PLAYER_A);
                        var currentPosition  = mazeFromPlayer.FindCoordinateOf(Symbols.SYMBOL_PLAYER_A);
                        var turnOutcome      = GetTurnOutcome(mazeFromPlayer, currentPosition, previousPosition, opponentPosition, logFile);
                        if (turnOutcome != Enums.TurnOutcome.MoveMadeAndDroppedPoisonPillIllegally)
                        {
                            RegenerateOpponentIfDead(opponentPosition, mazeFromPlayer);
                            gameOutcome = GetGameOutcome(mazeFromPlayer, logFile, gameOutcome, turnOutcome);
                            winner      = DetermineIfWinner(gameOutcome, winner);
                        }
                        else
                        {
                            gameOutcome = ProcessIllegalMove(logFile, gameOutcome, ref winner);
                        }
                    }
                    else
                    {
                        gameOutcome = ProcessIllegalMove(logFile, gameOutcome, ref winner);
                    }

                    _maze = mazeFromPlayer;
                    _maze.SwapPlayerSymbols();
                    _maze.WriteMaze(Path.Combine(gamePlayDirectoryPath, Properties.Settings.Default.SettingGamePlayFile));

                    Maze iterationFileMaze = CreateIterationStateFile(folderPath);
                    _iteration++;
                    foreach (var player in _playerPool.GetPlayers())
                    {
                        Console.Write(player.GetSymbol() + "," + player.GetPlayerName() + ": " + player.GetScore() + "  ");
                    }
                    Console.WriteLine();
                    iterationFileMaze.Print();
                }
                else
                {
                    gameOutcome = ProcessIllegalMove(logFile, gameOutcome, ref winner);
                }
            }

            CreateMatchInfo(gameOutcome, winner, logFile);
            logFile.Close();
            var replayMatchOutcome = new StreamWriter(Path.Combine(folderPath, "replay", "matchinfo.out"));

            CreateMatchInfo(gameOutcome, winner, replayMatchOutcome);
            replayMatchOutcome.Close();

            return(new GameResult
            {
                Players = _playerPool.GetPlayers(),
                Outcome = gameOutcome,
                Iterations = _iteration - 1,
                Folder = folderPath
            });
        }
 private Player DeterminIfWinner(Enums.GameOutcome gameOutcome, Maze mazeFromPlayer, Player winner)
 {
     mazeFromPlayer.SwapPlayerSymbols();
     _maze = mazeFromPlayer;
     if (_maze.FindCoordinateOf(_secondMazePlayer).IsEmpty)
     {
         _maze.SetSymbol(Properties.Settings.Default.MazeCenterX, Properties.Settings.Default.MazeCenterY, _secondMazePlayer);
     }
     if (gameOutcome != Enums.GameOutcome.ProceedToNextRound)
         winner = GameJudge.DetermineWinner(_playerPool, gameOutcome);
     return winner;
 }
 private Maze CreateIterationStateFile(String folderPath)
 {
     var replayFile =
         new StreamWriter(folderPath + System.IO.Path.DirectorySeparatorChar + Properties.Settings.Default.SettingReplayFolder + System.IO.Path.DirectorySeparatorChar + "iteration" +
                          _iteration + Properties.Settings.Default.SettingStateFileExtension);
     var mazeForFile = new Maze(_maze);
     if (((_currentPlayer == null) || (_secondMazePlayer == _currentPlayer.GetSymbol())) && (_iteration > 0))
         mazeForFile.SwapPlayerSymbols();
     replayFile.Write(mazeForFile.ToFlatFormatString());
     replayFile.Close();
     return mazeForFile;
 }