1 00:00:01,737 --> 00:00:07,341 Trong lần nói chuyện cuối cùng, ta đã chỉ ra cách làm quả bóng nảy dịch chuyển ra khỏi cạnh bằng cách sử dụng hàm vẽ và câu lệnh if. 2 00:00:07,341 --> 00:00:08,637 Hãy xem lại. 3 00:00:08,637 --> 00:00:12,407 Đầu tiên, ta thiết lập một số biến ban đầu dành cho vị trí và tốc độ của quả bóng. 4 00:00:12,407 --> 00:00:17,240 Sau đó, trong hàm vẽ, đó là hàm đặc biệt được gọi đi gọi lại khi chương trình đang chạy, 5 00:00:17,240 --> 00:00:20,907 ta vẽ lại nền và hình elip trên khung vẽ 6 00:00:20,907 --> 00:00:27,779 và định vị hình elip đó dựa trên biến vị trí, tốc độ và cách chúng tương quan nhau. 7 00:00:27,779 --> 00:00:31,195 Bây giờ, không có mệnh đề if, quả bóng sẽ tiếp tục di chuyển mãi, 8 00:00:31,195 --> 00:00:32,862 hoặc cho đến khi ta nhấn chạy lại. 9 00:00:32,862 --> 00:00:36,364 Vậy, ta đã thêm hai mệnh đề if dưới đây 10 00:00:36,441 --> 00:00:40,605 để kiểm tra và xem bóng ở gần bên phải hay bên trái màn hình, 11 00:00:40,606 --> 00:00:45,309 và nếu vậy, ta thay đổi tốc độ thành dương hoặc âm để bóng, về cơ bản, sẽ nảy trở lại. 12 00:00:45,309 --> 00:00:50,071 Vậy, bây giờ ta chỉ có quả bóng này, nảy qua lại mãi. 13 00:00:50,071 --> 00:00:53,671 Điều đó thật tuyệt, và có rất nhiều ảnh động thực sự thú vị mà ta có thể tạo ra với nó. 14 00:00:53,671 --> 00:00:57,675 Nhưng bây giờ, tôi muốn thêm tương tác người dùng vào chương trình này. 15 00:00:57,675 --> 00:01:00,071 Xem này, ngay bây giờ nó giống như một chương trình truyền hình. 16 00:01:00,071 --> 00:01:04,944 nếu bạn đưa nó cho một người bạn và người đó không biết lập trình thì sẽ không thể thực sự tương tác với nó. 17 00:01:04,944 --> 00:01:07,606 Tất cả những gì họ có thể làm là xem mà thôi, thật tuyệt, 18 00:01:07,606 --> 00:01:10,340 nhưng sẽ tuyệt hơn rất nhiều nếu họ thực sự có thể làm gì đó. 19 00:01:10,340 --> 00:01:13,470 Vậy, hãy cung cấp cho người dùng một số cách để điều khiển chương trình nhé. 20 00:01:13,470 --> 00:01:20,156 Hãy nhớ trước đó ta đã biết về hai biến toàn cục đặc biệt gọi là mouseX và mouseY. 21 00:01:20,156 --> 00:01:25,972 Các biến đó trả về các giá trị cho biết về vị trí hiện tại của con trỏ 22 00:01:25,972 --> 00:01:28,779 và chúng là cách tuyệt vời để làm cho chương trình mang tính tương tác nhiều hơn. 23 00:01:28,779 --> 00:01:31,239 Vậy, hãy xem. Làm thế nào ta có thể sử dụng chúng? 24 00:01:31,239 --> 00:01:34,029 Chà, ta nên dùng bên trong hàm draw, ở đâu đó. 25 00:01:34,029 --> 00:01:39,503 Bởi vì đó là mã duy nhất được gọi đi gọi lại khi chương trình chạy. 26 00:01:39,503 --> 00:01:44,551 Tất cả mọi lệnh bên ngoài draw chỉ được gọi một lần, khi chương trình bắt đầu chạy lần đầu. 27 00:01:44,551 --> 00:01:48,136 Vậy, việc sử dụng mouseX và mouseY ở đó là vô nghĩa. 28 00:01:48,136 --> 00:01:51,243 Người dùng chưa có cơ hội tương tác với nó. 29 00:01:51,243 --> 00:01:57,280 Trong draw, ta đang vẽ quả bóng 200 pixel ở dưới màn hình. 30 00:01:57,280 --> 00:02:01,242 Sẽ ra sao nếu ta thay thế nó bằng mouseY? 31 00:02:01,242 --> 00:02:02,739 Bởi vì đó là tọa độ y, phải không? 32 00:02:02,739 --> 00:02:08,530 Vậy, theo cách này, nó sẽ chỉ thêm tọa độ y tùy theo vị trí y của người dùng. Đúng không nhỉ? 33 00:02:08,530 --> 00:02:14,362 Vậy, hãy kiểm tra. Chỉ cần di chuyển con trỏ lên và xuống, tôi đã có thể thay đổi đường đi của bóng theo chiều dọc. 34 00:02:14,362 --> 00:02:18,196 Điều đó thật tuyệt. Nhưng tôi cũng muốn sử dụng cả mouseX nữa. 35 00:02:18,196 --> 00:02:19,863 Vậy, ta nên sử dụng nó như thế nào? 36 00:02:19,863 --> 00:02:22,445 Chà, tại sao không tạo ra một quả bóng khác 37 00:02:22,445 --> 00:02:25,945 và cho nó đi theo hướng ngược lại: lên và xuống. 38 00:02:25,945 --> 00:02:30,030 Và ở đó ta sẽ cho người dùng điều khiển vị trí x của nó. 39 00:02:30,030 --> 00:02:32,612 Vậy, ta cần làm gần như ngược lại. 40 00:02:32,612 --> 00:02:40,637 Ta sẽ gõ ellipse mouseX vị trí 50 50. Ổn chứ? 41 00:02:40,637 --> 00:02:46,906 Hãy kiểm tra! Giờ, tôi đã có hai quả bóng để điều khiển và đi theo hướng vuông góc. 42 00:02:46,906 --> 00:02:50,075 Nhưng, tôi vẫn chưa vui. 43 00:02:50,075 --> 00:02:53,445 Tôi muốn cho người dùng quyền kiểm soát nhiều hơn. 44 00:02:53,445 --> 00:02:56,944 Tôi muốn cho người dùng sức mạnh để tạo ra quả bóng thứ hai. 45 00:02:56,944 --> 00:03:01,407 Để thực sự cho nó tồn tại, chỉ bằng cách nhấn con trỏ. 46 00:03:01,407 --> 00:03:07,340 Chà, sau đó tôi cần tìm ra cách để biết người dùng đang nhấn con trỏ. 47 00:03:07,340 --> 00:03:12,945 Rất may, ta có một biến boolean rất đặc biệt cho điều đó. 48 00:03:12,945 --> 00:03:19,362 Nó được gọi là mouseIsPression và ta có thể sử dụng nó trong câu lệnh if. 49 00:03:19,362 --> 00:03:22,339 Vậy, hãy xem. Đây là quả bóng thứ hai . 50 00:03:22,339 --> 00:03:31,945 Vậy, ta có thể nói if mouseIsPress, và sau đó ta sẽ di chuyển hình elip đến đó. 51 00:03:31,945 --> 00:03:40,863 Vậy, những gì nó đang làm ở đây, là nói với chương trình rằng ta chỉ muốn vẽ hình elip nếu điều kiện là đúng 52 00:03:40,863 --> 00:03:46,030 mouseIsPression sẽ chỉ đúng khi người dùng nhấn con trỏ. 53 00:03:46,030 --> 00:03:48,195 Vậy, hãy thử xem. 54 00:03:48,195 --> 00:03:50,338 Ta da! 55 00:03:50,338 --> 00:03:53,362 Vậy, bây giờ ta có thể khiến quả bóng xuất hiện bất cứ khi nào nhấn chuột. 56 00:03:53,362 --> 00:03:58,407 Vậy, nó đi vào từ vũ trụ song song này. Vào trong! Vào trong! Vào trong! 57 00:03:58,407 --> 00:04:00,029 Thật tuyệt vời! 58 00:04:00,029 --> 00:04:04,740 Vậy, điều thú vị về biến mouseIsPression 59 00:04:04,740 --> 00:04:08,805 là nó thay đổi dựa trên những gì người dùng làm, không dựa trên những gì chương trình làm. 60 00:04:08,805 --> 00:04:13,195 và vì hàm draw được gọi lặp đi lặp lại, 61 00:04:13,195 --> 00:04:16,171 kết quả của chương trình sẽ thay đổi theo thời gian 62 00:04:16,171 --> 00:04:18,740 chỉ với một chút tác động của người dùng. 63 00:04:18,740 --> 00:04:22,029 Với sức mạnh kết hợp của câu lệnh if và mouseIsPress, 64 00:04:22,029 --> 00:04:26,241 bạn có mọi thứ cần thiết để tạo ra những điều tuyệt vời như nút bấm (button) và chương trình vẽ. 65 00:04:26,241 --> 00:00:00,000 Woo hoo!