public GameEngine()
 {
     _gameRepository = new GameRepository();
     _gameState      = LoadGameStateFromDb();
     moveGenerator   = new MoveGenerator(_gameState);
     _gameChecker    = new GameChecker(_gameState);
 }
        public static async Task CheckPercentageLostGames_ReturnsDouble()
        {
            var games = await ChessAPI.GetMonthlyArchiveAsync("https://api.chess.com/pub/player/calculatedblunder/games/2018/08");

            var percentage = GameChecker.CheckPercentageLostGames(games, "calculatedblunder");

            Assert.IsTrue(percentage > 0);
        }
Esempio n. 3
0
 // todo delete member class
 public GameForm(Db connectionDb, Rule rule, IEnumerable <Team> members, GameHeader gameHeader)
 {
     InitializeComponent();
     _connectionDb = connectionDb;
     _gameHeader   = gameHeader;
     _rule         = rule;
     _connectionDb.ConnectionContext.Teams.Load();
     _teams.AddRange(members);
     Text         = GetFormText();
     _gameChecker = GameCheckerFactory.GetGameChecker(_rule);
     _gameFlow    = new GameFlow(_rule, _teams);
     InitThrow();
     AddGrids();
     UpdateGameState();
     LoadExistingGame();
 }
Esempio n. 4
0
        public void GetStatusFrom_Player2Wins_ReturnsPlayer2()
        {
            // arrange
            var checker = new GameChecker();
            var board   = new CrossesBoard();

            board.SetToken(GameToken.Player2, new BoardPosition(0, 0));
            board.SetToken(GameToken.Player2, new BoardPosition(0, 1));
            board.SetToken(GameToken.Player2, new BoardPosition(0, 2));

            // act
            var status = checker.GetStatusFrom(board);

            // assert
            Assert.That(status, Is.EqualTo(GameStatus.Player2Wins));
        }
Esempio n. 5
0
        public void GetStatusFrom_PartiallyFilledBoard_ReturnsOngoing()
        {
            // arrange
            var checker = new GameChecker();
            var board   = new CrossesBoard();

            board.SetToken(GameToken.Player1, new BoardPosition(0, 0));
            board.SetToken(GameToken.Player2, new BoardPosition(1, 2));
            board.SetToken(GameToken.Player1, new BoardPosition(2, 1));

            // act
            var status = checker.GetStatusFrom(board);

            // assert
            Assert.That(status, Is.EqualTo(GameStatus.Ongoing));
        }
Esempio n. 6
0
        public void GetStatusFrom_PlayerWinsDiagonal_ReturnsPlayer(int column1, int row1, int column2, int row2, int column3, int row3)
        {
            // arrange
            var checker = new GameChecker();
            var board   = new CrossesBoard();

            board.SetToken(GameToken.Player1, new BoardPosition(column1, row1));
            board.SetToken(GameToken.Player1, new BoardPosition(column2, row2));
            board.SetToken(GameToken.Player1, new BoardPosition(column3, row3));

            // act
            var status = checker.GetStatusFrom(board);

            // assert
            Assert.That(status, Is.EqualTo(GameStatus.Player1Wins));
        }
Esempio n. 7
0
        public void GetStatusFrom_PlayerWinsRow_ReturnsPlayer(int row)
        {
            // arrange
            var checker = new GameChecker();
            var board   = new CrossesBoard();

            board.SetToken(GameToken.Player1, new BoardPosition(0, row));
            board.SetToken(GameToken.Player1, new BoardPosition(1, row));
            board.SetToken(GameToken.Player1, new BoardPosition(2, row));

            // act
            var status = checker.GetStatusFrom(board);

            // assert
            Assert.That(status, Is.EqualTo(GameStatus.Player1Wins));
        }
Esempio n. 8
0
        public static void Launch(Game p, SDKApplication app)
        {
            GameChecker checker   = new GameChecker(p);
            string      filename  = string.Empty;
            string      arguments = string.Empty;

            if (!checker.IsValid())
            {
                MessageBoxes.Error(BuildFullErrorMessage(checker.LastErrorMessage));
                return;
            }

            //Select configuration
            switch (app)
            {
            case SDKApplication.Hammer:
                filename  = GetToolPath(p, app);
                arguments = "-nop4 ";
                break;

            case SDKApplication.HLMV:
                filename = GetToolPath(p, app);
                break;

            case SDKApplication.FacePoser:
                filename  = GetToolPath(p, app);
                arguments = "-nop4 ";
                break;
            }

            //Add gamedir to arguments
            arguments += string.Format("-game {0}{1}{0}", '"', p.GetGameinfoDirectory());

            //Create process
            Process proc = new Process();

            proc.StartInfo.WorkingDirectory = p.GetBinDirectory();
            proc.StartInfo.FileName         = filename;
            proc.StartInfo.Arguments        = arguments;
            //Start process
            proc.Start();
        }
Esempio n. 9
0
        private void okButton_Click(object sender, EventArgs e)
        {
            Enabled = false;

            DataManagers.GameManager.Objects = new List <Game>();
            Game        promptedGame = GetPromptedGame();
            GameChecker gameChecker  = new GameChecker(promptedGame);

            if (!gameChecker.IsValid())
            {
                MessageBoxes.Error(gameChecker.LastErrorMessage);

                Enabled = true;
                return;
            }

            PromptedGame = promptedGame;
            DialogResult = DialogResult.OK;
            Close();
        }
Esempio n. 10
0
        public void GetStatusFrom_FilledBoardNoWinner_ReturnsDraw()
        {
            // arrange
            var checker = new GameChecker();
            var board   = new CrossesBoard();

            board.SetToken(GameToken.Player1, new BoardPosition(0, 0));
            board.SetToken(GameToken.Player1, new BoardPosition(0, 1));
            board.SetToken(GameToken.Player1, new BoardPosition(1, 2));
            board.SetToken(GameToken.Player1, new BoardPosition(2, 0));
            board.SetToken(GameToken.Player1, new BoardPosition(2, 1));
            board.SetToken(GameToken.Player2, new BoardPosition(0, 2));
            board.SetToken(GameToken.Player2, new BoardPosition(1, 0));
            board.SetToken(GameToken.Player2, new BoardPosition(1, 1));
            board.SetToken(GameToken.Player2, new BoardPosition(2, 2));

            // act
            var status = checker.GetStatusFrom(board);

            // assert
            Assert.That(status, Is.EqualTo(GameStatus.Draw));
        }
Esempio n. 11
0
        private void saveButton_Click(object sender, EventArgs e)
        {
            Game newGame = new Game()
            {
                Name            = nameTextBox.Text,
                GameDir         = gameDirTextBox.Text,
                GameinfoDirName = gameInfoTextBox.Text
            };
            GameChecker checker = new GameChecker(newGame);

            if (!checker.IsValid())
            {
                string message = checker.LastErrorMessage + "\nWould you like to continue anyways?";

                if (MessageBoxes.Warning(message, MessageBoxButtons.YesNo) != DialogResult.Yes)
                {
                    return;
                }
            }

            Game         = newGame;
            DialogResult = DialogResult.OK;
            Close();
        }
Esempio n. 12
0
 // Use this for initialization
 public void Initialize()
 {
     instance = this;
 }
Esempio n. 13
0
        public char?[,] HardModeMove()
        {
            var hardMode = new HardModeLogic(GameState);

            return(GameChecker.IsItFirstMove(GameState) ? hardMode.FirstHardMove() : hardMode.OtherHardMoves());
        }
Esempio n. 14
0
 public string GetGameStatus()
 {
     return(_gameChecker.CheckForWin('X', _gameState) ? "Victory" :
            _gameChecker.CheckForWin('O', _gameState) ? "Defeat" :
            GameChecker.IsGameStillGoing(_gameState) ? "Still playing..." : "Draw");
 }