-
Remember all those cool exciting projects we saw earlier in the first video?
-
They were all animated and exploding and colors changing and moving,
-
all sorts of stuff happening.
-
Everything that we've done in this set of tutorials up until now is static drawings
-
that don't move, that don't change.
-
But what we're going to do now is look at how we can animate things.
-
How can we make things change?
-
Well first of all, we should realize, like, what does it mean for a program to animate?
-
What we had before was stroke, fill, rectangle, stroke, fill, ellipse.
-
We execute all those lines of code and we get to the end and voila,
-
we have our perfect drawing.
-
Now we want to do something different.
-
A program that animates runs continuously over time.
-
It starts, it runs, and it reruns and it reruns and it reruns.
-
It has to continuously draw the circle, draw the circle, draw the circle.
-
So we need a framework, we need a structure, we need some way of doing this besides
-
just having our linear list of instructions.
-
The way we're gonna do that is by having two sections of code, two blocks of code.
-
One, we're going to call "setup."
-
Setup is all the code that happens once at the start.
-
All the code that goes in setup happens once at the start.
-
Then we're going to have another block, another section of code that's going to be called "draw."
-
The code that goes in draw loops continuously over and over again.
-
So we might, the program is going to run forever and ever.
-
It's going to do some things once, then it's going to run forever and ever.
-
You can think about programming a game.
-
If you were making a game, you might have some things at the beginning,
-
we would set the scoreboard to 0, we would set the player's name,
-
we would set the player's location to the beginning spot, and then,
-
after that beginning setup, after that initialization,
-
then the things move and they change and they check and the ball hit the puck
-
or whatever the game might be, they draw all the elements of the game continuously.
-
This is the structure we're going to use.
-
The question of course then is, how do we type this into our code?
-
Do we just type "setup" and put a line underneath it?
-
No, there's new syntax, new strange symbols that we have to write very precisely.
-
And it looks like this.
-
Void setup with parentheses with curly bracket open, end curly bracket.
-
By the way, the curly brackets might actually be a character you've
-
never had a chance to use before.
-
This is a time. It's shift something on your keyboard, so if you can't find it,
-
pause this video and find those curly brackets.
-
And the curly brackets are crucial because they mark the beginning and end of setup,
-
meaning any code that goes inside here is the code that's going to happen
-
in the beginning of the program.
-
Now, to write draw, we follow exactly this syntax again.
-
We say void, draw, () another start curly bracket and another close curly bracket.
-
So we're now writing two blocks of code.
-
We put code in setup that happens once at the beginning,
-
code in draw that loops over and over again.
-
You might also be asking yourself the question like,
-
"yeah, I kind of get why the curly bracket is there, the parentheses,
-
maybe I'm willing to understand that I have to have parentheses, but what is this 'void?'"
-
What does void mean?
-
At this point, I really just have to say that void is something you should just memorize,
-
it's part of the definition of setup and draw.
-
You have to say void draw, void setup.
-
The more important thing that we should be looking at together is,
-
we wrote all this code, stroke, fill, background, rect, ellipse, all these things.
-
Where do they go? Do they go in setup do they go in draw?
-
Well, here's the thing.
-
What goes in setup?
-
What is something that you might do at the beginning of your program?
-
There's a function that we haven't actually taught you yet.
-
It's a function that's secretly been happening but we didn't put it in yet.
-
Now it's time to actually put it in.
-
That function is called "size," and it's something that makes sense to go in setup.
-
Size (); takes two arguments, a width and a height.
-
500, 400.
-
This makes sense.
-
This is defining the size, in pixels, of your canvas.
-
The thing that you're drawing to is 500 pixels wide and 400 pixels high.
-
Now this makes sense.
-
When your program first starts, this is something that you would do at the beginning.
-
You would set up the size of your canvas.
-
We can look at what would we put in draw?
-
Well in draw, we might put all of our drawing code.
-
We would say, "hey, I want to draw the background.
-
And I'm gonna have a black background. And then I'm going to set a fill.
-
And then I'm going to set a stroke. And then I'm gonna draw a shape,
-
like ellipse, blah blah blah."
-
Now I'm making this messy here because this is anything your heart imagines.
-
Anything you want to draw.
-
Any colors, any shapes, all of your drawing code.
-
So what we're actually going to do right now is switch back over to the code editor,
-
and in the code editor, I'm gonna add void setup and void draw.
-
See how those are two separate functions now? Two separate blocks of code?
-
Now we're gonna put size in setup, there it is.
-
Notice how it's indented slightly.
-
This is the convention to have code inside a block of code have a slight indentation.
-
Now we're gonna put code in draw. I'm gonna put a background and
-
I'm gonna put a couple different shapes.
-
Ready?
-
It's a program, remember, that runs once at the beginning and loops over and over again.
-
So when we run it, something really exciting should happen, right?
-
OK, here we go, we're gonna run that code.
-
There it is.
-
Alright, yeah, I don't know how you feel,
-
I'm not even looking at it because there's no window, really,
-
I'm just in a video, but I know what it's doing, and it's static.
-
It's not changing.
-
So this might feel a little bit disappointing,
-
we spent all this time to add setup and draw, but our program isn't animating.
-
Why isn't it animating?
-
The reason why it's not animating is, well, inside of draw,
-
we're drawing the same shapes over and over again, so if we're always saying,
-
"Put a rectangle here, draw the background, put a rectangle here,
-
draw the background, put a rectangle over here,"
-
that rectangle's never going to move.
-
So now, we need a new concept.
-
We need to figure out, how can we vary the way the shapes are drawn each time
-
through this draw loop?
-
We might be drawing an ellipse.
-
And that ellipse might be at some x, some y, with some width and some height.
-
The values that we've been using are numbers like 250, 200.
-
And if the values are 250, 200, the ellipse is always at that location.
-
Always and forever.
-
Remember this thing, you know this thing that you've got on your computer,
-
it's called a mouse and you can move things around?
-
And you usually see, I'm gonna do a terrible job of drawing this,
-
this little mouse pointer on your screen?
-
Well, the mouse exists at some x and some y, right?
-
This is an x, y location where the mouse is.
-
What if I could say, draw the ellipse not at 250, but at the x location of the mouse,
-
wherever it might be, and the y location of the mouse, wherever it might be.
-
The fact is, we can do that! The way we do that is by writing a word.
-
The word is "mouse x mouse y."
-
Now this isn't magic. It's not just magic that this happens.
-
Processing knows, this computer programming environment
-
knows that when you write the word "mouse x,"
-
you mean, it stands in for the number that is currently the x value of the mouse.
-
We have now learned a really important fundamental thing in computer programming.
-
A fundamental concept. A variable.
-
Words that stand in for numbers.
-
A word that holds a value, this is a variable.
-
There's lots more to variables than this, but we've got to start here.
-
We now know that we can use the variables "mouse x" and "mouse y."
-
So I'm gonna bring the code editor back up,
-
and you're gonna see that there's an ellipse being drawn just at 250, 200.
-
There it is. It's looping, but it never changes.
-
Now I'm gonna replace that line of code with the ellipse at mouse x, mouse y,
-
and I'm gonna run it again.
-
OK? Take your mouse, move it over there, are you moving that circle?
-
We're drawing the circle over and over again, but every time we draw the circle,
-
we're drawing it at an updated location, wherever that mouse is.
-
This is the power of looping an animation loop with variation inside that loop.
-
If we can draw a circle at a different location,
-
if we can draw a circle with a different size, with a different color,
-
things can change, things can animate.
-
Just as an exercise, try swapping mouse x and mouse y,
-
so type mouse y where mouse x was, and mouse x where mouse y was.
-
Run the code yourself and see what happens.
-
Interesting, right?
-
This is a very important point.
-
One of the things that you can do is, these are just numbers.
-
Even though it makes sense intuitively to have mouse x for the x value of something,
-
you can also use mouse x for the value, the red value of a color.
-
You can use mouse y for the blue value of a color.
-
You could also say something, like you can do little mathematical operations.
-
Something you can always say are things like "mouse x plus 50"
-
which would draw your shape 50 pixels over from where the mouse was.
-
You could also do things like say "mouse x divided by 3,"
-
which would then take the value of mouse x, divide it by 3, and use that number.
-
So this is something you can really play with,
-
and in our example that I'm going to put below for you,
-
you'll see some examples of using the mouse values in
-
slightly more complicated mathematical operations.
-
OK, so we're done with this part of the tutorial,
-
but there's one little last piece I think that would be important to show you,
-
and it's something that's gonna go into the example that I'm gonna leave you with.
-
If you've noticed, right, we only ever had size in setup.
-
All of our drawing stuff goes in draw. That makes sense.
-
Look below, that example that's there right now, size is in setup, everything else is in draw.
-
Let's just try, just as an experiment, what happens if we take the line of code
-
called "background," and move it from draw to setup?
-
We're gonna move it there.
-
That means background is gonna be here, in setup.
-
That means background is only being drawn once at the beginning.
-
Never ever again.
-
What do you think's gonna happen when we run this code?
-
Try to guess.
-
And now we're gonna run it.
-
Move your mouse over.
-
Notice that the circle is leaving a trail.
-
It's because we've never erased the background.
-
So we're seeing every circle that's being drawn, and we're seeing every circle
-
that's being drawn in draw over and over and over and over again.
-
This is something that you can use, you can make this decision,
-
"do I want to draw the background always?
-
Or do I want to put the background just once in setup to create a painting program?"
-
So go forth, make your program animate, make things move,
-
make things change color if you can, and we're gonna add one more piece,
-
we're almost to the end of this tutorial series,
-
but we've got one more step we're gonna do in
-
learning the basics of programming in this tutorial.
-
OK, have fun, see you in a bit.