-
We're back with Winston.
-
We now have both an x and a y variable for
-
Winston's position.
-
So we can move him sideways
-
Up and down, woo!
-
Very nice.
-
Now, let's reset these variables
-
with 200 and 200
-
and review how this program works.
-
So starting here, we've got an eyeSize variable.
-
It's being used to control the eye size,
-
because the eyes are all 40 pixels wide
-
and 40 pixels tall.
-
And then we have these x and y variables,
-
and those position the center of the face.
-
And you can see them used
-
in this ellipse command here
-
that draws the big yellow circle.
-
And then down here,
-
for the eyes,
-
the x and y are used again.
-
And here,
-
the eyes are positioned
-
relative to the center of the face.
-
So maybe this one is
-
fifty pixels
-
to the left of the center
-
and this one is a hundred pixels
-
to the right of the center.
-
OK. So pretty cool
-
and that's why we're able
-
to move Winston up and down
-
Now, I want to be able to control
-
more things about Winston's face
-
with variables
-
so I want to figure out
-
what else in the program
-
we can store as variables
-
to do that
-
I'm going to go through
-
each line of code
-
and look for what we call
-
hard-coded numbers
-
those are numbers that are
-
just literal numbers
-
not variables or dependant on variables
-
so lets start here
-
in the first ellipse call
-
we have 300 and 300
-
for the width and height
-
those are just literal numbers
-
so lets make a variable
-
for those instead
-
called faceSize
-
and have it store 300
-
now we'll just write faceSize,
-
faceSize
-
OK So keep going
-
and skip colours
-
now the ellipse commands are either --
-
they're all variables or
-
dependant on variables
-
so I'm going to leave them
-
like this for now
-
and then the mouth command
-
those are dependant on x and y
-
but these here
-
are just literal numbers
-
150 and 150
-
so we're going to say
-
mouthSize that's a good name
-
equals 150
-
we'll replace this with mouthSize
-
and mouthSize
-
alright so now
-
we have the sizes of the shapes
-
stored as variables at the top
-
that means that its really easy
-
for us to change the sizes
-
like this like
-
Wooo Winston's hungry
-
and then maybe like, you know,
-
Winston's got hungry and
-
then he eats lots of donuts
-
and then he gets super big
-
alright
-
but there is something
-
I don't like about the program right now
-
So if I make the face size really small
-
it starts to look funny
-
because the eyes and the mouth
-
are sticking out of the face
-
and at certain points it doesn't even
-
really look like they're connected
-
to that face
-
or its not really a face any more, is it?
-
So what I really want to happen
-
is that when I change faceSize
-
I want the eyes and the mouth --
-
I want their size to change along with it
-
so if I make faceSize be half the size
-
I want the mouth to be half the size too
-
so that means that
-
I want to calculate mouthSize and eyeSize
-
as fractions of faceSize
-
alright lets reset these variables
-
and I'll show you what I mean
-
Let's start with mouthSize
-
so right now
-
faceSize is 300 and mouthSize is 150
-
so if we think of about them
-
relative to each other
-
we'd say that faceSize is twice as big
-
as mouthSize
-
or that mouthSize is half the size
-
of faceSize
-
and we can write that in code like this
-
one half times faceSize
-
ok so this line of code says
-
that we take the value of faceSize
-
multiply it by a half
-
and store that in mouthSize
-
so that if we change this here
-
it would figure out what half of that was
-
and that would become mouthSize
-
Perfect! That's what we want
-
So now eyeSize
-
so faceSize is 300
-
and eyeSize is 40
-
so we need it to be
-
40 three hundreths of faceSize
-
which is really, well lets see
-
four over 30 which we can
-
simplify down to two over 15
-
so we're going to say
-
two over fifteen times faceSize
-
by the way
-
if you're new to fractions
-
and that math is tricky for you
-
you can learn more about fractions
-
on khanacademy
-
and come back here when you're
-
feeling ready
-
here, you just go there
-
ok
-
so lets try resizing the face again
-
Haha! Check it out
-
the mouth and the eyes resize
-
proportionally to the face
-
but you probably noticed
-
something is wrong
-
the eyes and the mouth
-
are still sticking out of the face
-
even though they are
-
much more appropriately sized
-
That is because we still have
-
some hard-coded numbers
-
in our ellipse commands
-
some numbers that should actually
-
be fractions of variables instead
-
here, I'll show you
-
So for the eye ellipse we have
-
x minus 50 for the x position
-
so this means it's always x minus 50
-
even if we make our faceSize
-
smaller than 50 pixels
-
and that definitely doesn't make sense
-
because that means that the left eye
-
is going to be
-
not even in the face anymore
-
so it should be x minus some fraction
-
the size of our face
-
and we can figure out the fraction
-
the same way
-
50 relative to the original 300
-
so 50 over 300, five over 30, one over six
-
so one over six times faceSize
-
and we see another 50 here
-
so we can do the same thing
-
the same expression
-
here we have 100 over 300
-
that's going to be
-
one third times faceSize
-
this one is 60
-
so that'll end up being
-
one fifth times faceSize
-
and here this is another 50
-
so its one sixth again
-
and then 40
-
that's what we figured out up here
-
two over 15
-
so two over 15 times faceSize
-
alright so lets try again
-
Oh, look at that!
-
Look at it. That's beautiful
-
so good
-
alright so let's review
-
We created this variable
-
that stored the size of the face
-
and it just stores a number
-
then we have these mouthSize
-
and eyeSize variables
-
and we calculate them based as fractions
-
of faceSize
-
to make sure that
-
their values always changed
-
based on what we start this one off as
-
then all of the offsets are calculated
-
based on faceSize too
-
to make sure the position
-
inside the face changes
-
if faceSize changes
-
Whoo! Alright.
-
So now that we really understand
-
how to make variables
-
dependant on the values of other variables
-
we can do so much more with our programmes
-
let's celebrate by making Winston
-
Huge! yeah, go Winston!