No not at all.
Here;s whats basically happeneing.
All games have a loop. A loop simply keeps on going and going. DO tells the loop where to begin, and LOOP tells it where to go back to the beginning.
The SYNC RATE is how many times the screen refreshes per second. So, without a DO/LOOP the screen will only refresh once. What you need to do is tell the system to keep refreshing as much as possible each second, we do that with a LOOP. Setting the SYNC RATE to 0 allows the computer to refresh as fast as possible, so its good to set it to 0.
Games usually only have 1 loop every, but with mini loops inside them.
Basically, whatever you want to be done all the time, put in a loop. Things like movement controls, variables that need to be updates, collision responses, etc.
But things you only want to happen once, put outside of the loop. Things like creating objects, loading media, and setting the game settings.
Hope that helps, goodluck.
<edit>, see the wait key command you have in there? That wont do anything because the loop keeps telling the program to loop. Put the waitkey in the program loop if you want it to wait for something. But just putting waitkey in the loop wont do anything, wait key basically stops everything from happening until any key is pressed, so you wouldn't want that in the program unless you need it.
Current Projects: SHADE - Game Maker | Mecho - TGC Puzzle Entry | Halo Physics Engine | COLD - Polygonal Collision Detection