예제 #1
0
        private GameDto makeTurn(TurnDto turnDto, Game game)
        {
            var gameState = getGameState(game);

            if (gameState[turnDto.X, turnDto.Y] != 0)
            {
                throw new CustomValidationException("Requested cell already contains value", string.Empty);
            }

            game.Game2Players.Add(new Game2Player
            {
                Date     = DateTime.Now,
                PlayerId = turnDto.PlayerId,
                X        = turnDto.X,
                Y        = turnDto.Y,
                GameId   = turnDto.GameId ?? 0
            });

            if (game.Id > 0)
            {
                game.IsFinished = _gameResultChecker.DoesGameFinished(getGameState(game));
                _database.Games.Update(game);
            }
            else
            {
                _database.Games.Create(game);
            }

            _database.Save();

            return(convertToDto(game));
        }
        public void TestDoGameNotFinished()
        {
            var checker = new GameResultChecker();

            var field = new sbyte[, ]
            {
                { 1, 0, 1 },
                { 0, 0, -1 },
                { 1, 0, -1 }
            };

            var result = checker.DoesGameFinished(field);

            Assert.IsFalse(result);
        }
        public void TestDoGameFinishedVerticalFinished()
        {
            var checker = new GameResultChecker();

            var field = new sbyte[, ]
            {
                { 1, -1, 1 },
                { 1, -1, -1 },
                { 1, -1, -1 }
            };

            var result = checker.DoesGameFinished(field);

            Assert.IsTrue(result);
        }