-
다시 윈스턴을 그리는 프로그램으로
돌아왔습니다
-
이번에는 그림에 텍스트 문자를
추가해 보았습니다
-
윈스턴을 텍스트 라벨 아래에
위치시킬 건데요
-
그 라벨은 인생의
각 단계를 표시하고 있어요
-
하지만 지금 윈스턴은
엉망으로 놓여있죠
-
왜냐하면 faceX와 faceY값을
-
함수 내부에서 임의의 값으로
설정하고 있기 때문입니다
-
정확한 장소에
윈스턴을 그리고 싶어요
-
또한 매번 함수가 불릴때마다
특정 위치를 지정하고 싶어요
-
이전에 ellipse()와 rect()함수를
사용할 때 처럼요
-
저는 동그라미 친 곳들에
윈스턴을 그리려고 해요
-
무작위로 그려지는 것은 원치 않죠
-
그러기 위해서는 함수에 매개변수를
지정해 주어야 합니다
-
여기 맨 위에 함수의
정의 부분에서도 그렇고요
-
이 밑부분의 함수 호출에서도 말이죠
-
그러므로 drawWinston()함수에
faceX와 faceY를 전달해서
-
이 값을 임의의 수 대신에
사용하기를 바랍니다
-
함수 호출 부분에서 매개변수를 어떻게
함수로 전달할지부터 생각해보죠
-
텍스트 라벨 밑에 그리고 싶기 때문에
라벨 바로 아래의 위치가 필요합니다
-
아마 우리가 원하는 각 윈스턴의
위치의 x, y값은
-
text 함수에 전달한 값과
매우 비슷할 것입니다
-
대충 y 값에서 10 픽셀 정도
아래가 될 겁니다
-
그러므로 맨 처음 위치는 (10, 30)이고
-
그다음 위치는 (200, 30)이고
-
그다음은 (10, 230)과 (200,230)이겠죠
-
텍스트의 x좌표는 같고
y좌표는 10씩 늘어났죠
-
조금 밑에 그리기 위해서요
-
좋아요 하지만 윈스턴은
움직이지 않네요
-
왜냐하면 위쪽의 함수 선언부에
이러한 매개변수를 넘겨준다고
-
이야기하지 않았기 때문에 여전히
임의의 수를 사용하고 있기 때문입니다
-
그러므로 우리는 함수에게
-
정보를 제공할 테니
대신 사용해보라고 해야 합니다
-
그리고 괄호들 안에 매개변수들의
이름을 건네주어야만 해요
-
그것을 faceX와 faceY로 부르고
콤마로 구분합니다
-
이름을 그렇게 한 이유는, 이미 함수
안에서 그 이름을 사용하고 있기 때문에
-
다시 다른 이름으로 바꿔쓸 필요가
없기 때문이죠
-
여전히 아무 일도 일어나지 않고
윈스턴은 무작위 한 위치에 있어요
-
함수 부분의 맨 위쪽을 보면
전달받은 faceX와 faceY를
-
여전히 임의의 수로 다시 덮어쓰고
있는 것을 볼 수 있을 거예요
-
그러면 이 코드들을 모두
삭제해보도록 합시다
-
그러면 함수가 우리가 전달한
faceX와 faceY를 이용하여
-
그림을 그리는 것을 볼 수있습니다
-
하지만 윈스턴이 우리가 원하는
정확한 위치에 있지는 않아요
-
왜냐하면 문자는 화면에서 좌측 상단을
기준으로 위치가 정해지고
-
그림은 중심을
기준으로 하기 때문입니다
-
숫자들을 조금 손볼 필요가 있겠죠?
-
x 와 y를 조금 바꿔서
-
Toddler Winston 아래로 옮겨볼게요
-
이런 과정을 통해서 함수에
넘겨줄 값을 바꿀 수 있어요
-
하지만 함수의 정의 부분을
바꿀 필요가 전혀 없습니다
-
왜냐면 함수는 언제나 우리가
전달해주는 값만 받기 때문이죠
-
마치 ellipse()나 rect()처럼요
-
좋아요 적당한 위치로 옮겼습니다
-
하지만 윈스턴이 너무 크네요
-
서로 겹치고 크기가 맞지 않아요
-
함수에 그를 그리기 위한 코드를
넣어놨었기 때문에
-
타원을 그리는 한 줄을 수정해서
모든 얼굴들의 크기를 바꿀 수 있습니다
-
그러면 190으로 값을 바꾸어서
윈스턴을 감량시켜줘 볼까요?
-
아주 보기 좋네요
-
조금 더 조정을 해서 이 안에
넣을 수 있겠네요, 멋집니다
-
마지막으로 작성한
코드에 대해서 복습 해봅시다
-
여기에 drawWinston() 함수를
정의하였고
-
이 함수는 faceX와 faceY라는
두개의 값을 받습니다
-
그리고 이 값들은 변수처럼
함수 안의 어디에서든 사용할 수 있습니다
-
마치 이 변수들을 미리 위에서 선언했던
것처럼 사용할 수 있다는 말이지요
-
그리고 이 함수를 선언한 후
언제든지 부를 수 있습니다
-
그리고 다른 값들을 전달할수도 있고요
-
그러면 그 새로운 값들을
사용할 겁니다
-
지금까지 함수의 유용함을
살펴보았습니다
-
재사용이 가능하다고 생각되는 코드를
함수를 이용해 재사용 할 수 있으며
-
또한 매개변수를 사용하는 것으로
이 코드에서 약간씩 바꾸어야 하는 부분은
-
개인에 맞도록 수정할 수도 있어요
-
이것은 마치 레시피와 같습니다
일반적인 명령어들을 작성해 놓았고
-
갑자기 윈스턴 하나가 아닌
넷을 먹여야 한다면
-
처음부터 다시 할 필요가 없이
-
명령어를 조금 수정하여
4번 해주면 되는 것이지요
-
지금부터는 여러분의 코드의 레시피에
대해서 생각해보도록 합시다!