1 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 đó. 2 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, 3 00:00:11,072 --> 00:00:13,210 để thể hiện anh ấy ở mỗi thời điểm trong đời. 4 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 5 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. 6 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" 7 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, 8 00:00:30,316 --> 00:00:32,648 giống như cách ta làm với ellipse() và rect(). 9 00:00:34,048 --> 00:00:40,460 Tôi muốn đặt Winston ở đây, đây và Winston ở đây, và Winston ở đây nữa, 10 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. 11 00:00:43,623 --> 00:00:48,882 Để làm điều đó, ta phải chỉ định "tham số" cho hàm, 12 00:00:48,882 --> 00:00:52,811 cả trong định nghĩa hàm - ở trên cùng ở đây - 13 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ó. 14 00:00:57,302 --> 00:01:02,210 Đối với drawWinston(), ta truyền vào faceX và faceY, 15 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. 16 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. 17 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 18 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(). 19 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, 20 00:01:32,166 --> 00:01:40,891 và sau đó có thể 200, 230 ... 10, 230 ... 200, 230. 21 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, ' 22 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. 23 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 24 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. 25 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". 26 00:02:03,603 --> 00:02:08,398 ta cần đặt tên tham số bên trong dấu ngoặc đơn. 27 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, 28 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. 29 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. 30 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. 31 00:02:28,813 --> 00:02:31,353 Nếu nhìn vào phần đầu của hàm, 32 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. 33 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. 34 00:02:38,793 --> 00:02:45,457 Bây giờ, faceX và faceY đang được truyền vào hàm, 35 00:02:45,457 --> 00:02:49,581 và nó đang dùng các giá trị được gọi ở đây. 36 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í 37 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. 38 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? 39 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 40 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, 41 00:03:18,028 --> 00:03:22,518 Ta không phải thay đổi định nghĩa hàm, 42 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. 43 00:03:25,758 --> 00:03:28,388 Cũng giống như với ellipse() và rect(). 44 00:03:28,388 --> 00:03:33,348 Tôi đã định vị nó, nhưng nhận thấy rằng Winston quá to. 45 00:03:33,348 --> 00:03:35,756 Anh ta chồng chéo và không phù hợp. 46 00:03:35,756 --> 00:03:39,019 Tôi đã viết code để vẽ anh ta trong một hàm, 47 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 48 00:03:42,374 --> 00:03:45,439 bằng cách thay đổi dòng code vẽ hình elip. 49 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. 50 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 51 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. 52 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() 53 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, 54 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, 55 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 56 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ó, 57 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. 58 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 59 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 60 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." 61 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, 62 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, 63 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 64 00:04:55,941 --> 00:04:57,632 và nhân mọi thứ với 4. 65 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.