private bool explode(Point direction, BomberMan man) { bool flag = true; if (Map.Tiles[direction].type == Tile.BLOCK_TYPE.Hard) { flag = false; } else { if (Map.Tiles[direction].type == Tile.BLOCK_TYPE.Soft) { man.IncreaseScore(50); flag = false; } man.IncreaseScore(man.Kill(BomberMen, Map.Tiles[direction])); if (Map.Tiles[direction].ContainsBomb) { ExplodeBomb(Map.Tiles[direction].WhoPlaced.Bombs[direction], Map.Tiles[direction].WhoPlaced); Map.Tiles[direction].WhoPlaced.Bombs.Remove(direction); Map.placedBombs.Remove(direction); } Map.DestroyItem(direction); Map.DestroyBlock(direction, Map.Tiles[direction].type); } return(flag); }
/// <summary> /// Explodes the bomb /// </summary> public void ExplodeBomb(Bomb bomb, BomberMan man) { Point left, right, up, down; bool LeftPass, RightPass, UpPass, DownPass; DownPass = LeftPass = RightPass = UpPass = true; left = right = up = down = bomb.Coordinates; for (int i = 1; i <= bomb.ExplodesionRadius; i++) { if (i == 1) { Map.Tiles[bomb.Coordinates].DestroyBlock(); man.Kill(BomberMen, Map.Tiles[bomb.Coordinates]); Map.Tiles[left].WhoPlaced.Bombs.Remove(bomb.Coordinates); Map.placedBombs.Remove(bomb.Coordinates); } if (LeftPass) { left = new Point(bomb.Coordinates.X - 50 * i, bomb.Coordinates.Y); LeftPass = explode(left, man); } if (RightPass) { right = new Point(bomb.Coordinates.X + 50 * i, bomb.Coordinates.Y); RightPass = explode(right, man); } if (UpPass) { up = new Point(bomb.Coordinates.X, bomb.Coordinates.Y + 50 * i); UpPass = explode(up, man); } if (DownPass) { down = new Point(bomb.Coordinates.X, bomb.Coordinates.Y - 50 * i); DownPass = explode(down, man); } } }