function implodeStep_(square, steps) {
  steps--;
  square.bombs--;
  drawSquare(square);
  if (steps) {
    // Keep imploding until all exiting bombs are removed.
    timeoutPID = setTimeout(implodeStep_.bind(null, square, steps), 100);
  } else {
    explodeInit_(square);
  }
}
// Detonation starts with removing the bombs that will fly away.
Detonation starts with removing the bombs that will fly away.
Detonation starts with removing the bombs that will fly away .
function implodeStep_(square, steps) {
  steps--;
  square.bombs--;
  drawSquare(square);
  if (steps) {
    timeoutPID = setTimeout(implodeStep_.bind(null, square, steps), 100);
  } else {
    explodeInit_(square);
  }
}
function implodeStep_ ( square , steps ) { steps -- ; square . bombs -- ; drawSquare ( square ) ; if ( steps ) { timeoutPID = setTimeout ( implodeStep_ . bind ( null , square , steps ) , 100 ) ; } else { explodeInit_ ( square ) ; } }
Detonation starts with removing the bombs that will fly away.
Detonation starts with removing the bombs that will fly away .
// Keep imploding until all exiting bombs are removed.