WEBVTT 00:00:00.877 --> 00:00:06.001 Ta sẽ quay lại chương trình vẽ Winston, nhưng tôi đã thêm một số chữ vào đó. 00:00:06.001 --> 00:00:11.072 Hãy xem, những gì ta muốn làm là đặt Winston bên dưới các nhãn này, 00:00:11.072 --> 00:00:13.210 để thể hiện anh ấy ở mỗi thời điểm trong đời. 00:00:13.210 --> 00:00:16.437 Lúc này anh ấy ở khắp mọi nơi. Đó là bởi ta đang gán 00:00:16.437 --> 00:00:20.449 faceX và faceY cho các giá trị ngẫu nhiên bên trong hàm. 00:00:20.449 --> 00:00:26.714 Ta muốn rằng "Đây là vị trí chính xác tôi muốn vẽ Winston" 00:00:26.714 --> 00:00:30.316 Tôi muốn có thể chỉ định vị trí đó mỗi khi gọi hàm, 00:00:30.316 --> 00:00:32.648 giống như cách ta làm với ellipse() và rect(). 00:00:34.048 --> 00:00:40.460 Tôi muốn đặt Winston ở đây, đây và Winston ở đây, và Winston ở đây nữa, 00:00:40.460 --> 00:00:43.623 và tôi không muốn chỉ là những vị trí ngẫu nhiên mỗi khi gọi hàm. 00:00:43.623 --> 00:00:48.882 Để làm điều đó, ta phải chỉ định "tham số" cho hàm, 00:00:48.882 --> 00:00:52.811 cả trong định nghĩa hàm - ở trên cùng ở đây - 00:00:52.811 --> 00:00:57.302 và trong lời gọi hàm, ở đây, khi ta thực sự gọi nó. 00:00:57.302 --> 00:01:02.210 Đối với drawWinston(), ta truyền vào faceX và faceY, 00:01:02.210 --> 00:01:09.058 và sử dụng những giá trị mà ta truyền vào thay vì tạo ra chúng một cách ngẫu nhiên. 00:01:09.058 --> 00:01:14.657 Hãy suy nghĩ về những gì ta sẽ truyền vào các hàm gọi ở đưới đây. 00:01:14.657 --> 00:01:20.071 Ta đặt Winstons dưới mỗi chữ, vì vậy ta có thể muốn x và y của mỗi 00:01:20.071 --> 00:01:24.491 Winston tương ứng với các giá trị ta đã truyền vào các hàm text(). 00:01:24.491 --> 00:01:32.166 Có thể, nhỏ hơn 10 pixel với y. Cái đầu tiên sẽ là 10 và 30, 00:01:32.166 --> 00:01:40.891 và sau đó có thể 200, 230 ... 10, 230 ... 200, 230. 00:01:40.891 --> 00:01:44.863 Nó giống như tọa độ của chữ, tôi chỉ cần +10 cho mỗi y, ' 00:01:44.863 --> 00:01:47.405 bởi tôi muốn nó thấp hơn một chút thôi. 00:01:49.985 --> 00:01:55.301 Winston không di chuyển. Ta đã không cho hàm ở đây biết rằng 00:01:55.301 --> 00:01:59.177 ta đang truyền tham số cho nó, vì vậy nó vẫn sử dụng các giá trị ngẫu nhiên này. 00:01:59.177 --> 00:02:03.603 Để nói với hàm này, "Thay vào đó anh sẽ cung cấp cho chú thông tin này". 00:02:03.603 --> 00:02:08.398 ta cần đặt tên tham số bên trong dấu ngoặc đơn. 00:02:08.398 --> 00:02:14.106 Ta sẽ gọi nó là faceX và faceY, phân tách chúng bằng dấu phẩy, 00:02:14.106 --> 00:02:20.704 Ta gọi như vậy là vì ta đang sử dụng nó để tham chiếu trong hàm. 00:02:20.704 --> 00:02:23.472 Bằng cách đó, ta không phải viết lại phần còn lại của code. 00:02:23.472 --> 00:02:28.813 Nhưng vẫn không có gì xảy ra; Winston vẫn còn ở khắp mọi nơi. 00:02:28.813 --> 00:02:31.353 Nếu nhìn vào phần đầu của hàm, 00:02:31.353 --> 00:02:35.263 ta vẫn ghi đè faceX và faceY với các giá trị ngẫu nhiên. 00:02:35.263 --> 00:02:38.793 Vì vậy, tất cả những gì ta phải làm là xóa những dòng này đi. 00:02:38.793 --> 00:02:45.457 Bây giờ, faceX và faceY đang được truyền vào hàm, 00:02:45.457 --> 00:02:49.581 và nó đang dùng các giá trị được gọi ở đây. 00:02:49.581 --> 00:02:55.311 Tôi đã không định vị chính xác Winston, vì quên rằng chữ đã được xác định vị trí 00:02:55.311 --> 00:03:01.041 căn theo phía trên bên trái, và mặt được xác định vị trí theo tâm điểm. 00:03:01.041 --> 00:03:06.383 Ta cần tiếp tục và điều chỉnh số má một chút ở đây, phải không? 00:03:06.383 --> 00:03:12.608 Tôi cần phải đặt 'x' lên rất nhiều, và di chuyển nó, được rồi ... như vậy đó là những bước đi đầu tiên 00:03:12.608 --> 00:03:18.028 Ta sẽ thực hiện và thay đổi những gì truyền vào hàm, 00:03:18.028 --> 00:03:22.518 Ta không phải thay đổi định nghĩa hàm, 00:03:22.518 --> 00:03:25.758 Nó sẽ luôn lấy bất cứ giá trị nào ta truyền vào. 00:03:25.758 --> 00:03:28.388 Cũng giống như với ellipse() và rect(). 00:03:28.388 --> 00:03:33.348 Tôi đã định vị nó, nhưng nhận thấy rằng Winston quá to. 00:03:33.348 --> 00:03:35.756 Anh ta chồng chéo và không phù hợp. 00:03:35.756 --> 00:03:39.019 Tôi đã viết code để vẽ anh ta trong một hàm, 00:03:39.019 --> 00:03:42.374 Tôi có thể thay đổi kích thước của tất cả chúng cùng một lúc 00:03:42.374 --> 00:03:45.439 bằng cách thay đổi dòng code vẽ hình elip. 00:03:45.439 --> 00:03:50.626 Nếu ta đặt cho anh ta kích thước như 190, Winston sẽ ăn kiêng còn 190. 00:03:50.626 --> 00:03:55.964 Bây giờ anh ta sẽ khỏe hơn và sau đó ta có thể tiếp tục điều chỉnh 00:03:55.964 --> 00:04:01.902 Như vậy, tôi thực sự có thể đưa anh ta vào trong đó, phải không? Ngon. 00:04:01.902 --> 00:04:08.531 Hãy xem xét lại những gì code này làm. Nó định nghĩa một hàm gọi là drawWinston() 00:04:08.531 --> 00:04:14.673 và nói rằng hàm này có hai giá trị tên là faceX và faceY, 00:04:14.673 --> 00:04:19.949 các giá trị này xuất hiện dưới dạng những biến ta có thể sử dụng ở bất kỳ đâu trong hàm, 00:04:19.949 --> 00:04:23.055 giống như ta đã từng sử dụng các biến đã khai báo ở trên cùng 00:04:23.055 --> 00:04:29.113 Và sau đó ta có thể gọi hàm này bất cứ khi nào mình muốn sau khi khai báo nó, 00:04:29.113 --> 00:04:33.711 ta có thể truyền các giá trị khác nhau, để nó sử dụng các giá trị mới đó trong mỗi lần. 00:04:33.711 --> 00:04:38.110 Bạn đã thấy những điều tuyệt vời về hàm. Ta có thể tiếp tục code 00:04:38.110 --> 00:04:42.509 và nghĩ rằng sẽ rất hữu ích khi tái sử dụng, nhưng ta cũng có thể dùng các tham số để thể hiện 00:04:42.509 --> 00:04:46.460 "Này, đây là điều gì đó ta có thể thay đổi trong code này, để tùy chỉnh." 00:04:46.460 --> 00:04:49.405 Nó giống như một công thức. Bạn viết ra những chỉ dẫn chung, 00:04:49.405 --> 00:04:52.810 và nếu bạn nhận ra rằng bạn đột nhiên cần có 4 Winstons thay vì 1, 00:04:52.810 --> 00:04:55.941 bạn không phải bắt đầu lại, chỉ cần sửa đổi các hướng dẫn ban đầu 00:04:55.941 --> 00:04:57.632 và nhân mọi thứ với 4. 00:04:57.632 --> 00:00:00.000 Bây giờ bạn có thể bắt đầu suy nghĩ về các công thức trong code của mình rồi đấy! Ngon.