This is my implementation of shadows and reflections.
I have added three additional features.

  1. the mouse gives out a light
  2. left-click to add a ball at this position
  3. right-click to add a light at this position
When balls and lights exceed maximum capacity (10)
, it will automatically delete the first added one.