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