예제 #1
0
        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);
        }
예제 #2
0
        /// <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);
                }
            }
        }