0:00:00.000,0:00:06.044 다시 Winston을 그리는 프로그램으로 돌아왔습니다[br]하지만 이번에는 그림에 text 문자를 추가해 보았습니다 0:00:06.044,0:00:12.592 Winston을 text 라벨 아래에 위치할 건데요[br]그 라벨은 인생의 각 단계를 표시하고 있어요 0:00:12.592,0:00:15.197 하지만 지금 Winston은 엉망으로 놓여있죠 0:00:15.197,0:00:20.449 왜냐하면 faceX와 faceY값을 [br]함수 내부에서 임의의 값으로 설정하고 있기 때문입니다 0:00:20.449,0:00:26.714 하지만 우리는 이런 것이 아닌 [br]정확히 바로 이 장소에 Winston이 그려지기를 원하죠 0:00:26.714,0:00:34.046 그리고 특히 저는 매번 함수가 불릴때마다 [br]그 특정 위치를 지정하는 것을 원해요 0:00:34.046,0:00:37.460 우리가 이전에 ellipse()와 rect()함수를 사용할 때 처럼요 0:00:37.460,0:00:40.820 그러므로 저는 여기, 그리고 여기[br]다음은 여기, 그리고 여기에 Winston이 그려지기를 바랍니다 0:00:40.820,0:00:46.963 그리고 더 이상 함수를 부를때마다 Winston이[br]무작위로 임의의 영역에 그려지지 않기를 원해요 0:00:46.963,0:00:51.526 그러기 위해서는 그 함수에 파라미터를 지정해 주어야 합니다 0:00:51.526,0:00:58.032 여기 맨 위에 함수 정의 부분에서도 그렇고요 0:00:58.032,0:01:10.764 그러므로 drawWinston함수에 faceX와 faceY를 전달해서 [br]이 값을 임의의 수를 생성하는 대신에 사용하기를 바랍니다 0:01:10.764,0:01:15.207 지금부터 여기 함수를 부르는(call) 부분에서[br]어떻게 원하는 것을 함수로 전달할지 생각해보죠 0:01:15.207,0:01:20.071 일단 Winston에 대해 설명하는 글자들의 바로 아래의 위치가 필요합니다 0:01:20.071,0:01:25.131 아마 우리가 원하는 각 Winston 위치의 x, y값은[br]글자를 쓰기 위해 사용한 text함수에 전달한 값과 매우 비슷할 것입니다 0:01:25.131,0:01:37.708 대충 y값에서 10 픽셀 정도 아래가 될겁니다[br]그러므로 맨 처음 위치는 10, 30이고 그 다음 위치는 200, 230이고 0:01:37.708,0:01:49.596 10, 230... 200,230 이는 아마 text의 좌표와 같을 것이고[br]각각의 글자들보다 조금 아래에 위치 하므로 각 y좌표값에 10을 더했어요 0:01:49.596,0:01:52.211 좋아요 하지만 Winston은 움직이지 않네요 0:01:52.211,0:01:59.446 왜냐하면 위쪽의 함수 선언부에 이러한 파라미터를 넘겨준다고[br]이야기하지 않았기 때문에 여전히 임의의 수를 사용하고 있기 때문입니다 0:01:59.446,0:02:04.373 그러므로 우리는 함수에게 이렇게 이야기해주어야 해요[br]"우리가 이러한 정보를 줄테니 이것을 대신 사용해봐" 0:02:04.373,0:02:09.208 그리고 괄호들 안에 파라미터들의 이름을 건네주어야만 해요 0:02:09.208,0:02:14.968 그것을 faceX와 faceY로 부르고 콤마(,)로 구분합니다 0:02:14.968,0:02:25.462 이름을 그렇게 부른 이유는, 이미 함수안에서 그 이름을 [br]사용하고 있기 때문에 다시 다른 이름으로 쓸 필요가 없기 때문이죠 0:02:25.462,0:02:29.333 하지만 여전히 아무일도 일어나지 않고 Winston은 온갖 곳에 가 있어요 0:02:29.333,0:02:35.873 아마 맨 위쪽에 함수부분을 보면 전달받은 faceX와 faceY를 [br]여전히 임의의 수로 다시 설정하고 있는 것을 볼 수 있을거에요 0:02:35.873,0:02:39.793 그러면 이 코드들을 모두 삭제해보도록 합시다 0:02:39.793,0:02:50.333 그러면 함수가 우리가 전달한 faceX와 faceY를 이용하여[br]그림을 그리는 것을 볼 수있습니다 0:02:50.333,0:02:58.787 하지만 Winston이 우리가 원하는 정확한 위치에 있지는 않아요[br]왜냐하면 문자는 화면에서 좌측 상단을 기준으로 위치가 정해지고 0:02:58.787,0:03:06.773 그림은 중심으로 기준으로 하기 때문입니다[br]숫자들을 조금 손볼 필요가 있겠죠? 0:03:06.773,0:03:13.238 아마 x축 방향으로 조금 더 옮겨야 할 거에요[br]조금 옮겨서 여기 'Toddler Winston'아래로 옮겨볼게요 0:03:13.238,0:03:22.413 이런 과정을 통해서 함수에 넘겨줄 값을 바꿀 수 있어요[br]하지만 함수의 정의부분을 바꿀 필요가 전혀 없습니다 0:03:22.413,0:03:28.868 왜냐면 함수는 언제나 우리가 전달해주는 값만 받기 때문이죠[br]마치 ellipse()나 rect() 처럼요 0:03:28.868,0:03:33.708 좋아요 적당한 위치로 옮겼습니다[br]하지만 Winston의 얼굴이 너무 크다는 것을 알수있네요 0:03:33.708,0:03:35.956 서로 겹치고 크기가 맞지 않아요 0:03:35.956,0:03:45.497 우리는 함수에 그를 그리기 위한 코드를 넣어놨었고[br]타원을 그리는 한 줄을 수정해서 모든 얼굴들의 크기를 바꿀 수 있습니다 0:03:45.497,0:03:51.126 그러면 190으로 값을 바꾸어서 Winston을 다이어트시켜줘 볼까요? 0:03:51.126,0:04:01.654 아주 보기 좋네요. 조금 더 조정을 해서 저 안에 [br]정말 넣을 수 있겠네요, 멋집니다 0:04:01.654,0:04:09.341 마지막으로 작성한 코드에 대해서 리뷰(review)해봅시다[br]여기에 drawWinston() 함수를 정의하였고 0:04:09.341,0:04:15.193 이 함수는 faceX와 faceY라는 두개의 값을 받습니다 0:04:15.193,0:04:20.245 그리고 이 값들은 변수(variable)처럼 [br]함수 안의 어디에서든 사용할 수 있습니다 0:04:20.245,0:04:24.577 그러니까 이 변수들을 미리 위에서 [br]선언(declare)했던것처럼 사용할 수 있다는 말이지요 0:04:24.577,0:04:30.304 그리고 이 함수를 선언한 후 언제든지 부를 수 있습니다 0:04:30.304,0:04:34.881 그리고 다른 값들을 전달할수도 있고요[br]그러면 그 새로운 값들을 사용할 겁니다 0:04:34.881,0:04:41.230 지금까지 함수의 정말로 멋진점을 살펴보았습니다[br]우리는 정말로 재사용이 가능하다고 생각할 수 있는 코드를 제안할 수있으며 0:04:41.230,0:04:46.910 또한 파라미터를 사용하는 것으로 이 코드에서 약간씩 바꾸어야 하는 부분은[br]이것을 사용해서 개인에 맞도록 수정(customize)하라고 할 수도 있어요 0:04:46.910,0:04:53.342 이것은 마치 레시피(recipe)와 같습니다. 일반적인 명령어들을 작성해 놓았고[br]갑자기 Winston을 하나가 아닌 넷을 먹여야 하게 되었다면 [br] 0:04:53.342,0:04:59.335 처음부터 다시 할 필요가 없이 원래의 명령어를 [br]조금 수정하여 모든 것에 4를 곱해주면 되는 것이지요 0:04:59.335,0:05:04.221 그러면 지금부터는 여러분의 코드의 레시피에 대해서 생각해보도록 해봅시다!