1 00:00:00,000 --> 00:00:06,044 다시 Winston을 그리는 프로그램으로 돌아왔습니다 하지만 이번에는 그림에 text 문자를 추가해 보았습니다 2 00:00:06,044 --> 00:00:12,592 Winston을 text 라벨 아래에 위치할 건데요 그 라벨은 인생의 각 단계를 표시하고 있어요 3 00:00:12,592 --> 00:00:15,197 하지만 지금 Winston은 엉망으로 놓여있죠 4 00:00:15,197 --> 00:00:20,449 왜냐하면 faceX와 faceY값을 함수 내부에서 임의의 값으로 설정하고 있기 때문입니다 5 00:00:20,449 --> 00:00:26,714 하지만 우리는 이런 것이 아닌 정확히 바로 이 장소에 Winston이 그려지기를 원하죠 6 00:00:26,714 --> 00:00:34,046 그리고 특히 저는 매번 함수가 불릴때마다 그 특정 위치를 지정하는 것을 원해요 7 00:00:34,046 --> 00:00:37,460 우리가 이전에 ellipse()와 rect()함수를 사용할 때 처럼요 8 00:00:37,460 --> 00:00:40,820 그러므로 저는 여기, 그리고 여기 다음은 여기, 그리고 여기에 Winston이 그려지기를 바랍니다 9 00:00:40,820 --> 00:00:46,963 그리고 더 이상 함수를 부를때마다 Winston이 무작위로 임의의 영역에 그려지지 않기를 원해요 10 00:00:46,963 --> 00:00:51,526 그러기 위해서는 그 함수에 파라미터를 지정해 주어야 합니다 11 00:00:51,526 --> 00:00:58,032 여기 맨 위에 함수 정의 부분에서도 그렇고요 12 00:00:58,032 --> 00:01:10,764 그러므로 drawWinston함수에 faceX와 faceY를 전달해서 이 값을 임의의 수를 생성하는 대신에 사용하기를 바랍니다 13 00:01:10,764 --> 00:01:15,207 지금부터 여기 함수를 부르는(call) 부분에서 어떻게 원하는 것을 함수로 전달할지 생각해보죠 14 00:01:15,207 --> 00:01:20,071 일단 Winston에 대해 설명하는 글자들의 바로 아래의 위치가 필요합니다 15 00:01:20,071 --> 00:01:25,131 아마 우리가 원하는 각 Winston 위치의 x, y값은 글자를 쓰기 위해 사용한 text함수에 전달한 값과 매우 비슷할 것입니다 16 00:01:25,131 --> 00:01:37,708 대충 y값에서 10 픽셀 정도 아래가 될겁니다 그러므로 맨 처음 위치는 10, 30이고 그 다음 위치는 200, 230이고 17 00:01:37,708 --> 00:01:49,596 10, 230... 200,230 이는 아마 text의 좌표와 같을 것이고 각각의 글자들보다 조금 아래에 위치 하므로 각 y좌표값에 10을 더했어요 18 00:01:49,596 --> 00:01:52,211 좋아요 하지만 Winston은 움직이지 않네요 19 00:01:52,211 --> 00:01:59,446 왜냐하면 위쪽의 함수 선언부에 이러한 파라미터를 넘겨준다고 이야기하지 않았기 때문에 여전히 임의의 수를 사용하고 있기 때문입니다 20 00:01:59,446 --> 00:02:04,373 그러므로 우리는 함수에게 이렇게 이야기해주어야 해요 "우리가 이러한 정보를 줄테니 이것을 대신 사용해봐" 21 00:02:04,373 --> 00:02:09,208 그리고 괄호들 안에 파라미터들의 이름을 건네주어야만 해요 22 00:02:09,208 --> 00:02:14,968 그것을 faceX와 faceY로 부르고 콤마(,)로 구분합니다 23 00:02:14,968 --> 00:02:25,462 이름을 그렇게 부른 이유는, 이미 함수안에서 그 이름을 사용하고 있기 때문에 다시 다른 이름으로 쓸 필요가 없기 때문이죠 24 00:02:25,462 --> 00:02:29,333 하지만 여전히 아무일도 일어나지 않고 Winston은 온갖 곳에 가 있어요 25 00:02:29,333 --> 00:02:35,873 아마 맨 위쪽에 함수부분을 보면 전달받은 faceX와 faceY를 여전히 임의의 수로 다시 설정하고 있는 것을 볼 수 있을거에요 26 00:02:35,873 --> 00:02:39,793 그러면 이 코드들을 모두 삭제해보도록 합시다 27 00:02:39,793 --> 00:02:50,333 그러면 함수가 우리가 전달한 faceX와 faceY를 이용하여 그림을 그리는 것을 볼 수있습니다 28 00:02:50,333 --> 00:02:58,787 하지만 Winston이 우리가 원하는 정확한 위치에 있지는 않아요 왜냐하면 문자는 화면에서 좌측 상단을 기준으로 위치가 정해지고 29 00:02:58,787 --> 00:03:06,773 그림은 중심으로 기준으로 하기 때문입니다 숫자들을 조금 손볼 필요가 있겠죠? 30 00:03:06,773 --> 00:03:13,238 아마 x축 방향으로 조금 더 옮겨야 할 거에요 조금 옮겨서 여기 'Toddler Winston'아래로 옮겨볼게요 31 00:03:13,238 --> 00:03:22,413 이런 과정을 통해서 함수에 넘겨줄 값을 바꿀 수 있어요 하지만 함수의 정의부분을 바꿀 필요가 전혀 없습니다 32 00:03:22,413 --> 00:03:28,868 왜냐면 함수는 언제나 우리가 전달해주는 값만 받기 때문이죠 마치 ellipse()나 rect() 처럼요 33 00:03:28,868 --> 00:03:33,708 좋아요 적당한 위치로 옮겼습니다 하지만 Winston의 얼굴이 너무 크다는 것을 알수있네요 34 00:03:33,708 --> 00:03:35,956 서로 겹치고 크기가 맞지 않아요 35 00:03:35,956 --> 00:03:45,497 우리는 함수에 그를 그리기 위한 코드를 넣어놨었고 타원을 그리는 한 줄을 수정해서 모든 얼굴들의 크기를 바꿀 수 있습니다 36 00:03:45,497 --> 00:03:51,126 그러면 190으로 값을 바꾸어서 Winston을 다이어트시켜줘 볼까요? 37 00:03:51,126 --> 00:04:01,654 아주 보기 좋네요. 조금 더 조정을 해서 저 안에 정말 넣을 수 있겠네요, 멋집니다 38 00:04:01,654 --> 00:04:09,341 마지막으로 작성한 코드에 대해서 리뷰(review)해봅시다 여기에 drawWinston() 함수를 정의하였고 39 00:04:09,341 --> 00:04:15,193 이 함수는 faceX와 faceY라는 두개의 값을 받습니다 40 00:04:15,193 --> 00:04:20,245 그리고 이 값들은 변수(variable)처럼 함수 안의 어디에서든 사용할 수 있습니다 41 00:04:20,245 --> 00:04:24,577 그러니까 이 변수들을 미리 위에서 선언(declare)했던것처럼 사용할 수 있다는 말이지요 42 00:04:24,577 --> 00:04:30,304 그리고 이 함수를 선언한 후 언제든지 부를 수 있습니다 43 00:04:30,304 --> 00:04:34,881 그리고 다른 값들을 전달할수도 있고요 그러면 그 새로운 값들을 사용할 겁니다 44 00:04:34,881 --> 00:04:41,230 지금까지 함수의 정말로 멋진점을 살펴보았습니다 우리는 정말로 재사용이 가능하다고 생각할 수 있는 코드를 제안할 수있으며 45 00:04:41,230 --> 00:04:46,910 또한 파라미터를 사용하는 것으로 이 코드에서 약간씩 바꾸어야 하는 부분은 이것을 사용해서 개인에 맞도록 수정(customize)하라고 할 수도 있어요 46 00:04:46,910 --> 00:04:53,342 이것은 마치 레시피(recipe)와 같습니다. 일반적인 명령어들을 작성해 놓았고 갑자기 Winston을 하나가 아닌 넷을 먹여야 하게 되었다면 47 00:04:53,342 --> 00:04:59,335 처음부터 다시 할 필요가 없이 원래의 명령어를 조금 수정하여 모든 것에 4를 곱해주면 되는 것이지요 48 00:04:59,335 --> 00:05:04,221 그러면 지금부터는 여러분의 코드의 레시피에 대해서 생각해보도록 해봅시다!