You could use an array to check how many shots has the tilemap received:
bullet on collision with tilemap ->
check if array(bullet.x,bullet.y) is less than 1 ->
If it is, add 1 to position (bullet.x,bullet.y) in the array
If it isn't, destroy tilemap at position (bullet.x,bullet.y)
The hardest thing to do would add the automapping, which is a set of user-defined rules that change the tilemap like the gif you posted.