Design a program to simulate a balloon race. Starting at the starting line, the balloons rise in the air to a target altitude and then float towards the finish line. The distance a balloon travels in one timestep depends in part on the wind speed at that altitude, but is also partly random. The race concludes when the last balloon crosses the finish line. Your program should report the finishing times for all of the balloons.
Your program should be able to support balloons with different movement strategies.
Your program should randomly pick wind speeds for a variety of different altitude ranges, construct a number of balloons at the starting line, and start the race. All of the balloons race "concurrently." (Actually the race is broken down into time units, and each balloon moves in each time unit, one at a time.) Your program should graphically display the state of the race at the end of each time unit. When the race is over, your program should report the finishing times for all of the balloons.
Acknowledgements: This program specification was inspired by projects developed by Dave Reed (currently at Creighton University) and Owen Astrachan (Duke University).