Loops Tell Phrogram to Do Something Over and Over Again
We know that myUFO starts at location (50, 50) on the screen, because that is where we told Phrogram to put it. To move it down the screen, we increase its y-axis location—to (50, 51), then (50, 52), then (50, 53), then (50, 54), and so on. It's up to us how far we want it to go, so let's decide that the UFO will stop when it gets to (50, 150).
Do you see the pattern there? The x value of the sprite's location is always 50 and the y value is going up one pixel at a time, from 51 to 150. Here is the Phrogram code that tells Phrogram to increase the value of the variable ufoY from 1 to 150, one step at a time:
For ufoY = 51 To 150 myUFO.MoveTo(50, ufoY) Next
This is your first loop. Loops are another important programming concept that may stretch your brain a bit, but once you understand them, loops are easy—and very powerful for making games and other kinds of programs.
Our loop starts with the value of ufoY = 51, and because we also said To 150, we know the loop will stop after it gets to the value of ufoY = 150. Notice the keyword Next, which defines the end of the loop. When Phrogram gets to the keyword Next, Phrogram knows that it is time to go back up to the "top" of the loop and increase the value of ufoY—from 51 to 52, or from 52 to 53, or from 53 to 54, and so on, all the way to 150. Basically, our For loop tells Phrogram to count from 51 to 150, and Phrogram uses the variable ufoY to keep track of this value as it counts.
And what do we want Phrogram to do while it is counting? We want it to move the UFO down the screen, right? That's what myUFO.MoveTo( 50, ufoY ) tells Phrogram to do. Because this instruction is "inside" the For loop, Phrogram performs this instruction each time it counts from 51 to 150. This is the real power of a loop! Just counting from 51 to 150 is not that interesting, but if the program is actually doing something useful each time it counts, all kinds of cool things can happen, including the movement of our UFO down the screen.
Let's recap what is happening:
For ufoY = 51 To 150 myUFO.MoveTo( 50, ufoY ) Next
We have already seen how MoveTo() works: Phrogram moves myUFO to the (x, y) location we give it. What's different this time? Before, we moved the UFO to (50, 50)—two specific numbers. What happens when we do this in the loop, and we instead use our variable ufoY? Remember that the first time through the loop, the value of ufoY = 51, and the second time ufoY = 52, then ufoY = 53, then ufoY = 54, and so on, all the way to ufoY = 150. So, the first time through the loop, Phrogram uses the value of ufoY = 51 to move the sprite so that the instruction Phrogram performs is effectively:
myUFO.MoveTo( 50, 51 )
And the next time through the loop, ufoY = 52, so Phrogram performs:
myUFO.MoveTo( 50, 52 )
And so on, like this, until Phrogram has used the loop to count all the way to 150:
myUFO.MoveTo( 50, 53 ) myUFO.MoveTo( 50, 54 ) myUFO.MoveTo( 50, 55 ) ... myUFO.MoveTo( 50, 150 )
Each time through the For loop, MoveTo is moving myUFO one pixel down the screen—just like we want it to! And because our loop is To 150, Phrogram will stop counting and looping after it reaches 150.
So now, we have studied variables and loops for the first time, and how useful it can be to perform instructions inside a loop—these are all very important programming concepts. Can you think of any real-world analogies that you use like a loop? Perhaps you know exactly how many steps there are from the first to the second floor in your house. Or perhaps you count the number of times you stir the ingredients in your favorite recipe.
If the idea of a loop is not clear enough yet, please go back to the beginning of this section and reread it. If after doing that something still isn't clear, remember that you can ask questions on the discussion forums of the Phrogram Web site.