WARNING!!!!!!!!!!!!!!!!!!!!!! This project does not work on flash. None of the touching color blocks do. SWITCH TO JAVA NOW! Draw anything for the ball to bounce off of then press start. Press space to see the tracer ball and see how it works. If you want to know how this works, comment and I will tell you (I don't want to bother now because it would take a long time and no body would probably care). If the ball has to bounce too many times it will stop and continue when it has figured out where to bounce. If you make it have a really hard path, press 0 to stop the ball temporaraly and press it again later to make the ball start to bounce again with less pause. TornFusion asked me, so this is how it works: The tracer ball is the thing that does all of the work (show it by pressing space). What it does is it bounces around normally until it hits something black. When it does, it goes backwards until it isn't touching the thing that's black anymore and records the direction that it is pointing in as direction #1. Then it switches costumes so that it is a ball with something sticking out of it. It then turns until the spike is touching something black and then records the direction it is in as #2a. Then it rotates the other way until the spike is touching black again and records that direction as #2b. Then it finds halfway between direction #2a and direction #2b and records that as direction #2. Next it finds the difference between direction #1 and direction . Then it points in direction and rotates the difference that it just found. This makes it point in the correct direction. When it is not doing this, it is recording the location that it is in and the ball that you can see goes to those locations. Please comment if you don't understand this explanation, and tell what about it you don't understand.