Exemplo n.º 1
0
        public async Task <ActionResult> CreateGameMap(GameMapDto gameMap)
        {
            var gameMapEntity = _mapper.Map <GameMap>(gameMap);
            var lines         = gameMap.Map.Length;
            var columns       = gameMap.Map[0].Length;

            gameMapEntity.IsActive    = true;
            gameMapEntity.CreatedTime = DateTime.Now;
            gameMapEntity.Height      = lines;
            gameMapEntity.Width       = columns;
            var noObstacles = 0;

            for (var i = 0; i < lines; i++)
            {
                for (var j = 0; j < columns; ++j)
                {
                    if (gameMap.Map[i][j] == 1)
                    {
                        noObstacles++;
                    }
                }
            }

            gameMapEntity.NoObstacles = noObstacles;

            var newGameMap = await _gameMapRepository.Add(gameMapEntity);

            if (newGameMap == null)
            {
                return(BadRequest("Unable to insert game map"));
            }
            return(CreatedAtRoute("GetMap", new { gameMapId = newGameMap.GameMapId }, newGameMap));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> UpdateGameMap(int gameMapId, [FromBody] GameMapDto gameMap)
        {
            var dbGameMap = _mapper.Map <GameMap>(gameMap);
            var updated   = await _gameMapRepository.UpdateAsync(dbGameMap, gameMapId);

            if (updated == null)
            {
                return(NotFound());
            }

            return(CreatedAtRoute("GetMap", new { gameMapId = updated.GameMapId }, updated));
        }
Exemplo n.º 3
0
        public async Task <ActionResult> GenerateGameMap(int lines, int columns, int obstacles)
        {
            if (obstacles > lines * columns)
            {
                return(BadRequest("Unable to generate game map, too many obstacles"));
            }
            if (lines <= 0 || columns <= 0)
            {
                return(BadRequest("Unable to generate game map, lines and columns must be > 0"));
            }

            var gameMap = new GameMapDto
            {
                Map         = new int[lines][],
                NoObstacles = obstacles,
                Height      = lines,
                Width       = columns
            };

            for (var i = 0; i < lines; ++i)
            {
                gameMap.Map[i] = new int[columns];
            }

            var generatedObstacles = 0;

            while (generatedObstacles < obstacles)
            {
                var random = new Random();
                var x      = random.Next(lines);
                var y      = random.Next(columns);
                if (gameMap.Map[x][y] == 1)
                {
                    continue;
                }
                gameMap.Map[x][y] = 1;
                ++generatedObstacles;
            }
            var gameMapEntity = _mapper.Map <GameMap>(gameMap);

            gameMapEntity.IsActive    = true;
            gameMapEntity.CreatedTime = DateTime.Now;

            var newGameMap = await _gameMapRepository.Add(gameMapEntity);

            if (newGameMap == null)
            {
                return(BadRequest("Unable to generate game map"));
            }
            return(CreatedAtRoute("GetMap", new { gameMapId = newGameMap.GameMapId }, newGameMap));
        }