private void AddBomb() { for (int i = 0; i < _owner.MaxBomb; i++) { Coordinate someCoordinate = _owner.GetCoordinateEmptyCell(); //ToDo: ?? _owner.Add(new Bomb(_owner, someCoordinate)); _bombCount++; } }
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); }