
That might look something like this: // Call this at the start of your level. Instead, what you really want to do is call this function periodically, and each time check if it's time to spawn a new wave, rather than hold the CPU hostage until it's time.

So, don't put a wait loop inside your game loop.

i is still less than 3, so we're stil not allowing the CPU to move on yet! Back to step 3 we go, and burn another second doing nothing. We hit the end of the while loop and check the condition again. You've effectively stalled your game here.įinally, an eternity of wasted CPU time later, we've managed to burn a second of time and our inner if condition finally passes.
#GREENFOOT COLOR CODE UPDATE#
This is called a " busy-wait" or "spinning" - the processor is kept busy checking the clock then looping then re-checking the clock, so it's never allowed to exit this loop, return from this function, update the rest of your game state, process player input, or draw a frame. We keep doing this BILLIONS of times, because we do so little work inside the loop each time, nanoTime isn't much bigger each time we loop around. i is still less than 3, so we re-enter the loop and go back to step 3.

We hit the end of the while loop, and check the condition again. We check if the current time is 1 second later than begin time yet, but of course it isn't! We've barely executed two instructions since begin time. We check the while loop's condition, and i is indeed less than 3, so we enter the loop. Let's walk through this code, pretending that nanoTime = 0 at the start for simplicity.
