Exemple #1
0
        private void AddBomb()
        {
            for (int i = 0; i < _owner.MaxBomb; i++)
            {
                Coordinate someCoordinate = _owner.GetCoordinateEmptyCell();    //ToDo: ??

                _owner.Add(new Bomb(_owner, someCoordinate));

                _bombCount++;
            }
        }
Exemple #2
0
        private GameField RestoreGameFieldFromGameData(ICurrentGameData currentGameData)
        {
            var settings = ContainerProvider.Resolve <ISettingsProvider>().GetSettingsInstance();

            var gameField = new GameField(settings.FieldWidth, settings.FieldHeight);

            foreach (var pair in currentGameData.GameField)
            {
                gameField.Add(BrickPosition.FromTuple(pair.Key), new Brick {
                    BrickKind = pair.Value
                });
            }

            return(gameField);
        }
        public bool GravitateGameField(GameField gameField)
        {
            var brickAffectedByGravity = false;

            var settings = ContainerProvider.Resolve <ISettingsProvider>().GetSettingsInstance();

            var indexOfLastButOneRow = settings.FieldHeight - 2;

            for (var i = 0; i < settings.FieldWidth; i++)
            {
                for (var j = indexOfLastButOneRow; j >= 0; j--)
                {
                    var brickPosition = new BrickPosition {
                        XCoordinate = i, YCoordinate = j
                    };

                    if (!gameField.TryGetValue(brickPosition, out var brick))
                    {
                        continue;
                    }

                    var           positionUnderBrick  = brickPosition.IncrementYCoordinate();
                    BrickPosition?targetBrickPosition = null;

                    while (positionUnderBrick.YCoordinate < settings.FieldHeight)
                    {
                        if (!gameField.ContainsKey(positionUnderBrick))
                        {
                            targetBrickPosition = positionUnderBrick;
                        }

                        positionUnderBrick = positionUnderBrick.IncrementYCoordinate();
                    }

                    if (!targetBrickPosition.HasValue)
                    {
                        continue;
                    }

                    gameField.Remove(brickPosition);
                    gameField.Add(targetBrickPosition.Value, brick);

                    brickAffectedByGravity = true;
                }
            }

            return(brickAffectedByGravity);
        }
        private GameField GenerateRandomField(int width, int height)
        {
            var gameField = new GameField(width, height);

            for (var x = 0; x < width; x++)
            {
                for (var y = 0; y < height; y++)
                {
                    var random = new Random();
                    if (random.NextDouble() >= 0.5)
                    {
                        gameField.Add(new BrickPosition {
                            XCoordinate = x, YCoordinate = y
                        }, new Brick());
                    }
                }
            }

            return(gameField);
        }